Files
lehuo/docs/13_DEPLOYMENT_CHINA.md

168 lines
3.8 KiB
Markdown
Raw Permalink 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.
# 13 国内环境部署与运维
## 1. 目标
- 中国大陆访问稳定;
- 微信小程序合法域名可配置;
- TLS;
- 低维护成本;
- 可迁移;
- 可备份;
- 可回滚。
---
## 2. 推荐生产拓扑(初期)
```text
微信小程序
│ HTTPS
▼
Nginx / API Domain
│
▼
NestJS API (Docker)
├── MySQL
├── Redis
└── Tencent COS
管理后台
│ HTTPS
└────────► Nginx / API
```
管理后台静态资源可由 Nginx 或对象存储/CDN 托管。
---
## 3. 云厂商
优先腾讯云并非代码强绑定要求,而是微信生态和国内运维便利性考虑。
代码必须通过 Adapter 保持:
- COS 可替换 S3 兼容存储;
- Redis 可替换其他标准 Redis;
- MySQL 可迁移标准 MySQL;
- Nginx/Docker 不绑定专有 PaaS。
---
## 4. 国内依赖获取
开发机可根据实际环境配置:
- npm 国内镜像;
- Docker 镜像加速;
- 操作系统软件源镜像。
但:
- lockfile 必须提交;
- CI 至少验证标准 registry 可构建;
- 不依赖个人私服;
- 不在代码写死镜像地址。
---
## 5. 环境
### dev
开发者本机 Docker Compose。
### test
CI 自动化测试。
### staging
与生产拓扑尽量一致,使用测试小程序/测试账号。
### prod
真实用户。
严禁 dev 直连 prod 数据库。
---
## 6. 发布
建议:
1. CI build;
2. 生成 immutable image tag;
3. staging deploy;
4. migration precheck;
5. smoke test;
6. production backup;
7. production deploy;
8. health check;
9. E2E smoke;
10. 观察;
11. 出现严重问题回滚应用版本。
数据库 migration 必须设计可前后兼容,避免应用回滚后数据库不兼容。
---
## 7. 监控
至少:
- API availability
- 5xx rate
- P95 latency
- CPU/memory
- disk
- MySQL connection
- Redis connectivity
- job failures
- backup failures
告警进入实际有人查看的渠道。
---
## 8. 容灾
初期无需昂贵双活,但必须:
- 自动数据库备份;
- 异地/云端备份;
- IaC/部署脚本;
- Docker 镜像可重建;
- 文档化恢复;
- 定期演练。
---
## 9. 微信小程序上线准备
实际申请和上线阶段需要根据微信公众平台最新规则核对:
- 小程序主体
- 服务类目
- 隐私保护指引
- 用户信息/手机号等接口使用说明
- request/download/upload 合法域名
- HTTPS 证书
- 备案/域名要求
- 订阅消息模板
- 审核材料
微信平台规则可能变化,因此上线前必须重新查官方文档,不得只依赖本文件。
---
## 10. Ubuntu 26.04 单机部署基线
- Ubuntu 26.04 LTS 使用 Docker 官方 apt 仓库安装 Docker Engine 与 Compose plugin,不使用生产环境不推荐的 convenience script。
- 初期单机拓扑采用 Docker Compose:Nginx/管理后台、API、MySQL 8.4、Redis 7.4 和私有 MinIO;仅发布 80/443,其他服务不映射宿主机端口。
- 管理后台/API 与对象存储使用两个不同的合法 HTTPS 域名;对象存储保持私有 Bucket、版本控制、精确管理端 CORS 和 120 秒签名 URL。
- API 和管理后台镜像以批准的 Git commit 作为不可变标签,本机构建不使用 `latest`;发布顺序仍为预检、构建、备份、migration、部署、冒烟和观察。
- 环境文件固定保存到 `/etc/lehuo/lehuo.env` 且权限为 600;TLS、备份和发布状态分别保存在 `/opt/lehuo/shared`、`/opt/lehuo/backups` 和 `/opt/lehuo/releases`。
- 每日备份由 systemd timer 执行并生成 SHA-256;本机 30 天保留不替代异地加密备份和季度独立库恢复演练。
- 完整资产与执行命令见 `infra/ubuntu/README.md`。该基线只提供可部署版本,不代表真实 staging、UAT、微信联调或 production approval 已完成。