原文地址:https://itxiaozhang.com/ubuntu-multiple-static-sites-deployment-guide/
环境
- 一台运行 Ubuntu 的服务器(本教程使用 Ubuntu 20.04)
- 已经购买的域名(支持配置多个域名)
一句话
教程分为两个主要步骤:第一步执行setup_static_sites.sh脚本,实现nginx安装和多站点的基础HTTP配置;第二步执行certbot相关命令,完成SSL证书申请和HTTPS的配置,
1. 准备部署脚本
创建文件 setup_static_sites.sh
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81
| #!/bin/bash
DOMAINS=( "fixpc.cc" "itxiaozhang.com" ) WEB_ROOT="/var/www/html" LOG_FILE="deployment_$(date +%Y%m%d_%H%M%S).log"
log() { echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" | tee -a "$LOG_FILE" }
error() { log "错误: $1" exit 1 }
configure_domain() { local DOMAIN=$1 log "配置域名: $DOMAIN" local SITE_ROOT="$WEB_ROOT/$DOMAIN"
[ ! -d "$SITE_ROOT" ] && mkdir -p "$SITE_ROOT" chown -R www-data:www-data "$SITE_ROOT" chmod -R 755 "$SITE_ROOT"
cat > "/etc/nginx/sites-available/$DOMAIN" << EOF server { listen 80; listen [::]:80; server_name $DOMAIN www.$DOMAIN;
root $SITE_ROOT; index index.html;
location / { try_files \$uri \$uri/ =404; }
access_log /var/log/nginx/$DOMAIN.access.log; error_log /var/log/nginx/$DOMAIN.error.log; } EOF
ln -sf "/etc/nginx/sites-available/$DOMAIN" "/etc/nginx/sites-enabled/" }
main() { [ "$(id -u)" != "0" ] && error "需要root权限" apt update apt install -y nginx python3-certbot-nginx
rm -f "/etc/nginx/sites-enabled/default"
for domain in "${DOMAINS[@]}"; do configure_domain "$domain" done
nginx -t && systemctl restart nginx
log "配置完成!后续步骤:" for domain in "${DOMAINS[@]}"; do log "1. 上传网站文件到: $WEB_ROOT/$domain/" done }
main
|
2. 配置脚本权限并执行
1 2
| chmod +x setup_static_sites.sh sudo ./setup_static_sites.sh
|
3. 配置域名解析
在域名管理面板中添加以下记录:
- 记录类型:A记录
- 主机记录:@ 和 www
- 记录值:你的服务器IP
- TTL:600(或默认值)
如果使用Cloudflare,请暂时关闭代理(将云朵图标设置为灰色)
4. 上传网站文件
将网站文件上传到对应目录。我的文件托管在GitHub,每次有新的提交后,GitHub会同步文件到VPS。
GitHub Actions 自动部署:配置 GitHub 仓库指定文件夹到 Ubuntu 服务器
5. 配置HTTPS
- 为每个域名申请证书:
1 2
| certbot --nginx -d example1.com -d www.example1.com certbot --nginx -d example2.com -d www.example2.com
|
第一个提示填写自己的邮箱,第二个提示选择选项2,强制HTTPS访问。
- 验证自动续期:
▶ 可以在关于或者这篇文章找到我的联系方式。
▶ 本网站的部分内容可能来源于网络,仅供大家学习与参考,如有侵权请联系我核实删除。
▶ 我是小章,目前全职提供电脑维修和IT咨询服务。如果您有任何电脑相关的问题,都可以问我噢。