Initial AI manga platform
This commit is contained in:
Executable
+258
@@ -0,0 +1,258 @@
|
||||
# 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 限流
|
||||
- 防刷验证码
|
||||
- 后台操作日志
|
||||
Reference in New Issue
Block a user