#!/bin/bash # ============================================================ # 部署后端到 dm.all8ai.top 服务器 # 用法: bash deploy-server.sh # ============================================================ set -e SERVER_IP="152.136.182.184" SERVER_USER="ubuntu" REMOTE_DIR="/opt/sbrain-server" PROJECT_DIR="$(cd "$(dirname "$0")" && pwd)" SERVER_DIR="$PROJECT_DIR/server" echo "==========================================" echo " 部署后端到 dm.all8ai.top" echo "==========================================" echo "" # 1. 创建远程目录 echo "[1/5] 准备远程目录..." ssh "$SERVER_USER@$SERVER_IP" "mkdir -p $REMOTE_DIR" echo "✓ 目录就绪" echo "" # 2. 同步代码(排除 node_modules、.env、dist) echo "[2/5] 同步代码..." rsync -avz --delete \ --exclude='node_modules' \ --exclude='.env' \ --exclude='dist' \ --exclude='.git' \ "$SERVER_DIR/" "$SERVER_USER@$SERVER_IP:$REMOTE_DIR/" echo "✓ 代码同步完成" echo "" # 3. 安装依赖 echo "[3/5] 安装依赖..." ssh "$SERVER_USER@$SERVER_IP" "cd $REMOTE_DIR && npm install --production" echo "✓ 依赖安装完成" echo "" # 4. 创建 .env(服务器专用配置) echo "[4/5] 写入服务器配置..." ssh "$SERVER_USER@$SERVER_IP" "cat > $REMOTE_DIR/.env << 'ENVEOF' DB_HOST=127.0.0.1 DB_PORT=15432 DB_NAME=bill_query DB_USER=freedak DB_PASSWORD= DB_POOL_MAX=10 PORT=9333 JWT_SECRET=malan-ops-2026-secret-key CLIENT_URL=https://dm.all8ai.top ZHIPU_API_KEY=sk-c0c5174892c44ff48d587cd040fbdd40 ENVEOF" echo "✓ 配置写入完成" echo "" # 5. 用 pm2 重启后端 echo "[5/5] 重启后端服务..." ssh "$SERVER_USER@$SERVER_IP" "cd $REMOTE_DIR && pm2 delete sbrain-server 2>/dev/null; pm2 start 'npx tsx src/index.ts' --name sbrain-server && pm2 save" echo "✓ 后端已启动" echo "" # 验证 echo "==========================================" echo " 部署成功!" echo " 后端运行在服务器 $SERVER_IP:9333" echo " 日志: ssh $SERVER_USER@$SERVER_IP 'pm2 logs sbrain-server'" echo "=========================================="