#!/bin/bash

# 后端部署脚本 - 部署到CentOS服务器
# 目标服务器: 1.13.156.49
# 目标目录: /data/nodejs/jiebanke

# 配置参数
LOCAL_DIR="/Users/ainongkeji/code/vue/jiebanke/backend"
REMOTE_USER="root"
REMOTE_HOST="1.13.156.49"
REMOTE_DIR="/data/nodejs/jiebanke"

# 检查本地目录是否存在
if [ ! -d "$LOCAL_DIR" ]; then
    echo "错误：本地目录 $LOCAL_DIR 不存在！"
    exit 1
fi

# 检查Node.js环境
if ! command -v node &> /dev/null; then
    echo "错误：本地Node.js环境未安装！"
    exit 1
fi

# 安装生产依赖
cd "$LOCAL_DIR"
echo "安装生产依赖..."
npm install --production

# 使用 rsync 上传文件到服务器
echo "开始上传后端文件到远程服务器..."
rsync -avz --progress --delete \
  --exclude 'node_modules' \
  --exclude '.git' \
  --exclude '.env' \
  --exclude 'logs' \
  --exclude 'uploads' \
  --include 'ecosystem.config.js' \
  "$LOCAL_DIR/" "$REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR/"

# 在服务器上执行部署后命令
echo "在远程服务器上执行部署命令..."
ssh "$REMOTE_USER@$REMOTE_HOST" << EOF
  cd "$REMOTE_DIR"
  
  # 安装生产依赖
  echo "在服务器上安装依赖..."
  npm install --production
  
  # 使用PM2重启应用
  if command -v pm2 &> /dev/null; then
    echo "使用PM2重启应用..."
    if [ -f "ecosystem.config.js" ]; then
      pm2 reload ecosystem.config.js --env production
      pm2 save
    else
      pm2 restart jiebanke-backend || pm2 start src/server.js --name "jiebanke-backend" --env production
    fi
  else
    echo "PM2未安装，使用node直接启动..."
    pkill -f "node.*server.js" || true
    NODE_ENV=production nohup node src/server.js > server.log 2>&1 &
  fi
  
  # 检查服务状态
  echo "检查服务状态..."
  sleep 3
  if command -v pm2 &> /dev/null; then
    pm2 status
  else
    ps aux | grep "node.*server.js" | grep -v grep
  fi
EOF

echo "后端部署完成！"
echo "服务器地址: $REMOTE_HOST"
echo "部署目录: $REMOTE_DIR"
echo "应用应该运行在端口 3000 上"