DEPLOY.md 2.5 KB

shanxia2.0 Backend 生产部署说明

1. 上传到服务器

将 backend/ 目录上传到:

/iflytek/shanxia2.0/backend

必须排除(否则 Linux 上会报 bad interpreter: No such file or directory):

  • venv/(禁止上传本机 venv,必须在服务器上用 ./start-prod.sh install 重建)
  • logs/、__pycache__/、*.pyc
  • graphify-out/
  • uploads/(若生产已有附件数据则保留服务器端目录)
  • .env(开发配置,生产用 .env.production)

本地打包示例:

cd /path/to/shanxia2.0
tar czf shanxia2.0-backend.tar.gz \
  --exclude='backend/venv' \
  --exclude='backend/logs' \
  --exclude='backend/__pycache__' \
  --exclude='backend/graphify-out' \
  --exclude='backend/.env' \
  backend/

2. 服务器首次启动

cd /iflytek/shanxia2.0/backend
chmod +x start-prod.sh

# 首次:安装 Python 依赖(自动创建 venv)
./start-prod.sh install

# 启动(默认 127.0.0.1:9111,读取 .env.production)
./start-prod.sh start

3. 日常运维

./start-prod.sh status    # 查看状态
./start-prod.sh logs      # 最近日志
./start-prod.sh restart   # 发版后重启
./start-prod.sh stop      # 停止

健康检查:

curl -s http://127.0.0.1:9111/health
# {"status":"healthy"}

4. 配置文件

文件 用途
.env.production 生产环境变量(DB/Redis/MinIO/JWT/RSA 等)
start-prod.sh 启动脚本(默认端口 9111)

默认监听 127.0.0.1:9111,由 Nginx :9911 反代 /api/*,无需对公网开放 9111。

5. 与 Nginx 配合

Nginx 配置见仓库 生产环境部署/nginx-shanxia2.0.conf:

  • 前端:http://121.43.228.102:9911
  • API:/api/ → http://127.0.0.1:9111

6. 常见问题

Q: bad interpreter: .../Users/.../venv/bin/python3: No such file or directory
A: 误把本机 Mac 的 venv/ 上传到了 Linux。在服务器执行:

cd /iflytek/shanxia2.0/backend
rm -rf venv
./start-prod.sh install
./start-prod.sh start

新版 start-prod.sh 也会自动检测并重建无效 venv。

Q: 启动失败,日志报 ModuleNotFoundError
A: 执行 ./start-prod.sh install 重新安装依赖。

Q: 登录失败 / 公钥变化
A: 确认 .env.production 中 LOGIN_RSA_PRIVATE_KEY_PEM 已配置且未被修改。

Q: 数据库连接失败
A: 检查服务器到 47.99.164.66:3306 网络与白名单。

Q: 需要改端口
A: PORT=9111 ./start-prod.sh restart 或修改脚本默认值。