# 195 Admin:部署最新版本 a4556b4 到生产服务器 - 工单号:#195 - 标题:Admin:部署最新版本 a4556b4 到生产服务器 - 类型:部署 - 父级大工单:#14 - 所属 MVP / 版本:#15 Admin 四模块可用闭环 - 状态:待验收 - 日期:2026-08-12 - Gitea: ## 背景与目标 把包含 #192、#193 的最新已提交 Admin 基线 `a4556b4` 部署到生产服务器, 通过 `https://buy.833729.com` 提供服务。生产部署前运行版本为 `6ea45b7`。 ## 最终方案 - 主工作区存在其他未提交开发文件,因此从固定提交 `a4556b4` 建立 detached 隔离工作树,用固定 Go 1.23.0 验证并构建 Linux amd64 静态二进制。 - 部署前分三次确认生产数据库没有 `running` 状态的顺运宝同步,避免服务重启 主动中断业务任务。 - 使用生产业务账号完成单事务逻辑备份,校验 gzip、SHA-256 和权限。 - 上传到独立 release,核对本地与远端二进制哈希,复用稳定配置和数据软链接。 - systemd 停止后原子切换稳定执行链接;启动或本机登录页探测失败时自动回退 `6ea45b7`。 - 本次没有数据库迁移,schema 保持 v13。 ## 改了哪些文件 - 本地忽略的构建产物:`admin/.deploy/cmautobuy-admin-a4556b4`。 - 生产发布目录:`/opt/cmautobuy/releases/a4556b4/`。 - 稳定执行链接:`/opt/cmautobuy/cmautobuy-admin` 已指向本次 release。 - 生产备份:`/opt/cmautobuy/backups/autobuy-before-195-20260812T102750Z.sql.gz`。 - 本归档文档:`docs/task/195-admin部署最新版本a4556b4.md`。 ## 验收结果 | 验收项 | 结果 | |---|---| | 构建严格来自固定提交,不含未提交文件 | 通过:隔离 detached worktree | | 固定 Go 1.23.0 的 vet、test 和 Linux build | 通过 | | 切换前没有运行中的顺运宝同步 | 通过:三次检查均为 0 | | 数据库备份权限 600 且 gzip 校验通过 | 通过:5,275,275 字节 | | 二进制本地与远端 SHA-256 一致 | 通过:`558a419d366b135bc86af937be1b4cf9ffee07ce00f1736fbbe3372441ec5c68` | | 当前 release 和回退 release 正确 | 通过:当前 `a4556b4`,保留 `6ea45b7` | | systemd、监听端口、schema 和日志正常 | 通过:active/enabled,`127.0.0.1:18080`,schema v13,错误计数 0 | | 本机和公网健康检查 | 通过:根路径 303,登录页 200,公网登录页 200 | | 未上传凭据,未执行真实同步、采集或采购 | 通过 | ## 测试 - 执行命令:在提交 `a4556b4` 的隔离工作树使用 `GOTOOLCHAIN=go1.23.0` 执行 `go vet ./...`、`go test ./... -count=1`,再使用 `GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build`;生产执行同步状态查询、 `mysqldump`、`gzip -t`、`sha256sum`、`systemctl`、`readlink`、`ss`、schema 查询、`journalctl` 和 HTTP/HTTPS 健康检查。 - 结果:全部 Admin Go 包通过;生产启动日志显示数据库就绪和 Admin 正常启动; systemd active/enabled;本机和公网健康检查通过。 - **未验证到的部分**:没有使用生产账号登录后逐页进行人工功能验收;没有执行 真实顺运宝同步、采集或采购任务。 ## 相关提交 - `a4556b4`:本次生产部署代码基线。