Update code
This commit is contained in:
201
test2/DEPLOY_BAOTA.md
Normal file
201
test2/DEPLOY_BAOTA.md
Normal file
@@ -0,0 +1,201 @@
|
||||
# 宝塔面板部署指南 — BigWo 语音/文字聊天
|
||||
|
||||
> 域名: `demo.tensorgrove.com.cn`
|
||||
> 系统: TencentOS 4
|
||||
> 架构: Nginx + Node.js + MySQL
|
||||
|
||||
---
|
||||
|
||||
## 一、宝塔面板准备
|
||||
|
||||
### 1.1 安装必要软件(宝塔 → 软件商店)
|
||||
- **Nginx**(一般已安装)
|
||||
- **MySQL 5.7 / 8.0**
|
||||
- **PM2 管理器**(软件商店搜索 "PM2",一键安装)
|
||||
|
||||
### 1.2 安装 Node.js(PM2 管理器 → 设置 → Node 版本)
|
||||
- 选择 **Node.js 20.x** 安装
|
||||
|
||||
---
|
||||
|
||||
## 二、上传项目文件
|
||||
|
||||
### 2.1 上传
|
||||
宝塔 → 文件 → 进入 `/www/wwwroot/`,创建文件夹 `demo.tensorgrove.com.cn`
|
||||
|
||||
将本地 `test2` 项目中的以下内容上传到 `/www/wwwroot/demo.tensorgrove.com.cn/`:
|
||||
```
|
||||
demo.tensorgrove.com.cn/
|
||||
├── client/ ← 整个前端目录
|
||||
├── server/ ← 整个后端目录
|
||||
└── ecosystem.config.js
|
||||
```
|
||||
|
||||
> 可以用宝塔文件管理器直接上传压缩包,然后解压
|
||||
|
||||
### 2.2 安装依赖(宝塔 → 终端)
|
||||
|
||||
```bash
|
||||
# 后端依赖
|
||||
cd /www/wwwroot/demo.tensorgrove.com.cn/server
|
||||
npm install --production
|
||||
npm install mysql2
|
||||
|
||||
# 前端依赖 & 构建
|
||||
cd /www/wwwroot/demo.tensorgrove.com.cn/client
|
||||
npm install
|
||||
npm run build
|
||||
```
|
||||
|
||||
构建完成后 `client/dist/` 目录就是前端静态文件。
|
||||
|
||||
---
|
||||
|
||||
## 三、配置 MySQL
|
||||
|
||||
### 3.1 创建数据库
|
||||
宝塔 → 数据库 → 添加数据库:
|
||||
- 数据库名: `bigwo_chat`
|
||||
- 用户名: `bigwo`
|
||||
- 密码: 自己设置(记住)
|
||||
- 权限: 本地服务器
|
||||
|
||||
### 3.2 修改 .env
|
||||
编辑 `/www/wwwroot/demo.tensorgrove.com.cn/server/.env`,更新 MySQL 配置:
|
||||
|
||||
```env
|
||||
MYSQL_HOST=localhost
|
||||
MYSQL_PORT=3306
|
||||
MYSQL_USER=bigwo
|
||||
MYSQL_PASSWORD=你设置的密码
|
||||
MYSQL_DATABASE=bigwo_chat
|
||||
```
|
||||
|
||||
**同时更新 FC 回调地址:**
|
||||
```env
|
||||
FC_SERVER_URL=https://demo.tensorgrove.com.cn/api/voice/fc_callback
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 四、宝塔添加站点
|
||||
|
||||
### 4.1 添加站点
|
||||
宝塔 → 网站 → 添加站点:
|
||||
- 域名: `demo.tensorgrove.com.cn`
|
||||
- 根目录: `/www/wwwroot/demo.tensorgrove.com.cn/client/dist`
|
||||
- PHP 版本: **纯静态**
|
||||
- 数据库: 不创建(已在上一步创建)
|
||||
|
||||
### 4.2 申请 SSL 证书
|
||||
网站 → `demo.tensorgrove.com.cn` → SSL → Let's Encrypt:
|
||||
- 勾选域名 → 申请
|
||||
- 开启 **强制 HTTPS**
|
||||
|
||||
### 4.3 配置 Nginx 反向代理
|
||||
网站 → `demo.tensorgrove.com.cn` → 配置文件
|
||||
|
||||
找到 `server {}` 块,在已有的配置中**添加以下内容**(放在 `location / {}` 之前):
|
||||
|
||||
```nginx
|
||||
# ===== 后端 API 反向代理 =====
|
||||
location /api/ {
|
||||
proxy_pass http://127.0.0.1:3012;
|
||||
proxy_http_version 1.1;
|
||||
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;
|
||||
|
||||
# SSE 流式输出支持(文字聊天)
|
||||
proxy_set_header Connection '';
|
||||
proxy_buffering off;
|
||||
proxy_cache off;
|
||||
proxy_read_timeout 300s;
|
||||
proxy_send_timeout 300s;
|
||||
}
|
||||
|
||||
# 静态资源长缓存
|
||||
location /assets/ {
|
||||
expires 1y;
|
||||
add_header Cache-Control "public, immutable";
|
||||
}
|
||||
```
|
||||
|
||||
确保 `location / {}` 块中有 SPA 回退(宝塔默认没有,需手动加):
|
||||
```nginx
|
||||
location / {
|
||||
try_files $uri $uri/ /index.html;
|
||||
}
|
||||
```
|
||||
|
||||
保存后点击 **保存** 按钮(宝塔会自动 reload Nginx)。
|
||||
|
||||
---
|
||||
|
||||
## 五、PM2 启动后端
|
||||
|
||||
### 方式 A:宝塔 PM2 管理器(推荐)
|
||||
软件商店 → PM2 管理器 → 设置 → 添加项目:
|
||||
- 项目路径: `/www/wwwroot/demo.tensorgrove.com.cn/server`
|
||||
- 启动文件: `app.js`
|
||||
- 项目名称: `demo.tensorgrove.com.cn-server`
|
||||
|
||||
### 方式 B:命令行
|
||||
```bash
|
||||
cd /www/wwwroot/demo.tensorgrove.com.cn
|
||||
pm2 start ecosystem.config.js
|
||||
pm2 save
|
||||
pm2 startup
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 六、验证
|
||||
|
||||
### 6.1 检查后端
|
||||
```bash
|
||||
curl http://127.0.0.1:3012/api/voice/config
|
||||
# 应返回 JSON 配置
|
||||
```
|
||||
|
||||
### 6.2 检查前端
|
||||
浏览器访问 `https://demo.tensorgrove.com.cn`
|
||||
|
||||
### 6.3 检查 API 代理
|
||||
浏览器访问 `https://demo.tensorgrove.com.cn/api/voice/config`
|
||||
|
||||
### 6.4 检查 FC 回调
|
||||
火山引擎 RTC 控制台的 FC 回调地址更新为:
|
||||
```
|
||||
https://demo.tensorgrove.com.cn/api/voice/fc_callback
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 七、常用运维命令
|
||||
|
||||
```bash
|
||||
# 查看后端日志
|
||||
pm2 logs demo.tensorgrove.com.cn-server
|
||||
|
||||
# 重启后端
|
||||
pm2 restart demo.tensorgrove.com.cn-server
|
||||
|
||||
# 重新构建前端
|
||||
cd /www/wwwroot/demo.tensorgrove.com.cn/client
|
||||
npm run build
|
||||
|
||||
# 查看 Nginx 错误日志
|
||||
tail -f /www/wwwlogs/demo.tensorgrove.com.cn.error.log
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 八、注意事项
|
||||
|
||||
1. **域名 DNS 解析**:确保 `demo.tensorgrove.com.cn` A 记录指向服务器公网 IP
|
||||
2. **防火墙**:宝塔 → 安全 → 放行端口 80、443(一般默认已放行)
|
||||
3. **端口 3012 不需要对外开放**,Nginx 内部转发即可
|
||||
4. **FC_SERVER_URL** 必须改为 `https://demo.tensorgrove.com.cn/api/voice/fc_callback`(不再用 ngrok)
|
||||
5. **MySQL 密码** 生产环境务必使用强密码
|
||||
Reference in New Issue
Block a user