ai-chatbot/docs/pascal-production-deployment.md

4.1 KiB
Raw Permalink Blame History

Pascal Editor 可复用生产部署

Pascal Editor 的定制源码位于主仓库 services/pascal-editor,以独立 Bun/Next.js 服务运行,并通过主站 Nginx 同域挂载。新服务器只需拉取 主仓库,无需再克隆或维护 Pascal 独立分支。

默认结构

项目 默认值
主站源码 当前仓库目录
Pascal 内置源码 services/pascal-editor
Pascal 运行副本 /opt/pascal-editor
Pascal 用户数据 /var/lib/pascal-editor
主站 PM2 服务 ai-chatbot
Pascal PM2 服务 pascal-editor
Pascal 监听 127.0.0.1:3002
同域路径 /pascal-service

/opt/pascal-editor 是部署脚本生成的运行副本,不是第二个源码仓库, 不应在该目录直接修改代码。Pascal 端口不对公网开放。Nginx 先通过 /api/internal/pascal/access 校验主站登录 Cookie,再注入可信用户 ID。 场景数据按 ownerId 隔离。

首次部署

目标服务器部署好主站后执行:

cd /var/www/ai-chatbot
git pull --ff-only origin main

sudo env \
  PASCAL_PUBLIC_ORIGIN=https://example.com \
  NGINX_SITE_CONFIG=/etc/nginx/sites-enabled/example.com.conf \
  pnpm pascal:deploy

脚本会按顺序:

  1. 生成或复用 PASCAL_PROXY_SECRET,写入主站 .env.local。
  2. 安装主站开发依赖,构建并重启主站。
  3. 安装固定版本 Bun(默认 1.3.0)和 rsync。
  4. 将 services/pascal-editor 同步为独立运行副本。
  5. 写入仅 root 可读的 Pascal 生产环境文件。
  6. 安装依赖、构建 Pascal,并注册 PM2 服务。
  7. 渲染 Nginx 片段,校验成功后热重载。
  8. 检查主站、Pascal、Agent 状态和主站模型网关。

主站环境文件、Nginx 配置以及旧 Pascal Git 元数据会备份到 /var/backups/pascal-deploy。Nginx 校验失败时会恢复原配置。

日常更新

以后只需更新主仓库,并重复执行部署命令:

git pull --ff-only origin main
sudo env PASCAL_PUBLIC_ORIGIN=https://example.com pnpm pascal:deploy

rsync --delete 会更新运行副本,但保留 /opt/pascal-editor/.env.production。 用户数据始终位于独立的 PASCAL_DATA_DIR,不会被代码同步覆盖。

只做无模型费用的健康检查:

sudo env PASCAL_PUBLIC_ORIGIN=https://example.com pnpm pascal:check

执行一次真实自然语言建模,验证节点落库后删除临时场景:

sudo env PASCAL_SMOKE_CONFIRM=1 pnpm pascal:smoke

真实冒烟会调用系统设置中显式标记的“多模态模型”,默认不在一键部署 时执行。需要每次部署自动执行时设置 RUN_AGENT_SMOKE_TEST=true。

常用覆盖项

环境变量 用途
MAIN_APP_DIR 主站源码目录
MAIN_ENV_FILE 主站环境文件
MAIN_PM2_NAME 主站 PM2 服务名
MAIN_INTERNAL_URL Pascal 调用主站网关的地址
MAIN_NGINX_UPSTREAM Nginx 主站 upstream
BUILD_MAIN_APP=false 跳过主站安装、构建和重启
PASCAL_SOURCE_DIR Pascal 内置源码目录
PASCAL_INSTALL_DIR Pascal 运行副本目录
PASCAL_DATA_DIR SQLite 用户数据目录
PASCAL_PORT Pascal 本地监听端口
PASCAL_BASE_PATH 同域挂载路径
PASCAL_PUBLIC_ORIGIN 公网主站 Origin,不带末尾斜杠
NGINX_SITE_CONFIG 需加入 Pascal include 的 HTTPS server 配置
INSTALL_NGINX=false 仅部署服务,不修改 Nginx
PASCAL_BUN_VERSION 固定 Bun 版本
PASCAL_BACKUP_DIR 环境与 Nginx 配置备份目录

PASCAL_PUBLIC_ORIGIN 会同时写入 Pascal 的场景 API 允许来源,用于正确 识别 Nginx 后的 HTTPS 同域请求,不应配置为 *。

运行维护

pm2 status
pm2 logs pascal-editor --lines 100
curl http://127.0.0.1:3002/pascal-service/api/health
cat /opt/pascal-editor/.pascal-source-version
nginx -t

不要将本地测试数据库放进 services/pascal-editor,也不要直接修改 /opt/pascal-editor。代码只更新主仓 main,用户场景只保存在 PASCAL_DATA_DIR。