#!/bin/bash #### 从临时服务器发布站点到正式环境 #### Author: chenpeiqing #### Date: 2025-01-07 SITE_CODE=$1 DOMAIN_NAME=$2 DATABASE_NAME=$3 # 最大重试次数 MAX_RETRIES=3 # 初始重试次数 RETRY_COUNT=0 TEMP_DOMAIN='v3-site.adwebcloud.com' RDS_HOST='127.0.0.1' RDS_ADMIN='root' RDS_PWD='Admin@123.com' TEMP_USER_NAME='ubuntu' TEMP_IP='35.87.155.71' TEMP_PEM='/opt/adweb3/pem/adweb3.pem' first_time=$(date +'%s') #打印入参 echo "SITE_CODE":$SITE_CODE echo "DOMAIN_NAME":$DOMAIN_NAME echo "DATABASE_NAME":$DATABASE_NAME #临时服务器打包项目代码和数据库文件 start_time=$(date +'%s') echo "打包站点代码和数据库文件开始:" ssh -i $TEMP_PEM -p 22 -o IdentitiesOnly=yes $TEMP_USER_NAME@$TEMP_IP << EOF sudo -i sh /opt/adweb3/shell/bak-wpsite.sh $SITE_CODE exit EOF end_time=$(date +'%s') echo "打包站点代码和数据库文件完成,花费:"$((end_time - start_time))"s" #创建空数据库以及指定用户 start_time=$(date +'%s') echo "创建生产目录和数据库开始:" mysql -h $RDS_HOST -u$RDS_ADMIN -p$RDS_PWD<< EOF DROP DATABASE IF EXISTS $DATABASE_NAME; CREATE DATABASE $DATABASE_NAME CHARACTER SET=utf8mb4 COLLATE=utf8mb4_unicode_ci; DROP USER IF EXISTS $SITE_CODE; CREATE USER '$SITE_CODE'@'%' IDENTIFIED BY 'Admin@123.com'; GRANT ALL ON $DATABASE_NAME.* TO '$SITE_CODE'@'%'; flush privileges; exit EOF #创建站点文件夹 if [ ! -d "/usr/local/wwwroot/$DOMAIN_NAME" ]; then mkdir -p /usr/local/wwwroot/$DOMAIN_NAME fi end_time=$(date +'%s') echo "创建生产目录和数据库完成,花费:"$((end_time - start_time))"s" ##下载SQL文件 start_time=$(date +'%s') echo "下载数据库文件并导入数据库开始:" wget -P /usr/local/wwwroot/$DOMAIN_NAME/ http://download-template-v3.adwebcloud.com/$SITE_CODE.sql mysql -h $RDS_HOST -u$SITE_CODE -p'Admin@123.com' $DATABASE_NAME "fullchain" n ".pem"}' < /root/.acme.sh/$DOMAIN_NAME/fullchain.cer Certificate_body=$(cat fullchain.pem) echo '[start cert.pem]' echo $Certificate_body echo '[end cert.pem]' Certificate_chain=$(cat fullchain1.pem) Certificate_chain1=$(cat fullchain2.pem) echo '[start chain.pem]' echo ${Certificate_chain}" "${Certificate_chain1} echo '[end chain.pem]' Certificate_private_key=$(cat /root/.acme.sh/$DOMAIN_NAME/*key) echo '[start privkey.pem]' echo $Certificate_private_key echo '[end privkey.pem]' rm -rf *.pem elif [ -d "/root/.acme.sh/${DOMAIN_NAME}_ecc" ]; then fullchain=$(cat /root/.acme.sh/${DOMAIN_NAME}_ecc/fullchain.cer) awk 'split_after==1{n++;split_after=0} /-----END CERTIFICATE-----/ {split_after=1} {print > "fullchain" n ".pem"}' < /root/.acme.sh/${DOMAIN_NAME}_ecc/fullchain.cer Certificate_body=$(cat fullchain.pem) echo '[start cert.pem]' echo $Certificate_body echo '[end cert.pem]' Certificate_chain=$(cat fullchain1.pem) Certificate_chain1=$(cat fullchain2.pem) echo '[start chain.pem]' echo ${Certificate_chain}" "${Certificate_chain1} echo '[end chain.pem]' Certificate_private_key=$(cat /root/.acme.sh/${DOMAIN_NAME}_ecc/*key) echo '[start privkey.pem]' echo $Certificate_private_key echo '[end privkey.pem]' rm -rf *.pem else echo "SSL Certificate not found" fi end_time=$(date +'%s') echo "生成$DOMAIN_NAME的ssl证书开始花费:"$((end_time - start_time))"s" #开启nginx证书 ssl 配置 #重启nginx sed -i "s:####::g" /usr/local/openresty/nginx/vhost/$DOMAIN_NAME.conf echo "开始重启nginx配置" /usr/local/openresty/nginx/sbin/nginx -s reload echo "nginx配置重启完成"echo "开始重启nginx配置" #临时服务器清空之前的临时资源 ssh -i $TEMP_PEM -p 22 -o IdentitiesOnly=yes $TEMP_USER_NAME@$TEMP_IP << EOF sudo -i sh /opt/adweb3/shell/remove-wpsite.sh $SITE_CODE exit EOF echo "[Creation completed]"