| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 |
- @echo off
- chcp 65001 >nul
- setlocal enabledelayedexpansion
- :: ============================================================
- :: Windows CMD 一键部署脚本(使用系统自带 OpenSSH)
- :: 用法: 直接双击 或 CMD 中运行 deploy.bat
- :: 前提: Win10 1809+ 自带 scp.exe / ssh.exe
- :: 或安装了 Git for Windows(含 ssh)
- :: ============================================================
- set HOST=39.97.59.228
- set USER=root
- set PORT=22
- set REMOTE_DIR=/data/vent_agent/vent_deep_agent_1.3
- set APP_PORT=8070
- :: 本地项目目录(脚本所在目录)
- set LOCAL_DIR=%~dp0
- set LOCAL_DIR=%LOCAL_DIR:~0,-1%
- echo ========================================
- echo 配风计划审查系统 - 一键部署
- echo ========================================
- echo 服务器: %USER%@%HOST%:%PORT%
- echo 远程目录: %REMOTE_DIR%
- echo 本地目录: %LOCAL_DIR%
- echo ========================================
- echo.
- echo [提示] 部署过程中会提示输入密码: Ccri123456
- echo.
- :: ── 检测 SSH 客户端 ──
- where ssh >nul 2>&1
- if %errorlevel% neq 0 (
- echo [错误] 未找到 ssh.exe,请安装 Git for Windows 或 OpenSSH
- pause
- exit /b 1
- )
- where scp >nul 2>&1
- if %errorlevel% neq 0 (
- echo [错误] 未找到 scp.exe
- pause
- exit /b 1
- )
- :: SSH 通用参数
- set SSH_OPTS=-o StrictHostKeyChecking=no -p %PORT%
- :: ============================================================
- :: 步骤 1: 创建远程目录
- :: ============================================================
- echo [步骤 1/4] 创建远程目录...
- ssh %SSH_OPTS% %USER%@%HOST% "mkdir -p %REMOTE_DIR%"
- if %errorlevel% neq 0 (
- echo [错误] SSH 连接失败,请检查网络和密码
- pause
- exit /b 1
- )
- echo √ 远程目录已就绪
- echo.
- :: ============================================================
- :: 步骤 2: 上传项目文件
- :: ============================================================
- echo [步骤 2/4] 上传项目文件(全量覆盖)...
- :: 先上传核心文件
- scp %SSH_OPTS% -r ^
- "%LOCAL_DIR%\main.py" ^
- "%LOCAL_DIR%\requirements.txt" ^
- "%LOCAL_DIR%\restart.sh" ^
- "%LOCAL_DIR%\agents" ^
- "%LOCAL_DIR%\api" ^
- "%LOCAL_DIR%\tools" ^
- "%LOCAL_DIR%\skills" ^
- "%LOCAL_DIR%\db" ^
- %USER%@%HOST%:%REMOTE_DIR%/
- if %errorlevel% neq 0 (
- echo [警告] 部分文件上传失败,继续...
- )
- echo √ 核心文件上传完成
- echo.
- :: 上传 .env(如果存在且不是生产配置)
- if exist "%LOCAL_DIR%\.env" (
- echo [步骤 2.5/4] 上传 .env 配置...
- scp %SSH_OPTS% "%LOCAL_DIR%\.env" %USER%@%HOST%:%REMOTE_DIR%/
- echo √ .env 已上传
- echo.
- )
- :: ============================================================
- :: 步骤 3: 远程杀进程
- :: ============================================================
- echo [步骤 3/4] 停止旧服务(端口 %APP_PORT%)...
- ssh %SSH_OPTS% %USER%@%HOST% "PID=\$(lsof -ti:%APP_PORT% 2>/dev/null); if [ -n \"\$PID\" ]; then echo \" 终止进程 PID: \$PID\"; kill -9 \$PID; sleep 1; echo ' √ 旧进程已终止'; else echo ' → 端口无进程占用'; fi; sleep 1; fuser -k %APP_PORT%/tcp 2>/dev/null; true"
- echo.
- :: ============================================================
- :: 步骤 4: 启动服务
- :: ============================================================
- echo [步骤 4/4] 启动服务...
- ssh %SSH_OPTS% %USER%@%HOST% "cd %REMOTE_DIR% && chmod +x restart.sh && ./restart.sh"
- echo.
- :: 等待并验证
- echo 等待服务启动...
- timeout /t 4 /nobreak >nul
- ssh %SSH_OPTS% %USER%@%HOST% "lsof -ti:%APP_PORT% &>/dev/null && echo '========================================' && echo ' √ 部署成功!' && echo ' 服务地址: http://%HOST%:%APP_PORT%' && echo ' API 文档: http://%HOST%:%APP_PORT%/docs' && echo '========================================' || echo '========================================' && echo ' ⚠ 服务可能未启动,请 SSH 检查' && echo ' ssh root@%HOST%' && echo ' tail -f %REMOTE_DIR%/vent_deep_agent.log' && echo '========================================'"
- echo.
- echo 完成。
- pause
|