本文档引用的文件
本文件面向AI有声书生成平台的运维与开发团队,提供一套完整的部署架构文档,覆盖容器化部署策略、Nginx反向代理配置、多环境差异化配置、数据库部署与备份恢复、以及监控与日志体系。文档以仓库中的实际部署脚本、Nginx配置、后端应用入口与服务模块为依据,结合Prisma数据库模型,形成可落地的实施蓝图。
该仓库包含后端服务、前端构建产物、Nginx代理配置与多套部署文档。后端采用Koa框架,通过PM2进行进程守护;Nginx负责反向代理与静态资源服务;数据库使用Prisma管理MySQL;日志与错误监控分别由Winston与Sentry提供。
graph TB
subgraph "服务器"
FE["前端静态资源<br/>/data/ai/audio/frontend/build/h5"]
BE["后端服务<br/>server/dist/app.js"]
DB["MySQL 8.0<br/>单容器 single-mysql"]
REDIS["Redis 缓存"]
OSS["阿里云 OSS"]
end
subgraph "反向代理"
NGINX["Nginx<br/>book.rrbrr.com -> /api -> 3100"]
end
Client["客户端浏览器"] --> NGINX
NGINX --> BE
BE --> DB
BE --> REDIS
BE --> OSS
FE -. 静态直出 .-> NGINX
图表来源
章节来源
章节来源
下图展示了服务器拓扑、网络配置与服务依赖关系,映射到实际的部署文档与配置文件。
graph TB
Client["客户端"] --> |"HTTP/HTTPS"| NGINX["Nginx 反向代理"]
NGINX --> |"反代 /api/*"| APP["后端应用 server/dist/app.js"]
APP --> |"Prisma"| MYSQL["MySQL 单实例"]
APP --> |"Redis"| REDIS["Redis 缓存"]
APP --> |"OSS"| OSS["阿里云 OSS"]
FE["前端静态资源"] --> |"静态直出"| NGINX
图表来源
负载均衡策略
当前为单实例部署,未见多实例LB配置;若需扩展,可在Nginx层增加upstream与轮询/权重策略。
sequenceDiagram
participant C as "客户端"
participant N as "Nginx(book.rrbrr.com)"
participant A as "后端应用(3100)"
participant D as "数据库/存储"
C->>N : "GET /api/health"
N->>A : "proxy_pass /api/..."
A->>D : "Prisma/Redis/OSS访问"
A-->>N : "200 {status : healthy}"
N-->>C : "200 OK"
图表来源
章节来源
章节来源
生产环境
数据库存放在Docker单实例容器,提供备份与迁移命令。
flowchart TD
Dev["开发环境<br/>Docker Nginx -> 3000"] --> Test["测试环境<br/>独立容器/Nginx"]
Test --> Prod["生产环境<br/>宝塔Nginx -> 3100"]
图表来源
章节来源
备份与恢复
建议对uploads、videos、logs等目录做独立备份。
erDiagram
USER {
int id PK
string phone
string openid
}
BOOK {
int id PK
int user_id FK
string title
}
BOOK_CHAPTER {
int id PK
int book_id FK
string title
}
USER ||--o{ BOOK : "创建"
BOOK ||--o{ BOOK_CHAPTER : "包含"
图表来源
章节来源
性能指标
提供/health健康检查与/api/metrics指标端点,便于接入Prometheus/Grafana。
sequenceDiagram
participant C as "客户端"
participant N as "Nginx"
participant A as "后端应用"
participant L as "Winston日志"
participant S as "Sentry"
C->>N : "请求 /api/..."
N->>A : "反向代理"
A->>L : "记录HTTP请求日志"
A->>S : "捕获异常/错误上下文"
A-->>N : "响应"
N-->>C : "响应"
图表来源
章节来源
外部依赖
Docker(开发)或宝塔面板(生产)管理Nginx配置。
graph LR
APP["server/src/app.ts"] --> PRISMA["Prisma(schema.prisma)"]
APP --> REDIS["Redis"]
APP --> OSS["OSS"]
APP --> WINSTON["Winston"]
APP --> SENTRY["Sentry"]
NGINX["Nginx配置"] --> APP
图表来源
章节来源
[本节为通用指导,无需具体文件引用]
章节来源
本部署架构以Nginx为入口、PM2守护后端、Prisma管理MySQL为核心,辅以Winston与Sentry实现可观测性。当前生产环境采用宝塔面板管理Nginx,具备完善的TLS与缓存策略。建议后续引入容器化编排、主从复制与读写分离、自动化备份与灰度发布流程,以进一步提升稳定性与可扩展性。
[本节为总结性内容,无需具体文件引用]
[本节为补充信息,无需具体文件引用]