lovart3/final-deploy.sh
2025-12-17 20:15:18 +08:00

130 lines
3.1 KiB
Bash
Executable File

#!/bin/bash
# 最终部署脚本
set -e
SERVER="156.225.27.52"
PORT="5204"
USER="root"
PASSWORD="Jsjj@8888"
ssh_cmd() {
sshpass -p "$PASSWORD" ssh -o StrictHostKeyChecking=no -o ConnectTimeout=30 -p $PORT $USER@$SERVER "$1"
}
echo "=========================================="
echo "开始最终部署..."
echo "=========================================="
echo ""
echo "步骤 1: 上传更新的 package.json..."
sshpass -p "$PASSWORD" scp -o StrictHostKeyChecking=no -o ConnectTimeout=30 -P $PORT package.json root@$SERVER:/var/www/ai-chatbot/
echo ""
echo "步骤 2: 安装依赖..."
ssh_cmd "
cd /var/www/ai-chatbot
export NVM_DIR=\"\$HOME/.nvm\"
[ -s \"\$NVM_DIR/nvm.sh\" ] && . \"\$NVM_DIR/nvm.sh\"
echo '安装依赖包...'
pnpm install 2>&1 | tail -20
"
echo ""
echo "步骤 3: 运行数据库迁移..."
ssh_cmd "
cd /var/www/ai-chatbot
export NVM_DIR=\"\$HOME/.nvm\"
[ -s \"\$NVM_DIR/nvm.sh\" ] && . \"\$NVM_DIR/nvm.sh\"
pnpm db:migrate 2>&1 | grep -E '(Migrations|Error|✅|❌)' || echo '迁移完成'
"
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 build 2>&1 | tail -50
"
echo ""
echo "步骤 5: 启动/重启应用..."
ssh_cmd "
cd /var/www/ai-chatbot
export NVM_DIR=\"\$HOME/.nvm\"
[ -s \"\$NVM_DIR/nvm.sh\" ] && . \"\$NVM_DIR/nvm.sh\"
# 停止旧进程
pm2 delete ai-chatbot 2>/dev/null || true
# 启动应用
pm2 start ecosystem.config.js
pm2 save
echo '应用已启动'
"
echo ""
echo "步骤 6: 配置 Nginx..."
ssh_cmd "
cat > /etc/nginx/sites-available/ai-chatbot << 'NGINX'
server {
listen 80;
server_name $SERVER;
location / {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade \$http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host \$host;
proxy_set_header X-Real-IP \$remote_addr;
proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto \$scheme;
proxy_cache_bypass \$http_upgrade;
proxy_read_timeout 300s;
proxy_connect_timeout 75s;
}
}
NGINX
ln -sf /etc/nginx/sites-available/ai-chatbot /etc/nginx/sites-enabled/
rm -f /etc/nginx/sites-enabled/default
nginx -t && systemctl restart nginx
echo 'Nginx 配置完成'
"
echo ""
echo "步骤 7: 检查部署状态..."
ssh_cmd "
echo '=== PM2 状态 ==='
pm2 status
echo ''
echo '=== 应用信息 ==='
pm2 info ai-chatbot 2>/dev/null | head -15 || echo '应用未运行'
echo ''
echo '=== 端口监听 ==='
netstat -tulpn | grep -E ':(80|3000)' || ss -tulpn | grep -E ':(80|3000)' || echo '端口检查完成'
echo ''
echo '=== Nginx 状态 ==='
systemctl status nginx --no-pager -l | head -5
"
echo ""
echo "=========================================="
echo "部署完成!"
echo "=========================================="
echo ""
echo "访问地址: http://$SERVER"
echo "管理员设置: http://$SERVER/admin/settings"
echo ""
echo "查看日志: ssh -p $PORT $USER@$SERVER 'pm2 logs ai-chatbot'"
echo "查看状态: ssh -p $PORT $USER@$SERVER 'pm2 status'"
echo ""