Files
platform-pipi/packages/voice-production/docs/Ubuntu服务器部署.md
T
2026-02-09 13:30:43 +08:00

5.6 KiB
Raw Blame History

voice-production 部署到 Ubuntu 云服务器

voice-production 的静态资源(voice、char、后续图片)部署到 Ubuntu,用 Nginx 提供访问并绑定二级域名。


一、服务器准备

1. 安装 Nginx

sudo apt update
sudo apt install nginx -y
sudo systemctl enable nginx
sudo systemctl start nginx

2. 安装 Node.js 与 pnpm(用于在服务器上执行部署脚本)

若你打算在服务器上跑 deploy-assets 和后续的生成脚本,需要 Node

# Node 20 LTS(推荐)
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt install -y nodejs

# pnpm
sudo npm install -g pnpm

若你只打算从本机把已生成好的 pipi-assets 同步到服务器,可跳过 pnpm,但至少保留 Node 以便将来在服务器上跑脚本。

3. 创建资源目录(若用脚本部署会自动创建,也可先建)

sudo mkdir -p /var/www/pipi-assets
sudo chown $USER:$USER /var/www/pipi-assets

二、部署方式(二选一)

方式 A:在服务器上拉代码并执行部署脚本(推荐)

适合:代码已在 Git 仓库,服务器能访问仓库。

1. 在服务器上克隆/拉取项目

# 进入你放项目的目录,例如
cd /var/www
sudo git clone <你的仓库地址> pipi-learn
cd pipi-learn/platform-pipi/packages/voice-production
# 若已存在目录则只拉取
# git pull

2. 安装依赖并执行部署

pnpm install
pnpm run deploy-assets:server

会把 data/ 下内容拷贝到 /var/www/pipi-assets/,并在当前目录生成 scripts/nginx-pipi-assets.conf

3. 把 Nginx 配置放到系统目录并启用

# 若需改二级域名,先编辑 scripts/nginx-pipi-assets.conf 里的 server_name
sudo cp scripts/nginx-pipi-assets.conf /etc/nginx/sites-available/pipi-assets
sudo ln -sf /etc/nginx/sites-available/pipi-assets /etc/nginx/sites-enabled
sudo nginx -t && sudo systemctl reload nginx

4. 配置 DNS

在域名服务商处为二级域名(如 assets.yourdomain.com)添加 A 记录,指向该云服务器的公网 IP。

5.(可选)HTTPS

sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d assets.yourdomain.com

按提示选择即可,证书会自动写入 Nginx 配置。


方式 B:本机生成后同步到服务器

适合:在本地生成 voice/char,只把静态文件上传到服务器。

1. 本机生成并拷贝到“服务器目标结构”

在 Mac 上:

cd platform-pipi/packages/voice-production
pnpm run deploy-assets:local   # 生成 pipi-assets/

2. 把 pipi-assets 同步到服务器

rsync -avz --delete ./pipi-assets/ 用户名@服务器IP:/var/www/pipi-assets/

若服务器上 /var/www/pipi-assets 需要 sudo,可先同步到用户目录再在服务器上移动:

rsync -avz --delete ./pipi-assets/ 用户名@服务器IP:~/pipi-assets/
# 登录服务器后
ssh 用户名@服务器IP
sudo rm -rf /var/www/pipi-assets/* && sudo cp -r ~/pipi-assets/* /var/www/pipi-assets/

3. 在服务器上准备 Nginx 配置

  • 要么在服务器上拉取一遍 voice-production 代码,执行一次 pnpm run deploy-assets:server,只为了生成 scripts/nginx-pipi-assets.conf,再按方式 A 第 3 步拷贝并启用;
  • 要么在本机生成配置后上传。本机执行:
node scripts/deploy-assets.js --target /var/www/pipi-assets --nginx ./scripts/nginx-pipi-assets.conf

把生成的 scripts/nginx-pipi-assets.conf 用 scp 传到服务器,再在服务器上:

sudo cp nginx-pipi-assets.conf /etc/nginx/sites-available/pipi-assets
sudo ln -sf /etc/nginx/sites-available/pipi-assets /etc/nginx/sites-enabled

4. 修改配置里的 server_name(若尚未改)

sudo nano /etc/nginx/sites-available/pipi-assets
# 将 server_name assets.yourdomain.com; 改为你的二级域名

5. 测试并重载 Nginx

sudo nginx -t && sudo systemctl reload nginx

DNS 与 HTTPS 步骤同方式 A 的 4、5。


三、修改二级域名

生成的 nginx-pipi-assets.conf 里默认是 server_name assets.yourdomain.com;

  • 方式 A:在服务器上编辑 scripts/nginx-pipi-assets.conf 再拷贝到 /etc/nginx/sites-available/,或直接编辑 /etc/nginx/sites-available/pipi-assets
  • 方式 B:本机生成配置后编辑再上传,或在服务器上编辑 /etc/nginx/sites-available/pipi-assets

改完后执行:

sudo nginx -t && sudo systemctl reload nginx

四、后续更新资源

  • 方式 A:在服务器上进入 voice-production 目录,执行 git pull,再执行 pnpm run deploy-assets:server;若在服务器上跑生成脚本,先 pnpm run generate-voice 等再执行 deploy-assets:server
  • 方式 B:本机重新生成/拷贝后,再执行一次 rsync 同步到服务器。

五、常用命令速查

说明 命令
测试 Nginx 配置 sudo nginx -t
重载 Nginx sudo systemctl reload nginx
查看 Nginx 状态 sudo systemctl status nginx
查看站点日志 sudo tail -f /var/log/nginx/access.log

六、验证

  • 健康检查:https://你的二级域名/health 应返回 ok
  • 角色 JSONhttps://你的二级域名/char/char_introduce.json 应返回 JSON。
  • 语音:https://你的二级域名/voice/xxx.mp3 应能播放或下载。