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