# 服务部署流程 SOP ## 元数据 | 属性 | 值 | |------|-----| | **领域** | 运维 | | **责任人** | 严维序(opengineer) | | **版本** | v1.0 | | **创建日期** | 2026-06-24 | | **最后更新** | 2026-06-24 | | **标签** | 部署, 运维, SOP | ## 概述 本文档定义 BizWings 团队所有业务服务的部署流程标准,涵盖部署前检查、执行步骤、验证测试和回滚预案。适用于所有生产环境的代码部署与服务更新。 --- ## 一、部署前置检查 ### 1.1 代码准备 - [ ] 代码已合并到目标分支(main / release) - [ ] PR 已通过 Code Review 并合并 - [ ] 本地或 CI 构建通过(编译无报错) - [ ] 版本号已更新(如有) ### 1.2 环境检查 - [ ] 目标服务器磁盘空间充足(> 剩余 20%) - [ ] CPU / 内存负载正常(< 80%) - [ ] 网络连通性:本机 → 目标服务器可达 - [ ] 目标端口未被占用 - [ ] 依赖服务(数据库 / 中间件)运行正常 ### 1.3 备份准备 - [ ] **配置备份**:服务器配置文件备份到 `/backup/conf/` 目录 - [ ] **数据库备份**:涉及数据库变更,先执行 `mysqldump` 全量备份 - [ ] **当前版本标记**:记录当前运行版本号或 Git commit hash --- ## 二、部署执行步骤 ### 2.1 文件分发 ```bash # 标准部署(SSH + scp/rsync) scp -P ./dist/app root@:/opt/app/ # 或使用 rsync 增量同步 rsync -avz --delete -e "ssh -p " ./dist/ root@:/opt/app/ ``` ### 2.2 服务更新 #### 方式 A:systemd 服务 ```bash # 1. 停止服务 systemctl stop # 2. 备份旧版本(如有必要) mv /opt/app/ /opt/app/.bak # 3. 放置新版本 cp /tmp/ /opt/app/ chmod +x /opt/app/ # 4. 重启服务 systemctl start systemctl status ``` #### 方式 B:Docker 容器 ```bash # 1. 拉取新镜像 docker pull /: # 2. 停止旧容器 docker stop docker rm # 3. 启动新容器 docker run -d --name \ --restart unless-stopped \ -p : \ /: ``` #### 方式 C:Nginx 反向代理更新 ```bash # 更新上游配置后重载 nginx -t # 语法检查 systemctl reload nginx # 热重载 ``` ### 2.3 配置变更 ```bash # 1. 备份当前配置 cp /etc//config.yml /etc//config.yml.$(date +%Y%m%d-%H%M%S) # 2. 修改配置 vim /etc//config.yml # 3. 重启服务使配置生效 systemctl restart ``` --- ## 三、部署验证 ### 3.1 连通性验证 ```bash # 服务端口监听确认 ss -tlnp | grep # HTTP 服务健康检查 curl -s -o /dev/null -w "%{http_code}" http://localhost:/health # 预期返回:200 ``` ### 3.2 功能验证 - [ ] API 基础功能运行正常 - [ ] 日志无新增 ERROR 级别报错 - [ ] 数据库连接正常 - [ ] 前端页面(如有)可正常加载 ### 3.3 监控确认 - [ ] Prometheus / Grafana 指标正常 - [ ] 日志系统(如有)已捕获新日志 - [ ] 告警规则未被触发 --- ## 四、回滚方案 ### 4.1 代码回滚 ```bash # Git 回滚到上一版本 cd /opt/app/repo git revert HEAD --no-edit git push # 重新执行部署 ``` ### 4.2 文件回滚 ```bash # 恢复备份文件 mv /opt/app/.bak /opt/app/ systemctl restart ``` ### 4.3 数据库回滚 ```bash # 导入备份 gunzip < /backup/db/.$(date +%Y%m%d).sql.gz | mysql -u root -p ``` ### 4.4 回滚确认 - [ ] 旧版本服务运行正常 - [ ] 端口监听确认 - [ ] 用户无访问异常 - [ ] 记录回滚原因到工作日志 --- ## 五、部署后记录 ### 5.1 必填信息 | 项目 | 内容 | |------|------| | 部署时间 | YYYY-MM-DD HH:mm | | 部署人 | 严维序(opengineer) | | 部署内容 | [简要描述] | | 版本 | commit hash / tag | | 验证结果 | ✅/❌ 通过 | | 回滚情况 | 无需回滚 / 已回滚(原因) | ### 5.2 记录位置 - 工作日志:`memory/YYYY-MM-DD.md` - 任务记录:WorkBoard 相关卡片注释 - 知识更新:如部署暴露流程问题,更新本文档 --- ## 相关条目 - [故障排查手册_v1.0.md](故障排查手册_v1.0.md) - [服务器运维标准_v1.0.md](服务器运维标准_v1.0.md) ## 变更记录 | 日期 | 版本 | 变更说明 | 变更人 | |------|------|----------|--------| | 2026-06-24 | v1.0 | 初始创建 | 严维序 |