3.8 KiB
3.8 KiB
13 国内环境部署与运维
1. 目标
- 中国大陆访问稳定;
- 微信小程序合法域名可配置;
- TLS;
- 低维护成本;
- 可迁移;
- 可备份;
- 可回滚。
2. 推荐生产拓扑(初期)
微信小程序
│ 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. 发布
建议:
- CI build;
- 生成 immutable image tag;
- staging deploy;
- migration precheck;
- smoke test;
- production backup;
- production deploy;
- health check;
- E2E smoke;
- 观察;
- 出现严重问题回滚应用版本。
数据库 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 已完成。