117 lines
4.1 KiB
Markdown
117 lines
4.1 KiB
Markdown
# 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` 隔离。
|
||
|
||
## 首次部署
|
||
|
||
目标服务器部署好主站后执行:
|
||
|
||
```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`)和 `rsync`。
|
||
4. 将 `services/pascal-editor` 同步为独立运行副本。
|
||
5. 写入仅 root 可读的 Pascal 生产环境文件。
|
||
6. 安装依赖、构建 Pascal,并注册 PM2 服务。
|
||
7. 渲染 Nginx 片段,校验成功后热重载。
|
||
8. 检查主站、Pascal、Agent 状态和主站模型网关。
|
||
|
||
主站环境文件、Nginx 配置以及旧 Pascal Git 元数据会备份到
|
||
`/var/backups/pascal-deploy`。Nginx 校验失败时会恢复原配置。
|
||
|
||
## 日常更新
|
||
|
||
以后只需更新主仓库,并重复执行部署命令:
|
||
|
||
```bash
|
||
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`,不会被代码同步覆盖。
|
||
|
||
只做无模型费用的健康检查:
|
||
|
||
```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 |
|
||
| `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 同域请求,不应配置为 `*`。
|
||
|
||
## 运行维护
|
||
|
||
```bash
|
||
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`。
|