本文引用的文件
本文件面向AI有声书生成平台的运维与开发团队,提供从开发到生产的全链路部署与环境问题排查指南。内容覆盖:
该仓库包含后端Node.js服务、前端UniApp应用、Docker化的Nginx反代、部署脚本与自动化部署配置。关键目录与文件如下:
文档:DEPLOY.md、DEPLOY_PROD.md
graph TB
subgraph "前端"
FE["my-uniapp-vue3<br/>构建产物 dist/"]
end
subgraph "后端"
APP["server/src/app.ts<br/>Koa 应用"]
CFG[".env / models.json<br/>配置加载"]
DB["MySQL 8.0 (Docker)"]
REDIS["Redis"]
OSS["阿里云 OSS"]
end
subgraph "反向代理"
NGINX["Nginx (宝塔/Compose)"]
end
subgraph "自动化"
WH["webhook-deploy.py"]
SCRIPTS["deploy.sh / deploy-prod.sh"]
end
FE --> NGINX
NGINX --> APP
APP --> DB
APP --> REDIS
APP --> OSS
WH --> SCRIPTS
SCRIPTS --> NGINX
SCRIPTS --> APP
图表来源
章节来源
章节来源
下图展示生产与开发两种部署形态的关键交互:
graph TB
subgraph "开发环境"
D_NGINX["Docker Nginx<br/>bookapi.conf -> host:3000"]
D_APP["后端容器<br/>dist/app.js"]
D_DB["MySQL 容器"]
D_REDIS["Redis 容器"]
end
subgraph "生产环境"
P_NGINX["宝塔 Nginx<br/>book.rrbrr.com -> /h5<br/>bookapi.rrbrr.com -> 3100"]
P_FE["前端构建产物<br/>/data/ai/audio/frontend/build/h5"]
P_APP["PM2 管理后端<br/>dist/app.js"]
P_DB["MySQL 容器/主机"]
P_REDIS["Redis 容器/主机"]
P_OSS["阿里云 OSS"]
end
subgraph "自动化"
WEBHOOK["webhook-deploy.py"]
DEPLOY["deploy-prod.sh / deploy.sh"]
end
D_NGINX --> D_APP
D_APP --> D_DB
D_APP --> D_REDIS
P_NGINX --> P_FE
P_NGINX --> P_APP
P_APP --> P_DB
P_APP --> P_REDIS
P_APP --> P_OSS
WEBHOOK --> DEPLOY
DEPLOY --> P_APP
DEPLOY --> P_NGINX
图表来源
健康检查
/health 返回标准响应体,便于Nginx/PM2探活
sequenceDiagram
participant Proc as "PM2/进程"
participant App as "server/src/app.ts"
participant DB as "MySQL"
participant Cache as "Redis"
participant Store as "OSS/本地"
Proc->>App : 启动 dist/app.js
App->>App : initSentry()
App->>DB : connectDatabase()
DB-->>App : OK
App->>Cache : testConnection()
Cache-->>App : OK/失败
App->>Store : testConnection()
Store-->>App : OK/失败
App->>App : initWebSocket()/initQueues()
App->>Proc : 监听配置端口
Proc-->>Proc : /health 健康检查
图表来源
章节来源
关键配置项
JWT密钥、DashScope/TTS参数、数据库URL、Redis连接、OSS凭据等
flowchart TD
Start(["启动"]) --> LoadEnv["加载 .env"]
LoadEnv --> PortCfg["解析端口配置"]
PortCfg --> ModelsLoad["加载 models.json"]
ModelsLoad --> SwitchCheck{"是否需要模型切换?"}
SwitchCheck --> |是| NextModel["选择下一个可用模型"]
SwitchCheck --> |否| Ready["进入运行阶段"]
NextModel --> Ready
Ready --> End(["完成"])
图表来源
章节来源
开发环境(Docker Compose)
Nginx容器映射80:80,代理到 host.docker.internal:3000
flowchart TD
CfgStart["Nginx 配置"] --> Prod{"生产环境?"}
Prod --> |是| BT["宝塔 vhost 配置<br/>ssl_certificate/key<br/>/api -> 3100"]
Prod --> |否| Dev["Docker Compose<br/>bookapi.conf -> 3000"]
BT --> Done["生效"]
Dev --> Done
图表来源
章节来源
回滚策略
部署前自动创建备份目录,保留前后端目录,回滚时直接恢复对应备份
sequenceDiagram
participant Dev as "开发者"
participant Git as "Gogs/Gitea"
participant WH as "webhook-deploy.py"
participant Srv as "服务器"
participant Dep as "deploy-prod.sh"
participant PM2 as "PM2"
Dev->>Git : Push 代码
Git->>WH : POST webhook
WH->>WH : 校验签名
WH->>Dep : 执行部署脚本
Dep->>Srv : rsync/解压/安装依赖
Dep->>PM2 : pm2 restart server
PM2-->>Srv : 服务就绪
图表来源
章节来源
部署与运维
PM2、Nginx、宝塔、Docker、rsync、ssh、systemd
graph LR
S_PKG["server/package.json"] --> S_DEPS["后端依赖"]
F_PKG["my-uniapp-vue3/package.json"] --> F_DEPS["前端依赖"]
S_DEPS --> APP_TS["server/src/app.ts"]
S_DEPS --> CFG_TS["server/src/config/index.ts"]
CFG_TS --> MODELS["server/src/config/models.json"]
APP_TS --> PM2["PM2"]
PM2 --> NGINX["Nginx/宝塔"]
图表来源
章节来源
章节来源
章节来源
章节来源
章节来源
章节来源
章节来源
章节来源
章节来源
章节来源
通过标准化的部署脚本、清晰的配置体系与完善的自动化流程,本项目可在生产与开发环境中稳定运行。建议持续完善监控与告警、定期演练回滚流程,并在变更前进行充分的环境一致性检查,以降低发布风险。