#!/bin/bash # 修复部署脚本 set -e SERVER="156.225.27.52" PORT="5204" USER="root" PASSWORD="${DEPLOY_SSH_PASSWORD:?set DEPLOY_SSH_PASSWORD}" ssh_cmd() { sshpass -p "$PASSWORD" ssh -o StrictHostKeyChecking=no -o ConnectTimeout=30 -p $PORT $USER@$SERVER "$1" } scp_cmd() { sshpass -p "$PASSWORD" scp -o StrictHostKeyChecking=no -o ConnectTimeout=30 -P $PORT "$1" $USER@$SERVER:"$2" } echo "==========================================" echo "修复部署问题..." echo "==========================================" echo "" echo "步骤 1: 上传修复后的文件..." scp_cmd "app/(admin)/api/users/route.ts" "/var/www/ai-chatbot/app/(admin)/api/users/route.ts" echo "" echo "步骤 2: 停止应用..." ssh_cmd "pm2 delete ai-chatbot 2>/dev/null || true" echo "" echo "步骤 3: 检查 .next 目录..." ssh_cmd "cd /var/www/ai-chatbot && ls -la .next 2>/dev/null | head -5 || echo '.next 目录不存在,需要重新构建'" echo "" echo "步骤 4: 重新构建项目..." ssh_cmd " cd /var/www/ai-chatbot export NVM_DIR=\"\$HOME/.nvm\" [ -s \"\$NVM_DIR/nvm.sh\" ] && . \"\$NVM_DIR/nvm.sh\" echo '运行数据库迁移...' pnpm db:migrate 2>&1 | grep -E '(Migrations|Error|✅|❌)' || echo '迁移完成' echo '开始构建...' pnpm build 2>&1 | tail -80 " echo "" echo "步骤 5: 检查构建结果..." ssh_cmd "cd /var/www/ai-chatbot && ls -la .next 2>/dev/null | head -5 && echo '构建成功' || echo '构建失败'" echo "" echo "步骤 6: 启动应用..." ssh_cmd " cd /var/www/ai-chatbot export NVM_DIR=\"\$HOME/.nvm\" [ -s \"\$NVM_DIR/nvm.sh\" ] && . \"\$NVM_DIR/nvm.sh\" pm2 start ecosystem.config.js pm2 save sleep 3 " echo "" echo "步骤 7: 检查应用状态..." ssh_cmd " pm2 status ai-chatbot echo '' echo '检查端口监听...' ss -tlnp | grep 3001 || echo '端口3001未监听' echo '' echo '测试本地连接...' curl -s http://localhost:3001 | head -5 || echo '应用未响应' " echo "" echo "步骤 8: 检查FRPC状态..." ssh_cmd " systemctl status frpc.service --no-pager -l | tail -10 echo '' journalctl -u frpc.service -n 10 --no-pager | grep -E 'ai-chatbot|success|error' | tail -5 " echo "" echo "==========================================" echo "修复完成!" echo "==========================================" echo "" echo "访问地址: http://$SERVER:5245" echo ""