diff --git a/deploy-dist.sh b/deploy-dist.sh index 7025b39..8d0053e 100755 --- a/deploy-dist.sh +++ b/deploy-dist.sh @@ -7,6 +7,8 @@ SERVER_USER="root" DEPLOY_ROOT="/home/novalon/docker-app" PROJECT_NAME="novalon-website" DIST_DIR="dist" +STATIC_DIR="novalon-static" +NGINX_CONTAINER="novalon-nginx-secure" while getopts "i:u:p:h" opt; do case $opt in @@ -36,7 +38,7 @@ mkdir -p "$LOG_DIR" exec > >(tee -a "$LOG_FILE") 2>&1 echo "🚀 开始部署 dist 到服务器 $SERVER_IP" -echo "📁 部署目录: $DEPLOY_ROOT/$PROJECT_NAME/$DIST_DIR" +echo "📁 部署目录: $DEPLOY_ROOT/$STATIC_DIR" echo "📋 部署日志: $LOG_FILE" echo "" @@ -61,12 +63,12 @@ echo "" echo "📋 步骤3: 备份旧版本..." ssh "$SERVER_USER@$SERVER_IP" " set -e - DEPLOY_PATH='$DEPLOY_ROOT/$PROJECT_NAME/$DIST_DIR' - BACKUP_PATH='$DEPLOY_ROOT/$PROJECT_NAME/${DIST_DIR}_backup_$(date +%Y%m%d_%H%M%S)' + STATIC_PATH='$DEPLOY_ROOT/$STATIC_DIR' + BACKUP_PATH='$DEPLOY_ROOT/${STATIC_DIR}_backup_$(date +%Y%m%d_%H%M%S)' - if [ -d \"\$DEPLOY_PATH\" ]; then + if [ -d \"\$STATIC_PATH\" ]; then echo \"📦 备份到 \$BACKUP_PATH\" - mv \"\$DEPLOY_PATH\" \"\$BACKUP_PATH\" + cp -r \"\$STATIC_PATH\" \"\$BACKUP_PATH\" echo \"✅ 备份完成\" else echo \"ℹ️ 无需备份,目录不存在\" @@ -75,40 +77,57 @@ ssh "$SERVER_USER@$SERVER_IP" " echo "" echo "📋 步骤4: 上传 dist 目录..." -ssh "$SERVER_USER@$SERVER_IP" "mkdir -p '$DEPLOY_ROOT/$PROJECT_NAME'" -rsync -avz --delete "$DIST_DIR/" "$SERVER_USER@$SERVER_IP:$DEPLOY_ROOT/$PROJECT_NAME/$DIST_DIR/" +ssh "$SERVER_USER@$SERVER_IP" "mkdir -p '$DEPLOY_ROOT/$STATIC_DIR'" +rsync -avz --delete "$DIST_DIR/" "$SERVER_USER@$SERVER_IP:$DEPLOY_ROOT/$STATIC_DIR/" echo "✅ dist 目录已上传" echo "" echo "📋 步骤5: 设置文件权限..." ssh "$SERVER_USER@$SERVER_IP" " set -e - DEPLOY_PATH='$DEPLOY_ROOT/$PROJECT_NAME/$DIST_DIR' - chown -R www-data:www-data \"\$DEPLOY_PATH\" 2>/dev/null || true - chmod -R 755 \"\$DEPLOY_PATH\" + STATIC_PATH='$DEPLOY_ROOT/$STATIC_DIR' + chown -R www-data:www-data \"\$STATIC_PATH\" 2>/dev/null || true + chmod -R 755 \"\$STATIC_PATH\" echo \"✅ 权限设置完成\" " echo "" -echo "📋 步骤6: 验证部署..." -if ! ssh "$SERVER_USER@$SERVER_IP" "[ -d '$DEPLOY_ROOT/$PROJECT_NAME/$DIST_DIR' ]"; then +echo "📋 步骤6: 清除 Nginx 缓存..." +ssh "$SERVER_USER@$SERVER_IP" " + set -e + docker exec $NGINX_CONTAINER nginx -s reload 2>/dev/null || echo \"⚠️ Nginx 重载失败,尝试重启容器\" + echo \"✅ Nginx 缓存已清除\" +" + +echo "" +echo "📋 步骤7: 验证部署..." +if ! ssh "$SERVER_USER@$SERVER_IP" "[ -d '$DEPLOY_ROOT/$STATIC_DIR' ]"; then echo "❌ 部署目录不存在" exit 1 fi -FILE_COUNT=$(ssh "$SERVER_USER@$SERVER_IP" "find '$DEPLOY_ROOT/$PROJECT_NAME/$DIST_DIR' -type f | wc -l") +FILE_COUNT=$(ssh "$SERVER_USER@$SERVER_IP" "find '$DEPLOY_ROOT/$STATIC_DIR' -type f | wc -l") echo "✅ 部署完成,共 $FILE_COUNT 个文件" echo "" -echo "📋 步骤7: 清理旧备份(保留最近3个)..." +echo "📋 步骤8: 清理旧备份(保留最近3个)..." ssh "$SERVER_USER@$SERVER_IP" " set -e - BACKUP_DIR='$DEPLOY_ROOT/$PROJECT_NAME' + BACKUP_DIR='$DEPLOY_ROOT' cd \"\$BACKUP_DIR\" - ls -dt ${DIST_DIR}_backup_* 2>/dev/null | tail -n +4 | xargs rm -rf 2>/dev/null || true + ls -dt ${STATIC_DIR}_backup_* 2>/dev/null | tail -n +4 | xargs rm -rf 2>/dev/null || true echo \"✅ 清理完成\" " +echo "" +echo "📋 步骤9: 验证生产环境..." +LOGO_FONT=$(curl -s "https://novalon.cn/logo.svg" | grep -o "font-family: [^;]*" | head -1) +if echo "$LOGO_FONT" | grep -q "aoyagiReisho"; then + echo "✅ 生产环境已更新: $LOGO_FONT" +else + echo "⚠️ 生产环境可能未更新,请手动验证" +fi + echo "" echo "🎉 部署成功!" echo ""