Files
sanguo_vnpy/deploy/nas/README-NAS-DEPLOY.md
2026-04-29 20:16:20 +08:00

4.9 KiB
Raw Permalink Blame History

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. 访问

添加新用户

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

设计原则

  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