智慧水务管理系统 - 精河县供水工程综合管理平台

deploy-to-server.sh 2.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. #!/bin/bash
  2. # CRM 系统 - 远程服务器部署脚本
  3. set -e
  4. SERVER_IP="42.121.167.63"
  5. SERVER_USER="root"
  6. SERVER_PASS="Yunmei126!"
  7. REMOTE_DIR="/opt/crm"
  8. echo "=========================================="
  9. echo " CRM 系统 - 远程服务器部署"
  10. echo "=========================================="
  11. echo ""
  12. echo "📍 服务器:${SERVER_USER}@${SERVER_IP}"
  13. echo "📁 目标目录:${REMOTE_DIR}"
  14. echo ""
  15. # 检查 sshpass
  16. if ! command -v sshpass &> /dev/null; then
  17. echo "⚠️ 正在安装 sshpass..."
  18. apt-get install -y sshpass || yum install -y sshpass || {
  19. echo "❌ 无法安装 sshpass,请手动安装或使用密钥认证"
  20. exit 1
  21. }
  22. fi
  23. # 测试连接
  24. echo "🔍 测试服务器连接..."
  25. if sshpass -p "${SERVER_PASS}" ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 ${SERVER_USER}@${SERVER_IP} "echo '连接成功'" 2>/dev/null; then
  26. echo -e "✅ 服务器连接成功\n"
  27. else
  28. echo -e "❌ 服务器连接失败\n"
  29. exit 1
  30. fi
  31. # 创建远程目录
  32. echo "📁 创建远程目录..."
  33. sshpass -p "${SERVER_PASS}" ssh -o StrictHostKeyChecking=no ${SERVER_USER}@${SERVER_IP} "mkdir -p ${REMOTE_DIR}"
  34. echo -e "✅ 目录已创建\n"
  35. # 上传项目文件
  36. echo "📦 上传项目文件..."
  37. sshpass -p "${SERVER_PASS}" scp -o StrictHostKeyChecking=no -r /root/.openclaw/workspace/中小企业需要轻量级-crm-系统/* ${SERVER_USER}@${SERVER_IP}:${REMOTE_DIR}/
  38. echo -e "✅ 文件已上传\n"
  39. # 执行远程部署
  40. echo "🚀 执行远程部署..."
  41. sshpass -p "${SERVER_PASS}" ssh -o StrictHostKeyChecking=no ${SERVER_USER}@${SERVER_IP} << 'ENDSSH'
  42. cd /opt/crm
  43. # 检查 Node.js
  44. if ! command -v node &> /dev/null; then
  45. echo "📦 安装 Node.js..."
  46. curl -fsSL https://deb.nodesource.com/setup_18.x | bash -
  47. apt-get install -y nodejs
  48. fi
  49. # 安装 PM2
  50. if ! command -v pm2 &> /dev/null; then
  51. echo "📦 安装 PM2..."
  52. npm install -g pm2
  53. fi
  54. # 安装依赖
  55. echo "📦 安装项目依赖..."
  56. npm install --production
  57. # 配置环境变量
  58. echo "⚙️ 配置环境变量..."
  59. cat > .env << EOF
  60. PORT=3002
  61. NODE_ENV=production
  62. EOF
  63. # 创建目录
  64. mkdir -p src/data logs
  65. # 停止旧服务
  66. echo "🛑 停止旧服务..."
  67. pm2 stop crm-system 2>/dev/null || true
  68. pm2 delete crm-system 2>/dev/null || true
  69. # 启动服务
  70. echo "🚀 启动服务..."
  71. pm2 start ecosystem.config.js --env production
  72. # 保存配置
  73. echo "💾 保存 PM2 配置..."
  74. pm2 save
  75. # 设置开机自启
  76. pm2 startup 2>/dev/null || true
  77. echo ""
  78. echo "=========================================="
  79. echo " 部署完成!"
  80. echo "=========================================="
  81. echo ""
  82. pm2 status crm-system
  83. echo ""
  84. echo "📍 访问地址:http://${SERVER_IP}:3002"
  85. echo "📋 查看日志:pm2 logs crm-system"
  86. echo ""
  87. ENDSSH
  88. echo ""
  89. echo "✅ 部署完成!"
  90. echo ""
  91. echo "🌐 访问地址:http://${SERVER_IP}:3002"
  92. echo ""