ai-clone/部署文档.md

180 lines
4.6 KiB
Markdown
Raw Permalink Normal View History

2026-03-05 14:29:21 +08:00
# AI 克隆系统部署文档
本文档面向运维/交付人员描述后端、管理端、uni-app/小程序的部署方式。
## 1. 部署拓扑(推荐)
- 后端Spring Boot部署在一台服务器或容器对外提供 HTTP API。
- 管理端(`admin/dist`)部署为静态站点:
- 方案 ANginx 提供静态文件(推荐)
- 方案 B`pm2 serve` 提供静态文件(简化,无 Nginx
- uni-app/小程序不直接部署在服务器上(小程序发布到对应平台),只需正确配置后端 API 地址。
## 2. 后端部署Linux 服务器)
### 2.1 环境要求
- JDK**8**(与 `ai-clone/pom.xml` 保持一致)
- Maven如需在服务器编译推荐本地/CI 编译后上传 jar
- MySQL8.x或已有外部 MySQL
- 可选FFmpeg如视频合成链路依赖需以实际实现为准
### 2.2 配置准备
后端配置文件:`ai-clone/src/main/resources/application.properties`
部署前请将以下配置替换为生产值(建议通过外置配置或环境变量注入,避免明文进入代码仓库):
- `dashscope.api.key`
- `spring.datasource.*`
- `wechat.mini.*`
- `aliyun.sms.*`
- `filehosting.local.path`、`filehosting.url.prefix`
- `server.port`(默认 20002
### 2.3 打包
在项目目录 `ai-clone/` 执行:
```bash
mvn -U clean package
```
生成:`ai-clone/target/voice-cloning-1.0.0.jar`
### 2.4 运行
#### 方式 A直接运行适合临时
```bash
java -jar voice-cloning-1.0.0.jar \
--server.port=20002
```
#### 方式 B使用仓库脚本示例
仓库根目录提供了 `start.sh`(示例生产脚本),包含:
- 停止旧进程PID 文件)
- 释放端口
- 创建目录logs/static/temp/uploads 等)
- `nohup java -jar ...` 后台启动
注意:`start.sh` 中 `PROJECT_DIR`、`PORT`、`JAVA_BIN`、`SPRING_PROFILE` 需要按你的服务器实际路径/Java 版本调整。
### 2.5 端口与防火墙
- 默认端口:`20002`
- 需要在:
- 服务器防火墙
- 云厂商安全组
放行对应 TCP 端口。
### 2.6 验证
- `GET http://<host>:20002/api/voice/health`
期望返回:`{"status":"ok", ...}`
## 3. 管理端部署admin
管理端现有详细文档:
- `admin/部署说明.md`
- `admin/宝塔部署指南.md`
这里给出标准化流程(推荐 Nginx 方案)。
### 3.1 本地构建
```bash
# 进入管理端
cd admin
npm install
npm run build
```
产物目录:`admin/dist/`
### 3.2 上传
`dist/` 上传到服务器站点目录,例如:
- `/www/wwwroot/fh.admin-ai.cloud/`
### 3.3 Nginx 配置(示例)
> 说明:端口/域名/路径按实际替换。
```nginx
server {
listen 80;
server_name <admin-domain>;
root /www/wwwroot/<admin-site>/;
index index.html;
gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
location / {
try_files $uri $uri/ /index.html;
}
# 可选:同域名转发后端(避免跨域)
location /api {
proxy_pass http://127.0.0.1:20002;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
```
### 3.4 配置管理端 API 地址
管理端使用 `.env.production` 指定 `VITE_API_BASE`,但该文件当前在仓库中可能被 `.gitignore` 忽略。
部署时请确认:
- `VITE_API_BASE=http(s)://<backend-host>:20002`
若采用 Nginx 同域 `/api` 反代,则可配置为相对路径:
- `VITE_API_BASE=/api`
## 4. uni-app / 小程序frontend-ai
### 4.1 API 地址配置
配置文件:`frontend-ai/config/api.js`
- 开发/生产环境的 `API_BASE` 可切换
- 说明文档:`frontend-ai/config/README.md`
### 4.2 打包发布
按 uni-app / HBuilderX 的标准流程:
- 小程序:构建后上传微信公众平台审核发布
- App云打包/本地打包发布
服务器侧只需保证:
- 后端域名/端口可访问
- HTTPS如小程序要求
## 5. 常见问题与排障
- **页面刷新 404管理端 SPA**
- Nginx 需配置:`try_files $uri $uri/ /index.html;`
- **API 请求失败**
- 检查后端是否启动、端口是否放行、域名解析是否正确
- 若跨域:检查后端 CORS 或通过 Nginx 反代统一域
- **后端静态资源无法访问**
- 检查 `spring.web.resources.static-locations`、`filehosting.local.path` 与服务器实际目录一致
- **配置泄露风险**
- 生产环境请移除/替换明文 Key、数据库密码并通过环境变量或外置配置管理