Files
bigwo/test2/DEPLOY_BAOTA.md

202 lines
4.9 KiB
Markdown
Raw Permalink Normal View History

2026-03-12 12:47:56 +08:00
# 宝塔面板部署指南 — BigWo 语音/文字聊天
> 域名: `demo.tensorgrove.com.cn`
> 系统: TencentOS 4
> 架构: Nginx + Node.js + MySQL
---
## 一、宝塔面板准备
### 1.1 安装必要软件(宝塔 → 软件商店)
- **Nginx**(一般已安装)
- **MySQL 5.7 / 8.0**
- **PM2 管理器**(软件商店搜索 "PM2",一键安装)
### 1.2 安装 Node.jsPM2 管理器 → 设置 → 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 密码** 生产环境务必使用强密码