4.9 KiB
4.9 KiB
sanguo_vnpy NAS 部署指南
架构概述
严格遵循vnpy官方基础架构,不修改核心代码,只做部署层适配:
- 每个用户一对独立进程:交易进程(RPC服务端) + Web进程(FastAPI)
- 彻底隔离:每个用户独立数据目录、独立端口,互不干扰
- 统一入口:Nginx反向代理按路径分发
- 稳定运维:systemd管理进程,开机自启,崩溃自动恢复
目录结构
sanguo_vnpy/ # 项目根目录(在NAS上对应 /mnt/nas-volume/sanguo_vnpy)
├── README-NAS-DEPLOY.md # 本文件
├── jiangwei-platform/ # 平台基础设施(姜维维护)
│ └── deploy/
│ └── nas/
│ ├── create-user.sh # 创建新用户脚本
│ ├── create-all-users.sh # 创建所有预设用户
│ ├── generate-all-configs.sh # 生成所有配置
│ ├── port-allocation.md # 端口分配表
│ └── templates/ # 配置模板
├── config/ # 全局配置
│ ├── systemd/ # systemd服务文件
│ └── nginx/ # Nginx location配置片段
├── data/ # 全局共享数据
│ └── history/ # 共享历史行情数据(只读)
└── users/ # 用户目录
├── zhugeliang/ # 诸葛亮
│ ├── data/ # 个人数据
│ ├── logs/ # 日志
│ ├── strategies/ # 个人策略
│ ├── start_trade.py # 交易进程启动脚本
│ └── start_web.py # Web进程启动脚本
├── pangtong/
└── ...
端口分配
| 用户 | 编号 | RPC请求 | RPC订阅 | Web端口 | Nginx路径 | 状态 |
|---|---|---|---|---|---|---|
| 诸葛亮 | 1 | 2010 | 2011 | 8001 | /zhugeliang/ |
已创建 |
| 庞统 | 2 | 2020 | 2021 | 8002 | /pangtong/ |
已创建 |
| 司马懿 | 3 | 2030 | 2031 | 8003 | /simayi/ |
已创建 |
| 张飞 | 4 | 2040 | 2041 | 8004 | /zhangfei/ |
已创建 |
| 关羽 | 5 | 2050 | 2051 | 8005 | /guanyu/ |
已创建 |
| 赵云 | 6 | 2060 | 2061 | 8006 | /zhaoyun/ |
已创建 |
| 姜维 | 7 | 2070 | 2071 | 8007 | /jiangwei/ |
已创建 |
部署到NAS步骤
1. 克隆项目到NAS
git clone <repo-url> /mnt/nas-volume/sanguo_vnpy
cd /mnt/nas-volume/sanguo_vnpy
2. 安装依赖
pip install vnpy vnpy_webtrader
# 安装需要的gateway和app
# pip install vnpy_ctp vnpy_ctastrategy ...
3. 启用systemd服务
# 复制服务文件
cp config/systemd/*.service /etc/systemd/system/
# 重载systemd
systemctl daemon-reload
# 启用并启动所有服务
for user in zhugeliang pangtong simayi zhangfei guanyu zhaoyun jiangwei; do
systemctl enable --now sanguo-trade-$user
systemctl enable --now sanguo-web-$user
done
4. 配置Nginx
在Nginx主配置中包含所有用户配置:
server {
listen 443 ssl;
server_name your-nas-domain.com;
# SSL证书配置...
# 包含所有用户配置
include /mnt/nas-volume/sanguo_vnpy/config/nginx/*.conf;
}
然后重载Nginx:
nginx -t && systemctl reload nginx
5. 访问
- https://your-nas-domain.com/zhugeliang/ → 诸葛亮
- https://your-nas-domain.com/zhangfei/ → 张飞
- 依此类推...
添加新用户
cd /mnt/nas-volume/sanguo_vnpy/jiangwei-platform/deploy/nas
./create-user.sh <username> <user-id>
然后按照脚本输出的后续步骤操作。
维护命令
查看状态
# 查看某个用户进程状态
systemctl status sanguo-trade-zhugeliang
systemctl status sanguo-web-zhugeliang
# 查看日志
journalctl -u sanguo-trade-zhugeliang -f
重启进程
systemctl restart sanguo-trade-zhugeliang
systemctl restart sanguo-web-zhugeliang
停止进程(不影响他人)
systemctl stop sanguo-trade-zhugeliang
systemctl stop sanguo-web-zhugeliang
设计原则
- ✅ 不修改vnpy核心代码:完全使用官方原生架构
- ✅ 彻底隔离:一人一个进程,一人一个数据目录,互不干扰
- ✅ 易于维护:可以独立启停单个用户进程,不影响全局
- ✅ 自动配置:脚本自动生成所有配置,减少手工出错
- ✅ 保留已有功能:项目原有的任务分配、agent协作完全不受影响
故障排查
- Web打不开 → 检查systemd状态
systemctl status sanguo-web-<user> - 无法连接交易进程 → 检查交易进程是否启动
systemctl status sanguo-trade-<user> - 端口冲突 → 检查
port-allocation.md确认端口分配 - WebSocket连不上 → 检查Nginx配置是否包含了Upgrade连接头
维护:姜维 伯约 更新:2026-03-31