# 14_部署运维_日志监控_备份设计 ## 1. 文档目标 本文档定义系统 B 的部署结构、服务目录、环境变量、日志、监控、备份、告警和清理策略。 ## 2. 推荐部署架构 第一阶段单服务器即可: ```text Nginx NestJS API BullMQ Workers MySQL Redis MinIO FFmpeg Geeker-Admin 静态文件 uni-app H5 静态文件 ``` 后续可拆分: ```text API 服务器 Worker 服务器 数据库服务器 对象存储 视频渲染服务器 ``` ## 3. 目录结构建议 ```text /opt/system-b/ backend/ admin-web/ user-web/ workers/ logs/ ffmpeg-temp/ docker-compose.yml .env ``` ## 4. 环境变量 ```text NODE_ENV=production APP_PORT=3000 MYSQL_HOST=127.0.0.1 MYSQL_PORT=3306 MYSQL_USER=system_b MYSQL_PASSWORD=xxx MYSQL_DATABASE=system_b REDIS_HOST=127.0.0.1 REDIS_PORT=6379 MINIO_ENDPOINT=127.0.0.1 MINIO_PORT=9000 MINIO_ACCESS_KEY=xxx MINIO_SECRET_KEY=xxx JWT_SECRET=xxx OPENAI_API_KEY=xxx ``` Provider 密钥建议使用密钥管理或环境变量,不直接写入数据库明文。 ## 5. Nginx 配置目标 反代: ```text /api → NestJS /admin → Geeker-Admin / → uni-app H5 /ws → WebSocket ``` 静态文件不直接暴露 MinIO 私密 bucket。 ## 6. 进程管理 可选: - PM2 - systemd - Docker Compose 服务: ```text api-server worker-photo worker-text worker-image worker-video worker-ffmpeg worker-qc ``` ## 7. 日志设计 日志类型: ```text api.log worker.log error.log provider.log payment.log ffmpeg.log audit.log ``` 日志要求: - 按天切割 - 保留 30-90 天 - 敏感信息脱敏 - 重要错误报警 ## 8. 监控指标 应用指标: - API 响应时间 - API 错误率 - 队列积压数 - 任务失败率 - Provider 失败率 - 视频合成耗时 系统指标: - CPU - 内存 - 磁盘 - 网络 - MinIO 容量 - MySQL 连接数 - Redis 内存 业务指标: - 今日订单数 - 今日收入 - 今日 AI 成本 - 项目完成数 - 待审核数 ## 9. 告警规则 触发: - API 5xx 错误率过高 - 队列积压超过阈值 - Provider 连续失败 - 磁盘剩余空间低于 20% - MinIO 容量不足 - MySQL 备份失败 - 单日 AI 成本超阈值 ## 10. 数据库备份 建议: ```text 每日全量备份 每小时 binlog 增量 备份保留 7-30 天 定期恢复演练 ``` 备份目录: ```text /backups/mysql/YYYY-MM-DD/ ``` ## 11. MinIO 备份 策略: - 重要成品每日同步 - 用户原图按隐私策略备份 - 临时文件不备份 - 公开案例单独备份 ## 12. Redis 持久化 Redis 用于队列和缓存: - 开启 AOF 或 RDB - 定期检查内存 - 设置合适 maxmemory 策略 ## 13. 临时文件清理 清理对象: - FFmpeg 临时文件 - 预览临时素材 - 失败任务中间文件 - 过期下载包 策略: ```text 每晚 cleanup_queue 执行 临时文件保留 1-3 天 失败任务文件保留 7 天 ``` ## 14. 项目素材保留策略 建议: | 类型 | 保留 | |---|---| | 用户上传原图 | 按用户协议,默认 90-180 天或项目删除后清理 | | 预览图 | 30 天 | | 正式图 | 180 天或长期,按套餐 | | 成品视频 | 180 天或长期,按套餐 | | 公开案例 | 授权有效期间保留 | ## 15. 发布流程 ```text 代码提交 → 自动测试 → 构建后端 → 构建后台 → 构建用户端 → 数据库迁移 → 灰度发布 → 检查日志 → 正式发布 ``` ## 16. 回滚方案 必须保留: - 上一个后端版本 - 上一个前端静态包 - 数据库迁移回滚脚本 - 配置备份 ## 17. 安全要求 - HTTPS - 后台登录二次验证,后续可加 - 密钥不提交代码仓库 - 上传文件类型限制 - API 限流 - 防刷验证码 - 后台操作日志