#!/usr/bin/env bash # 知命阁(zhimingge)Ubuntu 服务器更新脚本 # 用法:cd /opt/zhimingge && bash scripts/deploy.sh set -euo pipefail APP_DIR="/opt/zhimingge" APP_NAME="zhimingge" APP_PORT="${PORT:-3130}" cd "$APP_DIR" echo "==> 拉取最新代码..." git pull origin main echo "==> 安装依赖..." npm ci || npm install echo "==> 停止 PM2(避免无构建产物时反复重启)..." pm2 stop "$APP_NAME" 2>/dev/null || true echo "==> 生产构建..." npm run build if [[ ! -f .next/BUILD_ID ]]; then echo "ERROR: 构建失败,未找到 .next/BUILD_ID,请先解决 npm run build 报错后再启动。" exit 1 fi echo "==> 确保日志目录存在..." mkdir -p logs echo "==> 启动 PM2..." if pm2 describe "$APP_NAME" > /dev/null 2>&1; then pm2 restart "$APP_NAME" else pm2 start ecosystem.config.cjs fi pm2 save echo "==> 部署完成,验证 http://127.0.0.1:${APP_PORT} ..." pm2 status "$APP_NAME" curl -s -o /dev/null -w "HTTP %{http_code}\n" "http://127.0.0.1:${APP_PORT}" || true