Files
photo-live/docs/plans/progress/正式环境双地域部署-验收记录.md
T
2026-09-24 13:41:47 +08:00

4.3 KiB
Raw Blame History

正式环境双地域部署 验收记录(2026-09-24)

对应计划:docs/plans/2026-09-24-正式环境双地域部署.md(用户确认后执行)。 版本:photo-live-server:30a3520-20260924(commit 30a3520,含 nginx entrypoint 补丁正式化); web 双版本 photo-live-web:30a3520-20260924-ov / -cn(VITE_VIEWER_BASE 分域构建)。

1. 部署形态(结果)

机 域名 栈 外网验证
cn 101.37.116.184(Rocky 9.6, 2C/3.5G) live-album.inside.hnxinyouhe.com photo-live-cn:api-cn/worker/sync/web + 自管 mysql:8.4(调优)/redis:7,web@127.0.0.1:18088 /v1/health ok;/admin/ 200
ov 47.254.176.10(Debian 13, 2C/7.4G) live-album.outside.hnxinyouhe.com photo-live-ov:api-ov/web-ov + 自管 mysql:8.4/redis:7,web@127.0.0.1:18089,mysql 公网映射 13306(等安全组) /v1/health ok;根 302

入口:两机 1Panel OpenResty 站点(用户自建)+ Let's Encrypt 证书 + 强制 HTTPS; 反代配置确认含 Upgrade/Connection 头。SSH 通道:photo-ov 走 ProxyJump 跳板 8.152.213.143(ov 安全组白名单了它;cn→ov 22/443 亦可达);photo-cn 直连。 均用 ~/.ssh/id_ed25519(cms-cj-deploy)。

2. 验证结果(全部通过)

  • prod-smoke 四点冒烟 9/9 PASS:双端 health、真实密码登录、建时间戳相册 → OSS presign PUT(3118B 真实上传,G1 桶凭证复用)→ complete → worker 处理 → cn 公开 0s 可见 → ov 公开 0s 可见(跨境 HMAC 推送端到端);清理软删 ✓。
  • WS:/v1/realtime 经 OpenResty→web→api-ov 升级 101 ✓。
  • CORS:第三方 Origin 无 Access-Control-Allow-Origin(收窄生效)✓。
  • sync 日志:outbox batch pushed(acceptedEventIds 落 ov inbox)✓。
  • 迁移:cn/ov 两库 migrate deploy 全量应用;seed-admin created admin (active) ✓。
  • NTP:两机均同步(阿里云内部 NTP,HMAC ±300s 前提)✓。

3. 与准备件的偏差(实际落地)

  1. compose 自管 mysql:8.4 + redis:7(两机 1Panel MySQL 均为 5.7.44 不满足基线), 独立桥网络 photo-net,与机上既有项目(tracker/cc-ai-kefu/cms-cj/loan-reminder 等)零接触。
  2. web 回环端口 18089(ov)/18088(cn)——8089 两机都被 1Panel phpMyAdmin 占用。
  3. cn mysql 调优:performance-schema=OFF + innodb-buffer-pool-size=128M (cn 仅 3.5G 内存,栈占用实测 ~495M,available ~1.0G)。
  4. ov mysql 公网映射 0.0.0.0:13306(sync 直连读库:对账+统计回传;安全组未放行前 这两循环持续幂等重试,内容推送走 API 443 不受影响)。
  5. docker/web.Dockerfile 正式化 entrypoint ipv6 脚本移除(commit 30a3520;钉版本仍待办)。

4. 遗留与待办

  • [用户操作] ov 安全组放行 TCP/13306 ← 101.37.116.184——放行后 sync 的 reconcile(5min 对账)与 stat return(60s 统计回传)即自愈(幂等重试中)。
  • [用户决策] cn 机 2G swap:机器级改动经用户确认后再做(当前 1.0G available 无 swap,worker sharp 峰值有 OOM 风险;建议做)。
  • [用户操作] uniservice 首批用户同步:12h 间隔下重启后首批要等——后台「手动同步」 按钮触发(或等定时)。
  • gitea push 待令牌(本会话推送认证失败;commit 30a3520 未推送,镜像已直传服务器)。
  • 服务器无源码 clone(部署走镜像传输);后续更新流程待 gitea 令牌后补 git pull 工作流。
  • 磁盘两机均 ~85%(cn 5.6G/ov 5.7G 余)——长期扩容建议已登记。
  • 既有风险提醒(未动):cn 机 1Panel MySQL 5.7 绑 0.0.0.0:3306 公网暴露,建议收口。
  • 密钥管理:全部新生成(SYNC_INTERNAL_KEY/mysql×4/ADMIN_PASSWORD),本地 .env.prod-secrets/(gitignore)+ 两机 .env*(600)。ADMIN 密码建议首次登录后 经后台修改(env 值仅 seed 用)。

5. 运维备忘(本次新增坑位)

  • cn/ov 入口均为 1Panel OpenResty 站点(用户面板管理,续期由 1Panel 负责); 容器操作走 docker compose -f /opt/photo-live/deploy/docker-compose-{cn,ov}.yml。
  • 本机→ov 文件传输走 scp photo-ov:(自动过跳板);226MB 镜像包约 4 分钟。
  • 重建 api 容器后 web 需一并 restart(既有坑位,本次未触发——首装 up 一次成型)。