6403489954
- 删除数据库相关代码 (src/db/) - 删除 API 路由 (src/app/api/) - 删除认证相关代码 (src/lib/auth/, src/providers/) - 删除监控和安全中间件 (src/lib/security/, src/lib/monitoring/) - 删除 hooks (use-news, use-products, use-services) - 更新组件为静态数据源 - 添加 nginx 静态配置和部署脚本 - 添加 static-link 组件
85 lines
2.3 KiB
Bash
Executable File
85 lines
2.3 KiB
Bash
Executable File
#!/bin/bash
|
||
# Novalon 静态站点部署脚本
|
||
# 用法: bash scripts/deploy-static.sh [环境]
|
||
# 环境参数: production (默认)
|
||
|
||
set -euo pipefail
|
||
|
||
ENV="${1:-production}"
|
||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||
PROJECT_DIR="$(dirname "$SCRIPT_DIR")"
|
||
BUILD_DIR="$PROJECT_DIR/dist"
|
||
DEPLOY_DIR="/var/www/novalon"
|
||
BACKUP_DIR="/var/www/novalon-backup"
|
||
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
|
||
|
||
echo "========================================="
|
||
echo " Novalon 静态站点部署"
|
||
echo " 环境: $ENV"
|
||
echo " 时间: $(date '+%Y-%m-%d %H:%M:%S')"
|
||
echo "========================================="
|
||
|
||
# 步骤 1: 构建
|
||
echo ""
|
||
echo "[1/5] 构建静态站点..."
|
||
cd "$PROJECT_DIR"
|
||
npm run build
|
||
|
||
if [ ! -d "$BUILD_DIR" ]; then
|
||
echo "❌ 构建失败:dist 目录不存在"
|
||
exit 1
|
||
fi
|
||
|
||
echo "✅ 构建完成,产物大小:$(du -sh "$BUILD_DIR" | cut -f1)"
|
||
|
||
# 步骤 2: 备份当前版本
|
||
echo ""
|
||
echo "[2/5] 备份当前版本..."
|
||
if [ -d "$DEPLOY_DIR" ]; then
|
||
mkdir -p "$BACKUP_DIR"
|
||
cp -r "$DEPLOY_DIR" "$BACKUP_DIR/novalon-backup-$TIMESTAMP"
|
||
# 只保留最近 3 个备份
|
||
ls -t "$BACKUP_DIR"/ | tail -n +4 | xargs -I {} rm -rf "$BACKUP_DIR/{}"
|
||
echo "✅ 备份完成: $BACKUP_DIR/novalon-backup-$TIMESTAMP"
|
||
else
|
||
echo "⚠️ 首次部署,无需备份"
|
||
mkdir -p "$DEPLOY_DIR"
|
||
fi
|
||
|
||
# 步骤 3: 部署新版本
|
||
echo ""
|
||
echo "[3/5] 部署新版本..."
|
||
# 清空目标目录(保留 .well-known)
|
||
if [ -d "$DEPLOY_DIR/.well-known" ]; then
|
||
mv "$DEPLOY_DIR/.well-known" /tmp/well-known-backup
|
||
fi
|
||
rm -rf "$DEPLOY_DIR"/*
|
||
cp -r "$BUILD_DIR"/* "$DEPLOY_DIR/"
|
||
if [ -d /tmp/well-known-backup ]; then
|
||
mv /tmp/well-known-backup "$DEPLOY_DIR/.well-known"
|
||
fi
|
||
echo "✅ 文件部署完成"
|
||
|
||
# 步骤 4: 设置权限
|
||
echo ""
|
||
echo "[4/5] 设置文件权限..."
|
||
chmod -R 755 "$DEPLOY_DIR"
|
||
echo "✅ 权限设置完成"
|
||
|
||
# 步骤 5: 重载 Nginx
|
||
echo ""
|
||
echo "[5/5] 重载 Nginx..."
|
||
if nginx -t 2>/dev/null; then
|
||
nginx -s reload
|
||
echo "✅ Nginx 重载成功"
|
||
else
|
||
echo "⚠️ Nginx 配置检查失败,跳过重载(请手动检查)"
|
||
fi
|
||
|
||
echo ""
|
||
echo "========================================="
|
||
echo " ✅ 部署完成!"
|
||
echo " 站点地址: https://www.novalon.cn"
|
||
echo " 部署目录: $DEPLOY_DIR"
|
||
echo "========================================="
|