From 0564c344c776ad59e337da4d90d9d72a2a206bf9 Mon Sep 17 00:00:00 2001 From: xuans Date: Thu, 17 Sep 2026 10:56:11 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=B0=E5=BD=95Linux=E5=AE=9E=E6=9C=BA?= =?UTF-8?q?=E6=B5=8B=E8=AF=95=E8=B6=85=E6=97=B6=E4=B8=8E=E7=94=9F=E4=BA=A7?= =?UTF-8?q?=E5=87=86=E5=85=A5=E9=98=BB=E5=A1=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/Linux生产流程测试记录.md | 48 ++++++++++++++++++++++++++++ doc/生产部署与运维说明.md | 8 ++--- 2 files changed, 52 insertions(+), 4 deletions(-) create mode 100644 doc/Linux生产流程测试记录.md diff --git a/doc/Linux生产流程测试记录.md b/doc/Linux生产流程测试记录.md new file mode 100644 index 0000000..e5f5221 --- /dev/null +++ b/doc/Linux生产流程测试记录.md @@ -0,0 +1,48 @@ +# Linux 生产流程测试记录 + +## 范围与任务状态 + +2026-09-17 在管理机 `47.108.78.12` 执行当前版本的受控测试。`8.137.23.95` 仅为推送测试机,本记录不包含对它的操作。不运行固定安装器,不切换正式服务,不清空既有数据库,不修改共享 Nginx 或业务证书。 + +- [✓] 密码 SSH 登录并通过已有主机密钥校验。 +- [✓] 核对管理机服务、工具、空间和健康接口。 +- [✓] 独立干净克隆构建 Linux 包,本地与远程归档、测试程序 SHA-256 一致。 +- [!] PostgreSQL 18 第一轮测试超时,成功恢复及证书失败回滚检查已执行,完整七场景未通过。 +- [ ] Linux Bootstrap 协议及 systemd 加固启动测试。 +- [!] 真实浏览器、授权 DNS 签发、初始化完成、正式切流和业务推送未验收。 + +## 发布来源 + +候选源码提交:`8990710ee145809eb3a937d3b4eb578adbdeb3fe`。发布清单 `source_dirty=false`,两个程序均内嵌相同提交及 `vcs.modified=false`。构建工具链为 Go `1.26.6`,目标 `linux/amd64`,`CGO_ENABLED=0`。 + +本地发布目录:`build/linux-production-20260917-1040/`。远程独立目录:`/scert/acceptance-20260917-1044/`。前端 39 项自动化测试通过,依赖安装审计为零漏洞;这些不是浏览器验收。 + +| 产物 | SHA-256 | +| --- | --- | +| `release.tar.gz` | `3eee5a62403d6dadcc1f36e105de8cfa1684f65b688af7a1e898c7269e475344` | +| `cli.test` | `7bf731c5dade9ceb24f385dd0bb4c54d1809e3e6a9400c710ecfe871c9de1d1f` | + +本地发布清单 14 项与包内校验清单 12 项通过。远程两项上传文件哈希及解压后的 12 项校验通过,安装器 `bash -n` 通过,候选程序返回 `Scert 0.1.0`。归档成员清单只含相对路径下的普通文件及目录,可执行程序和安装器为 `0755`。 + +## 实机初查 + +10:43 至 10:44,通过可信 SSH 通道获得: + +- Linux `7.0.0-29-generic`,`x86_64`,根分区剩余约 28 GiB。 +- `Scert.service` 为 `active/running`,用户 `Scert`,PID `530794`,监听 `127.0.0.1:9004`。 +- 已有 PostgreSQL `18.6` 官方工具,既有数据库端口 `5432` 不作为测试目标。 +- `/healthz` 为 HTTP `200`;`/readyz` 为 HTTP `503`,原因 `setup_incomplete`。 +- 正式 ACME 目录正常 TLS 校验下为 HTTP `200`,TCP 约 `0.206` 秒、TLS 约 `0.484` 秒。此前网络超时本次未复现,但目录可达不代表签发通过。 +- 在用 `/scert/scert` SHA-256:`ce2438fdddb1e471184d42ec98374abe1e96f74d3687ec60ad493eb659d5eb43`。 + +## 测试执行与异常 + +远程测试命令先在新目录解压,执行包内校验、安装器语法检查、版本检查,然后以 `Scert` 用户运行 `TestPostgresRealBackupRestore`。测试使用 `/usr/lib/postgresql/18/bin`,产物根目录为 `/scert/acceptance-20260917-1044/postgres-artifacts`,测试超时为五分钟。 + +该测试自行创建回环随机端口集群、每场景全新数据库、SCRAM 密码和严格 TLS;不接受业务 DSN,完成时停止自己的集群并保留产物。 + +10:50 左右尚未收到测试命令结果,另建 SSH 连接在协议 banner 阶段超时。约 10:53 原连接收到测试退出码 `2`:成功恢复与证书失败回滚场景打印检查通过;第三个 `cancel` 场景尚在初始备份清单检查时触发总超时,栈位于 `validateBackupManifest` 的 `Lstat`,还未进入取消注入阶段。其余四场景未执行。不能将该结果归因为取消回滚逻辑故障,也不能报告整轮通过。 + +测试产物:`/scert/acceptance-20260917-1044/postgres-artifacts/scert-postgres-integration-2406225956/`。总超时导致测试清理回调不保证执行,随后只读检查请求也出现 `Timeout opening channel`。已请求仅停止该目录中的隔离集群,停止结果仍待确认。未向既有 PostgreSQL 服务或正式 Scert 发送停止命令。 + +恢复连接后必须先核对本轮测试进程、`postmaster.pid`、端口、系统负载及原服务状态,再决定是否重试。保留所有产物,不重跑解压命令覆盖已有目录,不在连接不稳定时继续启动额外测试负载。 diff --git a/doc/生产部署与运维说明.md b/doc/生产部署与运维说明.md index e73b717..11f5afe 100644 --- a/doc/生产部署与运维说明.md +++ b/doc/生产部署与运维说明.md @@ -238,14 +238,14 @@ proxy_ssl_verify_depth 3; ### 7.1 备份内容 -当前 Scert 内置完整备份/恢复仅实现 SQLite 和 MySQL。PostgreSQL 初始化及业务存储接入不代表备份功能已实现;选择 PostgreSQL 时,内置命令明确拒绝,避免遗漏数据库后仍报告备份成功。完整 PostgreSQL 备份恢复及真实演练未完成前,不符合三数据库完整生产验收。 +当前 Scert 内置备份/恢复支持 SQLite、MySQL 和 PostgreSQL。PostgreSQL 使用官方工具,自动恢复仅支持原目标数据库且对象清单、所有者一致的场景,不支持空库灾难恢复或跨结构版本迁移。工具版本、严格 TLS、权限及集群级资源的保护要求见 [PostgreSQL备份恢复说明](PostgreSQL备份恢复说明.md)。各平台真实演练结果须单独核对,功能存在不代表三数据库完整生产验收。 完整备份包含: - `scert.json` - `master.key` - `secrets.json` -- `scert.db` 或 `scert.sql` +- `scert.db`、`scert.sql` 或 `scert.pgdump` - `certificates/` - `manifest.json` @@ -334,9 +334,9 @@ sudo -u Scert /scert/scert --config /scert/conf/scert.json status - 真实 DNS Provider API 的最小权限凭据与在线写入/清理验证。 - 合法域名的 Let’s Encrypt Production 申请、续期和速率限制处理。 - MySQL 5.7 与 8.0 的真实备份、恢复和失败回滚。 -- PostgreSQL 完整备份恢复开发及真实数据库连接、迁移、权限、业务与恢复演练。 +- PostgreSQL 目标环境的真实连接、迁移、权限、业务与恢复演练;空库灾难恢复及跨版本迁移仍不属于内置自动恢复支持范围。 - 新 IP 初始化在最小权限 systemd 下的防火墙行为、临时证书身份核对、浏览器页面及正式入口切换。 - Windows Service 安装、升级、开机启动、停止和 ACL。 - 公网生产 Nginx、真实证书链和最终业务访问。 -这些外部项未完成时不能声明完整生产准入。本轮尚未生成新版 Linux 发布包,也未完成新初始化流程的 Linux 实机和浏览器验收;Linux + SQLite 的受控试运行同样需要当前版本的目标主机验证,不得复用旧版本结论。 +这些外部项未完成时不能声明完整生产准入。2026-09-17 已从干净提交生成 Linux 候选包,当前实机进展见 [Linux生产流程测试记录](Linux生产流程测试记录.md)。Linux + SQLite 的受控试运行同样需要当前版本的目标主机验证,不得复用旧版本结论或把隔离测试等同于正式切流。