deploy_toolbox.sh 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. #!/bin/bash
  2. set -e
  3. # ===== 配置部分 =====
  4. APP_NAME="fwh-toolbox-server"
  5. APP_DIR="/var/www/fwh-toolbox/server"
  6. APP_PATH="$APP_DIR/$APP_NAME"
  7. SERVICE_FILE="/etc/systemd/system/$APP_NAME.service"
  8. # ===== 编译程序 =====
  9. echo "🚀 Building $APP_NAME..."
  10. GOOS=linux GOARCH=amd64 go build -o $APP_NAME ./
  11. # ===== 复制程序到目标路径 =====
  12. echo "📦 Copying binary to $APP_PATH..."
  13. sudo mv $APP_NAME $APP_PATH
  14. sudo chmod +x $APP_PATH
  15. # ===== 生成并拷贝 EMS 参数字典(启动时加载到 Redis) =====
  16. bash "$(dirname "$0")/deploy_emspara.sh"
  17. # ===== 安装 systemd 服务(如果不存在) =====
  18. if [ ! -f "$SERVICE_FILE" ]; then
  19. echo "📝 Creating systemd service: $SERVICE_FILE"
  20. sudo tee $SERVICE_FILE > /dev/null <<EOF
  21. [Unit]
  22. Description=$APP_NAME service
  23. After=network.target docker.service
  24. Requires=docker.service
  25. [Service]
  26. ExecStartPre=/bin/bash -c '[ $(awk -F. "{print \$1}" /proc/uptime) -lt 60 ] && sleep 15 || true'
  27. ExecStart=$APP_PATH
  28. Restart=always
  29. User=root
  30. WorkingDirectory=$APP_DIR
  31. CPUQuota=200%
  32. MemoryLimit=2G
  33. [Install]
  34. WantedBy=multi-user.target
  35. EOF
  36. echo "✅ Service file created."
  37. sudo systemctl daemon-reload
  38. sudo systemctl enable $APP_NAME
  39. fi
  40. # ===== 启动或重启服务 =====
  41. if systemctl is-active --quiet $APP_NAME; then
  42. echo "🔄 Restarting $APP_NAME service..."
  43. sudo systemctl restart $APP_NAME
  44. else
  45. echo "▶️ Starting $APP_NAME service..."
  46. sudo systemctl start $APP_NAME
  47. fi
  48. # ===== 状态检查 =====
  49. sudo systemctl status $APP_NAME --no-pager