www_site/docs/DEPLOYMENT.md

4.0 KiB
Raw Blame History

部署说明DEPLOYMENT

日期2026-09-10 · 测试机 192.168.199.22Ubuntu 24.04LAN 当前上线版本:49a916bwww + CMS详见 production-deployment-2026-09-12.mdAPI 仍为 ad87a71

1. 部署模型

  • 发布目录:/home/flym/releases/<发布名>/,是仓库的完整拷贝(含 app/apps/cmsservices/api.nextnode_modules)。
  • 运行通过软链指向当前发布:
    • kaotings-apireleases/<发布>/services/api
    • kaotings-cmsreleases/<发布>/apps/cms
    • kaotings-wwwreleases/<发布>
  • 虚拟环境独立:/home/flym/kaotings-api-venv(不随发布拷贝)。
  • systemd 服务:kaotings-apiuvicorn 127.0.0.1:8000)、kaotings-cms127.0.0.1:3001)、kaotings-web127.0.0.1:3000Restart=always
  • 反代Caddy 提供 :80/:443/api→8000、/cms→3001、其余→3000回环端口不对 LAN 开放。
  • 秘密:/etc/kaotings/api.envcms.envcms-admin.secretsp4-*.secretsroot-only 0600不进 Git/前端/日志
  • 数据库PostgreSQL 127.0.0.1:5432(业务 kaotings、CMS kaotings_cms,独立账号)。
  • 音频:私有本地目录 /home/flym/kaotings-audio

2. 发布一个新版本(本次 8657f44 的做法)

  1. 本地提交修复,得到提交号 <sha>
  2. 服务器:cp -a releases/p4 releases/<sha>(完整拷贝当前发布)。
  3. 将变更文件更新到 releases/<sha>(本次仅 services/api/app/main.pytests/)。
  4. 应用数据库迁移(如有):/home/flym/kaotings-api-venv/bin/python -m app.migrateDATABASE_URLapi.env)。
  5. 重新指向软链(三个服务一致指向 <sha>)。
  6. 只重启发生代码变更的服务(本次仅 systemctl restart kaotings-api),避免无谓中断。
  7. 版本核对:比对线上关键文件 SHA256 与提交一致;systemctl is-activeGET /healthz

本次核对:线上 services/api/app/main.py SHA256 571037f4… = 本地 8657f44kaotings-api active/healthz ok

3. 回滚

  • 软链指回上一发布(本次为 p4kaotings-apireleases/p4/services/api(如需回滚 web/cms 一并指回)。
  • systemctl restart kaotings-api(及被回滚的服务)。
  • p4 保持完好,可随时回滚。回滚前若已应用新迁移,需评估迁移是否可逆。

4. 上线阻断:上游安全改造(必须解除后方可正式上线)

现状TTS 上游为公网 HTTPTTS_UPSTREAM_URLBearer Key 明文传输。此为正式上线阻断项,未解除前不得判定“可正式上线”。

4.1 具体实施条件

条件 说明
传输加密 上游提供 HTTPS(受信任或可内部校验的证书),或受控加密通道(内网 VPN/专线、mTLS
来源限制 上游侧限制仅本站服务器出口 IP/网段可访问(防火墙/安全组/WAF 白名单);业务侧保留 Bearer Key。
外部网络复测 加密与来源限制生效后,重跑:成功生成、音频校验、私有回放/下载、超时/失败矩阵;并核查 TTS/DB/Redis/裸端口对外不可达。

4.2 需上游负责人提供

  1. HTTPS 端点与证书(或 mTLS/专线接入方式、CA
  2. 允许访问的来源机器/IP 段与网络方式(用于双方配置来源限制)。
  3. 凭据注入名称、有效期、轮换方式(密钥仍只进 /etc/kaotings/api.env)。
  4. 加密/来源限制生效时间窗口,便于安排外部复测。

边界:不擅自修改上游服务;本轮仅记录条件与所需输入,未改动任何上游配置。

5. 上线前外部核查清单

  • 外部不可达PostgreSQL 5432、API 8000、Web 3000、CMS 3001、Redis如有均仅回环不对外。
  • 上游仅允许本站出口访问且为加密通道§4
  • 备份/恢复、Worker 重启、额度对账、音频恢复、回滚:见 OPERATIONS.md
  • 旧 Big-TTS Web 退役:仍需旧系统负责人提供源端备份证明与替代验收确认。