| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- #!/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'"
|