Files
bigwo/test2/DEPLOY_BAOTA.md
2026-03-12 12:47:56 +08:00

202 lines
4.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 宝塔面板部署指南 — 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 密码** 生产环境务必使用强密码