創建腳本文件?:
vi setup_nginx_https.sh
腳本內容:
#!/bin/bash# =============================
# 一鍵安裝 Nginx + Certbot + HTTPS (CentOS 7)
# 功能:自動安裝 Nginx、Certbot,配置 HTTPS,自動續期
# 使用方法:./setup_nginx_https.sh yourdomain.com [www.yourdomain.com]
# =============================set -e# 檢查是否為 root 用戶
if [ "$EUID" -ne 0 ]; thenecho "請使用 root 用戶或通過 sudo 運行此腳本"exit 1
fi# 檢查參數
if [ -z "$1" ]; thenecho "使用方法: $0 yourdomain.com [www.yourdomain.com]"echo "示例: $0 example.com www.example.com"exit 1
fiDOMAIN=$1
WWW_DOMAIN=""
if [ -n "$2" ]; thenWWW_DOMAIN=$2
fiecho "🔧 開始自動部署 Nginx + HTTPS (Let's Encrypt SSL) ..."# -------------------------------
# 1. 更新系統
echo "🔄 更新系統軟件包..."
yum update -y# -------------------------------
# 2. 安裝 EPEL(推薦)
echo "📦 安裝 EPEL 倉庫..."
yum install -y epel-release# -------------------------------
# 3. 安裝 Snapd & Certbot(官方推薦方式)
echo "🔐 安裝 Snapd 和 Certbot..."yum install -y snapd
systemctl enable --now snapd.socket
ln -s /var/lib/snapd/snap /snap
export PATH=$PATH:/snap/bin# 安裝 certbot
snap install --classic certbot
ln -s /snap/bin/certbot /usr/bin/certbot# 安裝 Nginx 插件
snap set certbot trust-plugin-with-root=ok
snap install certbot-nginx# -------------------------------
# 4. 安裝 Nginx(官方源)
echo "🌐 安裝 Nginx(官方源)..."cat > /etc/yum.repos.d/nginx.repo <<EOF
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/\$releasever/\$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
EOFyum install -y nginx# -------------------------------
# 5. 配置防火墻
echo "🔥 配置防火墻放行 HTTP (80) 和 HTTPS (443)..."
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reload# -------------------------------
# 6. 創建默認 Nginx Server 配置(HTTP 80,用于驗證)
NGINX_CONF_DIR="/etc/nginx/conf.d"
DOMAIN_CONF="$NGINX_CONF_DIR/${DOMAIN}.conf"echo "📄 創建 Nginx 配置文件:$DOMAIN_CONF"cat > $DOMAIN_CONF <<EOF
server {listen 80;server_name $DOMAIN $WWW_DOMAIN;# 用于 Certbot 驗證域名所有權location /.well-known/acme-challenge/ {root /var/www/certbot;}location / {return 301 https://\$host\$request_uri;}
}# 可選:如果你想先手動配置 HTTPS,可取消注釋以下部分
# server {
# listen 443 ssl;
# server_name $DOMAIN $WWW_DOMAIN;
#
# ssl_certificate /etc/letsencrypt/live/$DOMAIN/fullchain.pem;
# ssl_certificate_key /etc/letsencrypt/live/$DOMAIN/privkey.pem;
#
# root /usr/share/nginx/html;
# index index.html;
#
# location / {
# try_files \$uri \$uri/ =404;
# }
# }
EOF# 創建 .well-known 目錄
mkdir -p /var/www/certbot
chmod -R 755 /var/www/certbot# -------------------------------
# 7. 啟動 Nginx
echo "🚀 啟動 Nginx 服務..."
systemctl start nginx
systemctl enable nginx# -------------------------------
# 8. 運行 Certbot 自動獲取 SSL 證書并配置 HTTPS
echo "🛡? 正在使用 Certbot 為 $DOMAIN 申請 SSL 證書并配置 HTTPS..."if [ -z "$WWW_DOMAIN" ]; thencertbot --nginx -d $DOMAIN
elsecertbot --nginx -d $DOMAIN -d $WWW_DOMAIN
fi# -------------------------------
# 9. 測試自動續期
echo "🔄 測試證書自動續期功能..."
certbot renew --dry-run# -------------------------------
# 10. 完成
echo ""
echo "🎉 恭喜!Nginx + HTTPS 配置完成!"
echo ""
echo "🔒 HTTPS 已自動為域名配置:https://$DOMAIN"
if [ -n "$WWW_DOMAIN" ]; thenecho "🔒 以及:https://$WWW_DOMAIN"
fi
echo ""
echo "📂 Nginx 配置文件:$DOMAIN_CONF"
echo "🔒 SSL 證書位置:/etc/letsencrypt/live/$DOMAIN/"
echo ""
echo "🔄 證書將自動續期,你可以通過以下命令測試續期:"
echo " sudo certbot renew --dry-run"
echo ""
echo "🌐 請在瀏覽器訪問:https://$DOMAIN"
echo ""
賦予執行權限?:
chmod +x setup_nginx_https.sh
??運行腳本(帶你的域名參數):
sudo ./setup_nginx_https.sh xzhshyh123.icu