deploy_proxy.sh 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. #!/bin/bash
  2. # 部署反向代理服务到远程 Docker 服务器
  3. set -e
  4. REMOTE_HOST="${DOCK_URL:-47.84.182.56}"
  5. SSH_KEY="${DOCK_PATH:-C:\Users\11304\gitlab\cybertogether\server\docker-server.pem}"
  6. REMOTE_DIR="/opt/tool_agent/proxy"
  7. echo "=== 部署反向代理服务到 ${REMOTE_HOST} ==="
  8. # 1. 创建远程目录
  9. echo "1. 创建远程目录..."
  10. ssh -i "${SSH_KEY}" -o StrictHostKeyChecking=no root@${REMOTE_HOST} \
  11. "mkdir -p ${REMOTE_DIR}"
  12. # 2. 上传文件
  13. echo "2. 上传代理服务文件..."
  14. scp -i "${SSH_KEY}" -o StrictHostKeyChecking=no \
  15. tools/proxy/proxy_server.py \
  16. tools/proxy/requirements.txt \
  17. root@${REMOTE_HOST}:${REMOTE_DIR}/
  18. # 3. 安装 uv(如果未安装)
  19. echo "3. 检查并安装 uv..."
  20. ssh -i "${SSH_KEY}" -o StrictHostKeyChecking=no root@${REMOTE_HOST} \
  21. "command -v uv >/dev/null 2>&1 || curl -LsSf https://astral.sh/uv/install.sh | sh"
  22. # 4. 创建 uv 虚拟环境并安装依赖
  23. echo "4. 创建 uv 虚拟环境并安装依赖..."
  24. ssh -i "${SSH_KEY}" -o StrictHostKeyChecking=no root@${REMOTE_HOST} \
  25. "cd ${REMOTE_DIR} && source ~/.local/bin/env && uv venv && uv pip install -r requirements.txt"
  26. # 5. 创建 systemd 服务(使用 uv 虚拟环境)
  27. echo "5. 创建 systemd 服务..."
  28. ssh -i "${SSH_KEY}" -o StrictHostKeyChecking=no root@${REMOTE_HOST} "cat > /etc/systemd/system/tool-proxy.service <<'EOF'
  29. [Unit]
  30. Description=Tool Agent Reverse Proxy
  31. After=network.target
  32. [Service]
  33. Type=simple
  34. User=root
  35. WorkingDirectory=${REMOTE_DIR}
  36. ExecStart=${REMOTE_DIR}/.venv/bin/python ${REMOTE_DIR}/proxy_server.py
  37. Restart=always
  38. RestartSec=5
  39. [Install]
  40. WantedBy=multi-user.target
  41. EOF"
  42. # 5. 启动服务
  43. echo "5. 启动代理服务..."
  44. ssh -i "${SSH_KEY}" -o StrictHostKeyChecking=no root@${REMOTE_HOST} \
  45. "systemctl daemon-reload && systemctl enable tool-proxy && systemctl restart tool-proxy"
  46. # 6. 检查状态
  47. echo "6. 检查服务状态..."
  48. ssh -i "${SSH_KEY}" -o StrictHostKeyChecking=no root@${REMOTE_HOST} \
  49. "systemctl status tool-proxy --no-pager"
  50. echo ""
  51. echo "=== 部署完成 ==="
  52. echo "管理接口: http://127.0.0.1:9999 (仅远程服务器本地访问)"
  53. echo "代理端口: 8001-8005 (对外)"
  54. echo ""
  55. echo "查看日志: ssh root@${REMOTE_HOST} 'journalctl -u tool-proxy -f'"