记录初始化探针修复和Linux正式升级验收结果
This commit is contained in:
parent
c1ac3e91c0
commit
bcd7310f92
@ -218,3 +218,70 @@
|
||||
- [!] 干净克隆位于 `C:/Users/ikun/AppData/Local/Temp/scert-state-20260917-1532`。调用仓库发布脚本时被 PowerShell 执行策略拒绝,未绕过策略,未生成或上传本次新发布包。此前 `8c3d878` 发布包不包含本次停服检查修复,不能用于宣称最新版本验收。
|
||||
- [✓] 15:32 收尾核查:测试 unit 为 inactive、PID 零、结果 success;正式 Scert PID `530794`、重启次数零,MySQL PID `549584`、重启次数一,正式程序摘要未变。可用内存约 320 MiB,19017 无监听,SSH 随后关闭。
|
||||
- [!] 正式初始化、维护窗口内停服升级、业务回退、DNS 与 ACME、目标机业务推送及最终入口仍未验收。继续需要发布脚本按本机管理策略获准执行,并确认维护窗口、域名及 DNS 操作范围、与既有 Smail 不冲突的入口方案。
|
||||
|
||||
## 初始化探针修复与正式升级复验(2026-09-17 晚间)
|
||||
|
||||
### 需求与结论
|
||||
|
||||
- [✓] 接续升级后的在用服务,核对 HTTPS 身份、健康与就绪状态。
|
||||
- [✓] 修复首次初始化阶段健康探针缺失,保持未初始化就绪门禁。
|
||||
- [✓] 干净提交构建、发布包校验、Linux 隔离协议及正式停服升级。
|
||||
- [✓] 升级前后受保护文件一致性、完整快照及独立目录解包验证。
|
||||
- [!] 正式初始化、公共信任证书、外部入口、业务推送与真实故障回退仍未通过,不能正式切流。
|
||||
|
||||
### 缺陷与本地验证
|
||||
|
||||
接手时正式进程 PID 为 `570938`,监听 `127.0.0.1:9004`,处于新的 Bootstrap HTTPS 模式。通过当前 systemd 启动日志取得指纹,核对网络证书后,再使用该证书作为专用信任根检查证书名称和有效期。页面与状态接口返回 200,设置接口返回 401,但 `/healthz` 和 `/readyz` 均为 404。旧记录中的 HTTP 503 不适用于这个新启动链路。
|
||||
|
||||
修改前检查点 `48c2996` 已推送;首次推送认证失败,重试成功。修复提交 `c1ac3e91c07447243ead56fb0d8eca0b6ca8a938` 已推送,仅修改 Bootstrap 处理器及测试。新增回归先复现两个 404,再验证健康返回 200、就绪返回 503 和 `setup_incomplete`,拒绝错误方法,不缓存、不创建会话,也不提前打开业务数据库。
|
||||
|
||||
以下本地验证均通过:
|
||||
|
||||
```text
|
||||
go test -p 1 -count=1 -timeout=3m ./...
|
||||
go test -count=1 -timeout=3m ./internal/bootstrap ./internal/httpapi
|
||||
go test -race -count=1 -timeout=3m ./internal/bootstrap
|
||||
go vet -p=1 ./internal/bootstrap ./internal/httpapi
|
||||
npm test
|
||||
git diff --check
|
||||
```
|
||||
|
||||
前端共 47 项通过。本轮没有修改前端,也没有重新进行浏览器渲染验收;没有执行新的全量竞态检查或漏洞扫描。
|
||||
|
||||
### 发布与隔离实机
|
||||
|
||||
从独立干净克隆构建,发布清单为 `source_dirty=false`,工具链 Go 1.26.6。首次因克隆缺少前端依赖而构建失败,保留失败目录;执行锁定依赖安装后改用全新输出目录构建成功。
|
||||
|
||||
- 本地归档:`build/linux-health-20260917-2205/Scert-20260917-V0.1.0-linux-amd64.tar.gz`。
|
||||
- 归档 SHA-256:`b44f5b2a1125af08fd15356477f25ea4e17f8cf3a29d4f07ccbe8d63467d76b0`。
|
||||
- 主程序 SHA-256:`b91c1a88382b29b6016488e340087cb25a205f684273c0d10d473803b10b9a41`。
|
||||
- 本地清单 14 项、远端包内 12 项均核对通过。目录时间后缀是标识,不代表实际执行时间。
|
||||
|
||||
远端脚本及包位于 `/scert/acceptance-20260917-1044/`,最终隔离目录为 `health-c1ac3e9-v2`。候选限制内存 96 MiB、无 Swap、CPU 25%、32 任务,使用全新 SQLite 路径与私有运行目录,监听回环 19017。通过项包括 HTTPS 指纹与完整验证、新探针、构建资源、未登录拒绝、跨域拒绝、一次性令牌、安全 Cookie、SQLite 写权限、缺少 DNS 验证拒绝提交、重启证书及令牌轮换、旧会话失效、配置字节不变。
|
||||
|
||||
第一次协议检查通过后,附加断言错误地要求 SQLite 文件不存在。实际写权限测试会留下空数据库,现场查询无业务表且完整性正常;修正测试断言后,在新目录重跑全部通过,退出码零。没有为通过测试而修改业务实现,也没有删除第一轮产物。
|
||||
|
||||
同一源码交叉编译的 Bootstrap 测试程序在 Linux 执行,探针、路由隔离和取消清理通过。另执行 `TestHTTPSBootstrapCompletesSQLiteAndStartsApplication` 的两个场景,严格 TLS、SQLite 初始化、正式服务切换、登录、用户接口及夹具 `/readyz=200` 全部通过。两组受限测试峰值内存分别约 52.4 MiB 和 53.4 MiB。该集成夹具不执行真实云端 DNS 或 ACME,不能替代在用服务初始化。
|
||||
|
||||
### 备份与正式升级
|
||||
|
||||
21:50 左右核验此前快照 `/var/backups/scert-pre-upgrade-20260917-211804/snapshot.tar.gz`,SHA-256 为 `a9ba56f7e7e9dd3f6ac2ae2b13d11f00a3ae5ff7a749493aa09d52f99a198288`。配置、凭据、密钥和 SQLite 与快照逐项一致,业务数据库只读完整性检查为 `ok`。之后解包至全新 `0700` 目录 `/var/backups/scert-restore-check-c1ac3e9`,29 个文件与归档逐项一致,恢复副本 SQLite 完整性正常。未启动恢复副本,不把文件恢复验证称为完整业务回退。
|
||||
|
||||
约 22:00 正式更新到 `c1ac3e9` 前,再次停止 Scert 并创建完整快照 `/var/backups/scert-pre-health-c1ac3e9/snapshot.tar.gz`,逐文件核对通过,SHA-256 为 `7d6c39afbd43cb22ae95a98f94b5a2a4042aa86057b7ce7623698569c1e1bac9`。快照目录权限 0700,文件按 0600 创建。安装器退出码零,主程序摘要与新包一致,随后启动正式服务。
|
||||
|
||||
升级脚本检查以下结果全部通过:
|
||||
|
||||
- 正式 Scert 为 active/running,PID `572525`,重启次数零。
|
||||
- 当前进程证书与可信 SSH 日志指纹一致,随后完整 TLS 验证下 `/healthz=200`、`/readyz=503 setup_incomplete`。
|
||||
- Bootstrap 状态与页面 200,未登录设置 401,业务用户接口 404。
|
||||
- 配置、数据库、密钥及证书文件的内容、权限、UID/GID 升级前后完全一致。
|
||||
- MySQL PID `549584`、重启次数一,与升级前一致;443 的 Smail PID `570415` 不变。
|
||||
- 所有本轮候选测试已停止,没有清空正式数据库、修改 DNS 或操作推送目标机。
|
||||
|
||||
### 剩余生产门槛
|
||||
|
||||
本轮正常 TLS 连接正式 ACME 目录已返回 HTTP 200,证书验证结果为零,旧的出站超时暂未复现;这仅证明当时目录连接成功,不代表签发成功或网络长期稳定。
|
||||
|
||||
在用配置仍是 `setup_ready=false`,后台域名仍为 `scert-accept-20260914.epwn.uno`,未对其发起签发。下一步需要用户明确管理域名、对应 DNS 写入和精确清理授权,以及不影响 Smail 443 的入口与维护范围,才能继续正式初始化、生产签发、外部 HTTPS/SNI、浏览器登录及真实业务推送。真实故障回退仍未完成,机器可用内存约 300 MiB,容量风险也未解除。
|
||||
|
||||
22:17 最终只读复核:Scert PID 仍为 `572525`、重启次数零,MySQL 状态不变;四个本轮测试单元均 inactive、PID 零,19017 无监听。备份摘要及 0700/0600 权限再次通过。此时 Smail 的 443 进程已经变为 PID `571735`,系统有 4095 MiB Swap、可用内存约 634 MiB,与升级时状态不同;本轮未操作 Smail 或 Swap,变更来源尚未核查,不能把升级时的“保持不变”延伸为整个时段。容量风险需依据新环境另做负载验证。
|
||||
|
||||
Loading…
Reference in New Issue
Block a user