diff --git a/docs/20260830_SERVER_B_AUTOSTART_RELEASE_REPORT.md b/docs/20260830_SERVER_B_AUTOSTART_RELEASE_REPORT.md new file mode 100644 index 0000000..19e766c --- /dev/null +++ b/docs/20260830_SERVER_B_AUTOSTART_RELEASE_REPORT.md @@ -0,0 +1,29 @@ +# Server B 开机自启发布报告(2026-08-30) + +## 结论 + +- 代码提交:`406b374`。 +- systemd 项目编组:`lisglosips.target`,状态 `active / enabled`。 +- 开机验收:`lisglosips-boot-check.service`,状态 `active (exited) / enabled`,最近执行结果 `0/SUCCESS`。 +- 配置备份:`/var/backups/lisglosips-s58/20260830T131241Z`。 +- 本次未重启服务器,未中断现有通话服务;真正的冷启动验收应安排维护窗口。 + +## 本次补齐 + +- `lisglosips@recording-worker.service`:由 `inactive / disabled` 修正为 `active / enabled`。 +- `lisglosips@config-publisher.service`:由 `inactive / disabled` 修正为 `active / enabled`。 +- API、CDR Worker 两个实例继续保持 `active / enabled`。 +- 备份 timer 和录音整理 timer 继续保持 `active / enabled`。 + +## 现场验证 + +- API `/api/v2/health/ready`:`status=ok`,数据库和 Redis 检查正常。 +- Nginx 配置、OpenSIPS 配置和发布 preflight:通过。 +- systemd failed units:0。 +- Recording Worker:本机录音模式启动成功,当前内存约 22 MB,重启次数 0。 +- Config Publisher:启动成功,当前内存约 29 MB、峰值约 39 MB,重启次数 0。 +- Config Publisher 的 Redis 用户仍无 `INFO` 权限,因此 ioredis 会输出“跳过 ready check”的提示;实际 Redis 连接和 Worker 启动成功,此提示不阻断服务,但后续可单独收敛日志或关闭 ready check。 + +## 架构说明 + +业务进程仍由独立 systemd unit 托管,项目 target 仅负责统一编组和开机拉起,启动脚本负责就绪等待与验收。这比 `rc.local`、`nohup` 或单个常驻 shell 脚本更符合生产环境常见做法。 diff --git a/scripts/build-release-artifact.mjs b/scripts/build-release-artifact.mjs index 2b07ba8..bac3a5b 100644 --- a/scripts/build-release-artifact.mjs +++ b/scripts/build-release-artifact.mjs @@ -73,6 +73,8 @@ const copyEntries = [ ['infra/server-b/s30', 'infra/server-b/s30', true], ['infra/server-b/s56', 'infra/server-b/s56', true], ['infra/server-b/s57', 'infra/server-b/s57', true], + ['infra/server-b/s58', 'infra/server-b/s58', true], + ['infra/ops/startup/lisglosips-start-b.sh', 'infra/ops/startup/lisglosips-start-b.sh', true], ['infra/server-a/s28/lisglosips_hotpath.lua', 'infra/server-a/s28/lisglosips_hotpath.lua', true], ['scripts/phase2-gateway-migration.mjs', 'scripts/phase2-gateway-migration.mjs', true], ['scripts/import-number-library.mjs', 'scripts/import-number-library.mjs', true]