fix: 修复部署脚本,部署到正确的静态文件目录

- 部署到 /home/novalon/docker-app/novalon-static/
- 添加 Nginx 缓存清除步骤
- 添加生产环境验证步骤
This commit is contained in:
张翔
2026-04-22 17:20:46 +08:00
parent cc1c42a648
commit 92ab2a83d5
+35 -16
View File
@@ -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 ""