Files
sanguo_vnpy/README-NAS-DEPLOY.md
T
2026-04-11 21:18:55 +08:00

169 lines
4.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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
```bash
git clone <repo-url> /mnt/nas-volume/sanguo_vnpy
cd /mnt/nas-volume/sanguo_vnpy
```
### 2. 安装依赖
```bash
pip install vnpy vnpy_webtrader
# 安装需要的gateway和app
# pip install vnpy_ctp vnpy_ctastrategy ...
```
### 3. 启用systemd服务
```bash
# 复制服务文件
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主配置中包含所有用户配置:
```nginx
server {
listen 443 ssl;
server_name your-nas-domain.com;
# SSL证书配置...
# 包含所有用户配置
include /mnt/nas-volume/sanguo_vnpy/config/nginx/*.conf;
}
```
然后重载Nginx
```bash
nginx -t && systemctl reload nginx
```
### 5. 访问
- https://your-nas-domain.com/zhugeliang/ → 诸葛亮
- https://your-nas-domain.com/zhangfei/ → 张飞
- 依此类推...
## 添加新用户
```bash
cd /mnt/nas-volume/sanguo_vnpy/jiangwei-platform/deploy/nas
./create-user.sh <username> <user-id>
```
然后按照脚本输出的后续步骤操作。
## 维护命令
### 查看状态
```bash
# 查看某个用户进程状态
systemctl status sanguo-trade-zhugeliang
systemctl status sanguo-web-zhugeliang
# 查看日志
journalctl -u sanguo-trade-zhugeliang -f
```
### 重启进程
```bash
systemctl restart sanguo-trade-zhugeliang
systemctl restart sanguo-web-zhugeliang
```
### 停止进程(不影响他人)
```bash
systemctl stop sanguo-trade-zhugeliang
systemctl stop sanguo-web-zhugeliang
```
## 设计原则
1.**不修改vnpy核心代码**:完全使用官方原生架构
2.**彻底隔离**:一人一个进程,一人一个数据目录,互不干扰
3.**易于维护**:可以独立启停单个用户进程,不影响全局
4.**自动配置**:脚本自动生成所有配置,减少手工出错
5.**保留已有功能**:项目原有的任务分配、agent协作完全不受影响
## 故障排查
1. **Web打不开** → 检查systemd状态 `systemctl status sanguo-web-<user>`
2. **无法连接交易进程** → 检查交易进程是否启动 `systemctl status sanguo-trade-<user>`
3. **端口冲突** → 检查 `port-allocation.md` 确认端口分配
4. **WebSocket连不上** → 检查Nginx配置是否包含了Upgrade连接头
---
*维护:姜维 伯约*
*更新:2026-03-31*