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

3.9 KiB
Raw Blame History

Pascal Editor 可复用生产部署

本项目把 Pascal Editor 作为独立 Bun/Next.js 服务运行,并通过主站 Nginx 同域挂载。部署脚本会复用主站登录态、系统设置中显式标记的“多模态模型”和主站 Git 仓库里的 pascal-editor-ai-agent 独立分支。

默认结构

项目 默认值
主站目录 当前仓库目录
主站 PM2 服务 ai-chatbot
主站内部地址 http://127.0.0.1:3125
Pascal 源码 /opt/pascal-editor
Pascal 数据 /var/lib/pascal-editor
Pascal PM2 服务 pascal-editor
Pascal 监听 127.0.0.1:3002
同域路径 /pascal-service
Pascal Git 分支 pascal-editor-ai-agent

Pascal 端口不对公网开放。Nginx 会先通过主站 /api/internal/pascal/access 校验登录 Cookie,再把可信用户 ID 注入 Pascal。 场景的创建、列表、读取、保存、删除、事件流和 AI Agent 都检查同一个 ownerId。

首次部署

在目标服务器先部署好主站并确认主站 Git remote 能读取 pascal-editor-ai-agent 分支,然后执行:

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)。
  4. 克隆或快进 Pascal 独立分支。
  5. 写入仅 root 可读的 Pascal 生产环境文件。
  6. 安装依赖、构建 Pascal,并注册 PM2 服务。
  7. 渲染 Nginx 片段、执行 nginx -t,成功后热重载。
  8. 检查主站、Pascal、Agent 状态和主站模型网关。

主站环境文件和 Nginx 配置会备份到 /var/backups/pascal-deploy。Nginx 校验失败时,脚本会立即恢复执行前的配置。

日常更新

主站和 Pascal 分支有新提交后,重复执行同一个命令即可。脚本只允许 Git 快进更新;如果 /opt/pascal-editor 有本地修改,会停止部署,不会覆盖现场 文件。

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

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,例如 127.0.0.1:3125
BUILD_MAIN_APP=false 跳过主站安装、构建和重启
PASCAL_INSTALL_DIR Pascal 源码目录
PASCAL_DATA_DIR SQLite 数据目录
PASCAL_GIT_REPO Pascal 分支所在 Git 仓库;默认使用主站 origin
PASCAL_GIT_REF Pascal 分支或标签
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 配置备份目录

运行维护

pm2 status
pm2 logs pascal-editor --lines 100
curl http://127.0.0.1:3002/pascal-service/api/health
nginx -t

升级时不要把主站源码复制到 Pascal 目录,也不要把本地测试数据库上传到 服务器。主站始终更新 main,Pascal 始终更新独立分支,用户场景只保存在 PASCAL_DATA_DIR。