|
|
9b6d946344
|
chore(deploy): 加生产部署方案脚本(check/backup/deploy/rollback 四段)
## 为什么需要
生产二进制是 **`-tags=onnxruntime`** 构建(86.5MB,.rodata 62.5MB),
而普通 `go build` 只有 37MB —— 差的是 ONNX Runtime 绑定。
`deploy/packaging/package-linux.sh:139` 会显式拒绝非 onnxruntime 构建:
if ! go version -m "$homed_bin" | grep -Eq 'build[[:space:]]+-tags=.*onnxruntime'; then
echo "ERROR: homed 不是 onnxruntime 构建,拒绝打 server/full 包" >&2
也就是说:**用错构建方式部署,依存句法分析与多模态向量化会静默失效**。
这个坑我自己踩过一次(拿普通构建去比体积,才发现的),所以脚本第一步
就卡这个判据。
## 四个动作
- `check` 只读检查:服务状态、onnxruntime 标签、libonnxruntime.so、
模型资产、适配器清单。**不改任何东西**,可随时跑
- `backup` 备份二进制 + 适配器 + unit 文件,并**生成 ROLLBACK.sh**
- `deploy` check → 人工确认(输入 yes)→ 备份 → install -m 0755 原子替换
→ 重启 → 8 秒后验活;失败时打印回滚命令与 journalctl
- `rollback` 用最近一次备份回滚
## 刻意不做自动回滚
回滚要不要做、什么时候做,是人的判断。脚本只负责把状态保全好,
让回滚成为一条**可执行**的命令,而不是一个自动决策。
## 部署不会碰的东西(已在 check 里显式打印)
- **适配器文件**:`d3eaff4` 的新逻辑在「无历史清单」时不动任何已存在的文件,
所以生产的 10 个 .lua 保持原样(含那个已含 stream_index 的 openai.lua)
- **数据目录**:51G 的 models/ 与配置都不动,部署只换二进制
|
2026-09-27 19:11:41 +08:00 |
|