deploy-simple.sh 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. #!/bin/bash
  2. # 简化版自动部署脚本 - 直接运行源码
  3. set -e
  4. DEPLOY_LOG="/tmp/deploy-simple.log"
  5. PROJECT_DIR="/data/ai/audio_codebuddy"
  6. FRONTEND_PORT="5173"
  7. BACKEND_PORT="3100"
  8. log() {
  9. echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" | tee -a "$DEPLOY_LOG"
  10. }
  11. log "========== 开始自动部署 =========="
  12. # 切换到项目目录
  13. cd "$PROJECT_DIR"
  14. # Git pull (冲突时强制用仓库版本)
  15. log "执行 git pull..."
  16. cd "$PROJECT_DIR"
  17. git fetch origin
  18. git reset --hard origin/master 2>&1 | tee -a "$DEPLOY_LOG"
  19. # ========== 启动/重启前端 ==========
  20. log "启动前端 dev server..."
  21. cd "$PROJECT_DIR/my-uniapp-vue3"
  22. # 停止旧的前端进程
  23. pkill -f "vite" 2>/dev/null || true
  24. pm2 delete frontend 2>/dev/null || true
  25. # 安装依赖
  26. npm install 2>&1 | tee -a "$DEPLOY_LOG"
  27. # 后台启动前端 dev server (监听所有网卡)
  28. nohup npx vite --host 0.0.0.0 --port $FRONTEND_PORT > "$DEPLOY_LOG.frontend.log" 2>&1 &
  29. FRONTEND_PID=$!
  30. echo "Frontend PID: $FRONTEND_PID"
  31. sleep 8 # 等待启动
  32. log "前端启动完成 (PID: $FRONTEND_PID)"
  33. # ========== 启动/重启后端 ==========
  34. log "启动后端服务..."
  35. cd "$PROJECT_DIR/server"
  36. # 安装依赖
  37. npm install 2>&1 | tee -a "$DEPLOY_LOG"
  38. # 停止旧的后端进程
  39. pm2 delete server 2>/dev/null || true
  40. # 编译 TypeScript
  41. npm run build 2>&1 | tee -a "$DEPLOY_LOG"
  42. # 使用编译后的 JS 运行
  43. SERVER_PORT=$BACKEND_PORT pm2 start dist/app.js --name server 2>&1 | tee -a "$DEPLOY_LOG"
  44. pm2 save 2>&1 | tee -a "$DEPLOY_LOG"
  45. log "========== 部署完成 =========="
  46. log "前端: http://localhost:$FRONTEND_PORT"
  47. log "后端: http://localhost:$BACKEND_PORT"