#!/bin/bash # 部署反向代理服务到远程 Docker 服务器 set -e REMOTE_HOST="${DOCK_URL:-47.84.182.56}" SSH_KEY="${DOCK_PATH:-C:\Users\11304\gitlab\cybertogether\server\docker-server.pem}" REMOTE_DIR="/opt/tool_agent/proxy" echo "=== 部署反向代理服务到 ${REMOTE_HOST} ===" # 1. 创建远程目录 echo "1. 创建远程目录..." ssh -i "${SSH_KEY}" -o StrictHostKeyChecking=no root@${REMOTE_HOST} \ "mkdir -p ${REMOTE_DIR}" # 2. 上传文件 echo "2. 上传代理服务文件..." scp -i "${SSH_KEY}" -o StrictHostKeyChecking=no \ tools/proxy/proxy_server.py \ tools/proxy/requirements.txt \ root@${REMOTE_HOST}:${REMOTE_DIR}/ # 3. 安装 uv(如果未安装) echo "3. 检查并安装 uv..." ssh -i "${SSH_KEY}" -o StrictHostKeyChecking=no root@${REMOTE_HOST} \ "command -v uv >/dev/null 2>&1 || curl -LsSf https://astral.sh/uv/install.sh | sh" # 4. 创建 uv 虚拟环境并安装依赖 echo "4. 创建 uv 虚拟环境并安装依赖..." ssh -i "${SSH_KEY}" -o StrictHostKeyChecking=no root@${REMOTE_HOST} \ "cd ${REMOTE_DIR} && source ~/.local/bin/env && uv venv && uv pip install -r requirements.txt" # 5. 创建 systemd 服务(使用 uv 虚拟环境) echo "5. 创建 systemd 服务..." ssh -i "${SSH_KEY}" -o StrictHostKeyChecking=no root@${REMOTE_HOST} "cat > /etc/systemd/system/tool-proxy.service <<'EOF' [Unit] Description=Tool Agent Reverse Proxy After=network.target [Service] Type=simple User=root WorkingDirectory=${REMOTE_DIR} ExecStart=${REMOTE_DIR}/.venv/bin/python ${REMOTE_DIR}/proxy_server.py Restart=always RestartSec=5 [Install] WantedBy=multi-user.target EOF" # 5. 启动服务 echo "5. 启动代理服务..." ssh -i "${SSH_KEY}" -o StrictHostKeyChecking=no root@${REMOTE_HOST} \ "systemctl daemon-reload && systemctl enable tool-proxy && systemctl restart tool-proxy" # 6. 检查状态 echo "6. 检查服务状态..." ssh -i "${SSH_KEY}" -o StrictHostKeyChecking=no root@${REMOTE_HOST} \ "systemctl status tool-proxy --no-pager" echo "" echo "=== 部署完成 ===" echo "管理接口: http://127.0.0.1:9999 (仅远程服务器本地访问)" echo "代理端口: 8001-8005 (对外)" echo "" echo "查看日志: ssh root@${REMOTE_HOST} 'journalctl -u tool-proxy -f'"