# 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 证书 - 备案/域名要求 - 订阅消息模板 - 审核材料 微信平台规则可能变化,因此上线前必须重新查官方文档,不得只依赖本文件。