# 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` 分支,然后执行: ```bash 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` 有本地修改,会停止部署,不会覆盖现场 文件。 只做无模型费用的健康检查: ```bash sudo env \ PASCAL_PUBLIC_ORIGIN=https://example.com \ pnpm pascal:check ``` 执行一次真实自然语言建模、验证节点已落库并自动删除临时场景: ```bash 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 配置备份目录 | ## 运行维护 ```bash 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`。