4fd89b038d
Co-authored-by: multica-agent <github@multica.ai>
4.4 KiB
4.4 KiB
服务部署流程 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 文件分发
# 标准部署(SSH + scp/rsync)
scp -P <port> ./dist/app root@<server>:/opt/app/
# 或使用 rsync 增量同步
rsync -avz --delete -e "ssh -p <port>" ./dist/ root@<server>:/opt/app/
2.2 服务更新
方式 A:systemd 服务
# 1. 停止服务
systemctl stop <service-name>
# 2. 备份旧版本(如有必要)
mv /opt/app/<app> /opt/app/<app>.bak
# 3. 放置新版本
cp /tmp/<app> /opt/app/<app>
chmod +x /opt/app/<app>
# 4. 重启服务
systemctl start <service-name>
systemctl status <service-name>
方式 B:Docker 容器
# 1. 拉取新镜像
docker pull <registry>/<image>:<tag>
# 2. 停止旧容器
docker stop <container-name>
docker rm <container-name>
# 3. 启动新容器
docker run -d --name <container-name> \
--restart unless-stopped \
-p <host-port>:<container-port> \
<registry>/<image>:<tag>
方式 C:Nginx 反向代理更新
# 更新上游配置后重载
nginx -t # 语法检查
systemctl reload nginx # 热重载
2.3 配置变更
# 1. 备份当前配置
cp /etc/<app>/config.yml /etc/<app>/config.yml.$(date +%Y%m%d-%H%M%S)
# 2. 修改配置
vim /etc/<app>/config.yml
# 3. 重启服务使配置生效
systemctl restart <service-name>
三、部署验证
3.1 连通性验证
# 服务端口监听确认
ss -tlnp | grep <port>
# HTTP 服务健康检查
curl -s -o /dev/null -w "%{http_code}" http://localhost:<port>/health
# 预期返回:200
3.2 功能验证
- API 基础功能运行正常
- 日志无新增 ERROR 级别报错
- 数据库连接正常
- 前端页面(如有)可正常加载
3.3 监控确认
- Prometheus / Grafana 指标正常
- 日志系统(如有)已捕获新日志
- 告警规则未被触发
四、回滚方案
4.1 代码回滚
# Git 回滚到上一版本
cd /opt/app/repo
git revert HEAD --no-edit
git push
# 重新执行部署
4.2 文件回滚
# 恢复备份文件
mv /opt/app/<app>.bak /opt/app/<app>
systemctl restart <service-name>
4.3 数据库回滚
# 导入备份
gunzip < /backup/db/<dbname>.$(date +%Y%m%d).sql.gz | mysql -u root -p<pass> <dbname>
4.4 回滚确认
- 旧版本服务运行正常
- 端口监听确认
- 用户无访问异常
- 记录回滚原因到工作日志
五、部署后记录
5.1 必填信息
| 项目 | 内容 |
|---|---|
| 部署时间 | YYYY-MM-DD HH:mm |
| 部署人 | 严维序(opengineer) |
| 部署内容 | [简要描述] |
| 版本 | commit hash / tag |
| 验证结果 | ✅/❌ 通过 |
| 回滚情况 | 无需回滚 / 已回滚(原因) |
5.2 记录位置
- 工作日志:
memory/YYYY-MM-DD.md - 任务记录:WorkBoard 相关卡片注释
- 知识更新:如部署暴露流程问题,更新本文档
相关条目
变更记录
| 日期 | 版本 | 变更说明 | 变更人 |
|---|---|---|---|
| 2026-06-24 | v1.0 | 初始创建 | 严维序 |