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

4.9 KiB
Raw Permalink Blame History

宝塔面板部署指南 — 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 安装依赖(宝塔 → 终端)

# 后端依赖
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 配置:

MYSQL_HOST=localhost
MYSQL_PORT=3306
MYSQL_USER=bigwo
MYSQL_PASSWORD=你设置的密码
MYSQL_DATABASE=bigwo_chat

同时更新 FC 回调地址:

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 / {} 之前):

    # ===== 后端 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 回退(宝塔默认没有,需手动加):

    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命令行

cd /www/wwwroot/demo.tensorgrove.com.cn
pm2 start ecosystem.config.js
pm2 save
pm2 startup

六、验证

6.1 检查后端

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

七、常用运维命令

# 查看后端日志
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 密码 生产环境务必使用强密码