Files
photo-live/docs/plans/progress/正式环境双地域部署-验收记录.md
T

68 lines
4.8 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.
# 正式环境双地域部署 验收记录(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;钉版本仍待办)。
6. **嵌入组件源修正(用户问询触发)**:cn 后台镜像的 `VITE_EMBED_ORIGIN` 初版误配
cn 域名(嵌入代码会让国外站从国内机加载 loader + 轮询数据,跨境慢)——重构建
`photo-live-web:30a3520-20260924-cn2` 改指 `https://live-album.outside.hnxinyouhe.com`
并热切 cn web 容器(仅 web、~10s,用户确认后执行)。嵌入架构口径:**嵌入代码一律
引用 ov 域名**(公开读归 ov;loader.js ov 200/9.4KB 实测)。
## 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 一次成型)。