日期:2026-08-06
状态:已确认设计,待写实现计划
范围:在测试机部署 web-admin + backend;不使用 Docker;中间件复用开发环境已有实例
在测试机 101.35.245.122 的 /root/zkxw 部署一套可外网访问的测试环境:
pnpm build:test 后 rsync 静态产物;Nginx 对外 10001start-test.sh 监听 127.0.0.1:1000247.99.164.66 上的 MySQL / Redis / MinIO(含库名等)成功标准:
http://101.35.245.122:10001 可使用管理端/api 经 Nginx 反代到本机后端,健康检查与登录可用10002;附件走 MinIO 直连地址浏览器
└─ http://101.35.245.122:10001
└─ Nginx(测试机,需新装)
├─ / → /root/zkxw/web-admin/dist
├─ /api/* → http://127.0.0.1:10002
└─ (不反代 MinIO)
后端(start-test.sh)
HOST=127.0.0.1 PORT=10002
.env.test 中间件 ≈ 本机 backend/.env
→ MySQL 47.99.164.66:3306 / zkxw-sc
→ Redis 47.99.164.66:16379 DB=8
→ MinIO 47.99.164.66:20004 bucket=zkxw
浏览器附件
└─ 直连 http://47.99.164.66:20004/zkxw/...
约束:
127.0.0.1,不对公网暴露 10002VITE_API_URL=/api;VITE_MINIO_BASE_URL=http://47.99.164.66:20004/zkxw/root/zkxw/
├── web-admin/
│ └── dist/ # 本机 build:test 产物
├── backend/
│ ├── app/
│ ├── requirements.txt
│ ├── start-test.sh
│ ├── .env.test # 敏感,勿提交 git
│ ├── .venv/ # 服务器用 Python 3.12.3 创建
│ ├── backend-test.pid
│ └── logs/
└── nginx/
└── zkxw-test-10001.conf # 仓库维护的 site 片段,部署到系统 nginx
rsync 排除:venv/、.venv/、__pycache__/、*.pyc、logs/、graphify-out/;.env* 默认不覆盖,首次单独 scp。
| 组件 | 状态 | 动作 |
|---|---|---|
| Python | 已装 3.12.3 | 用 python3.12 -m venv .venv,无需再装 Python |
| Nginx | 未安装 | 按 OS 安装、开机自启、加载 10001 site |
| Docker | 已装但本方案不用 | 不启动 zkxw compose 应用栈 |
实现阶段须探测发行版(apt / yum / dnf)后写入准确安装命令。
.env.testbackend/.env 对齐(同一 MySQL 库名、Redis DB、MinIO endpoint/bucket/密钥)API_ENCRYPT_* 与 web-admin/.env.test 一致HOST=127.0.0.1 PORT=10002(脚本默认曾为 0.0.0.0:8112).env.testVITE_API_URL=/api、VITE_MINIO_BASE_URL=http://47.99.164.66:20004/zkxwhttp://101.35.245.122:10001listen 10001root /root/zkxw/web-admin/dist;SPA try_fileslocation ^~ /api/ → http://127.0.0.1:10002(保留 URI)location = /health → http://127.0.0.1:10002/health(验收固定入口)nginx -t && reloadpython3.12 -m venv .venv;pip install -r requirements.txt.env.test;HOST=127.0.0.1 PORT=10002 ./start-test.sh startpnpm build:test;rsync dist/ 到服务器# 前端
cd web-admin && pnpm build:test
rsync -avz --delete dist/ root@101.35.245.122:/root/zkxw/web-admin/dist/
# 后端
rsync -avz --exclude .venv --exclude venv --exclude '__pycache__' --exclude logs \
backend/ root@101.35.245.122:/root/zkxw/backend/
ssh root@101.35.245.122 \
'cd /root/zkxw/backend && HOST=127.0.0.1 PORT=10002 ./start-test.sh restart'
| 检查 | 期望 |
|---|---|
curl -s -o /dev/null -w '%{http_code}' http://101.35.245.122:10001/ |
200 |
curl -s http://101.35.245.122:10001/health |
后端健康检查成功 |
SSH 上 curl -s http://127.0.0.1:10002/health |
成功 |
外网直连 http://101.35.245.122:10002/health |
失败(超时/拒绝) |
| 登录与附件预览 | 可用(MinIO 公网可达) |
| 风险 | 缓解 |
|---|---|
与开发共用库 zkxw-sc,测试写库影响开发数据 |
已知接受(选型 A);后续若需隔离再开独立库 |
| 测试机访问不到中间件端口 | 部署前从测试机 curl/连通性探测 3306、16379、20004 |
| 浏览器访问不到 MinIO | 确认 47.99.164.66:20004 对使用方网络开放 |
| 误提交密钥 / 机器密码 | .env.test 与账号文件不进 git |
回滚:前端保留上一版 dist 备份再覆盖;后端停服务或回退代码后 restart。
测试环境部署/zkxw-test-10001.conf(或更新现有 nginx 说明)测试环境部署/README.md:新 IP、端口 10001/10002、无 Docker、Python 3.12、安装 Nginx 步骤web-admin/.env.test 注释中的入口地址测试环境机器的账号密码、真实 .env.test 提交入库pnpm build