# 11.1 部署 Checklist :::tip 概述 生产上线前逐项核对:安全基线(密钥/万能码/错误信息)、依赖服务(MySQL/Redis)、配置核对、静态资源、验证步骤。本清单可直接用于发布评审。 ::: ## 上线前 Checklist ### 安全基线(必须) ```text □ jwt.secret 已更换为高强度随机值(与环境隔离) □ captcha.bypassCode 已留空(万能验证码禁止上线) □ app.demo = false □ app.errorMsg = false(不返回详细错误信息) □ server.errorStack = false □ database.default.debug = false □ redis.default.pass 强密码 □ database 使用独立账号(非 root,最小权限) □ api.proxyIps 只列真实反代出口 □ file.fileExt 按业务收紧(公网上传场景) □ rateLimit.enable = true(authLimit 不调大) ``` ### 依赖服务 ```text □ MySQL 已建库并导入 document/mysql/ 定稿脚本(含种子数据) □ 13 个 uk_* 唯一索引齐全(对照 4.9 数据库设计) □ Redis 可用(/api/cache/info mode 应为 redis) □ 数据库/Redis 内网可达,不暴露公网 □ 磁盘空间(上传目录/日志/备份分区) □ 服务器时区与 app.timezone 一致 ``` ### 后端 ```text □ go build 编译通过(目标平台交叉编译注意 GOOS/GOARCH) □ config.yaml 生产配置核对(database/redis/jwt/file/cors) □ file.uploadDir 挂持久卷(容器场景)/独立分区 □ manifest/data/ip2region.xdb 存在(归属地功能) □ resource/static、resource/swagger 随二进制部署 □ 优雅重启已启用(server.graceful) □ 进程守护(systemd/supervisor)与开机自启 □ 日志目录可写(logger.path) ``` ### 前端 ```text □ pnpm build 构建产物 dist/ □ Nginx 托管静态 + try_files SPA 回退 □ /api 与 /upload 反代后端 □ VITE 环境变量与后端域名一致(子路径部署核对 PUBLIC_PATH) □ HTTPS 证书(前置代理终止) ``` ### 验证 ```text □ GET /api/health → {"code":0,...,"data":{"status":"up"}} □ /swagger 页面可访问(OpenAPI) □ admin 登录成功 → 首页菜单正常 □ 登录日志/操作日志正常落库 □ /api/cache/info mode=redis □ /api/server/info 全项正常(磁盘/DB/调度器) □ 限流生效(快速刷新触发 429) □ 上传→预览→保存→转正 全链路 □ 定时任务挂载(daemonStatus / Scheduler.mounted) ``` ## 发布顺序(推荐) ```text 1. 备份数据库与旧版本二进制 2. 停旧服务(或优雅重启) 3. 部署新二进制 + 配置 4. 启动 → health 检查 5. 冒烟(登录/核心接口) 6. 观察日志(启动告警/错误) 7. 出现问题回滚(旧二进制 + 备份库) ``` ## 回滚预案 ```text □ 旧二进制可一键切回 □ 数据库变更已评估可回滚性(新增表/列可保留;破坏性变更需还原备份) □ 前端旧 dist 保留可切回 □ 回滚演练记录 ```