Files
EnterpriseArchitect/knowledge/运维/部署流程_v1.0.md
T

4.4 KiB
Raw Blame History

服务部署流程 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 服务更新

方式 Asystemd 服务

# 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>

方式 BDocker 容器

# 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>

方式 CNginx 反向代理更新

# 更新上游配置后重载
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 初始创建 严维序