Ubuntu下快速部署多个静态网站(含HTTPS配置)

原文地址: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"

# 配置Nginx(直接覆盖已存在的配置)
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
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. 为每个域名申请证书:
1
2
certbot --nginx -d example1.com -d www.example1.com
certbot --nginx -d example2.com -d www.example2.com

第一个提示填写自己的邮箱,第二个提示选择选项2,强制HTTPS访问。

  1. 验证自动续期:
1
certbot renew --dry-run

▶ 可以在关于或者这篇文章找到我的联系方式。
▶ 本网站的部分内容可能来源于网络,仅供大家学习与参考,如有侵权请联系我核实删除。
我是小章,目前全职提供电脑维修和IT咨询服务。如果您有任何电脑相关的问题,都可以问我噢。


Ubuntu下快速部署多个静态网站(含HTTPS配置)
https://itxiaozhang.com/ubuntu-multiple-static-sites-deployment-guide/
作者
小章
发布于
2024年11月29日
许可协议