Skip to content

版本升级流程

概述

本文介绍版本升级标准流程,包括升级前准备、执行步骤、验证检查和回滚方案。遵循规范的升级流程可最大程度降低线上风险。

升级原则

  1. 先备份,后升级
  2. 先测试环境,后生产环境
  3. 每次升级可回滚
  4. 低峰期执行升级

升级前准备

备份

bash
# 1. 数据库全量备份
mysqldump -h 127.0.0.1 -u root -p --single-transaction \
    djangoadmin.django.elevue | gzip > backup_$(date +%Y%m%d_%H%M%S).sql.gz

# 2. 上传文件备份
tar -czf uploads_$(date +%Y%m%d).tar.gz /data/apps/DjangoAdmin_Django_EleVue/public/uploads/

# 3. 应用目录备份(含 .env 和配置)
tar -czf app_$(date +%Y%m%d).tar.gz \
    --exclude='uploads' --exclude='__pycache__' --exclude='.git' \
    /data/apps/DjangoAdmin_Django_EleVue/

查看变更日志

bash
# 查看当前版本
git describe --tags --always

# 查看提交记录
git log --oneline -20

# 查看变更文件
git diff --stat HEAD~10

重点关注

  • 是否有数据库结构变更(Django 迁移脚本)
  • 是否有 .env 新增配置项
  • 是否有依赖包更新(requirements.txt)
  • 是否有破坏性变更(Breaking Changes)

标准升级步骤

步骤一:拉取代码

bash
cd /data/apps/DjangoAdmin_Django_EleVue

# 拉取最新代码
git fetch origin
git pull origin main

# 或切换到指定版本
git checkout v1.2.0

步骤二:更新依赖

bash
# 激活虚拟环境
source venv/bin/activate

# 更新依赖
pip install -r requirements.txt

步骤三:更新配置

bash
# 检查是否有新增的 .env 配置项
git diff HEAD~1 .env.example

# 如有新增项,手动添加到 .env
vim .env

步骤四:执行数据库迁移

bash
# 查看待执行的迁移
python manage.py showmigrations

# 执行迁移
python manage.py makemigrations
python manage.py migrate

迁移前确认

  • 迁移脚本需提前在测试环境验证
  • 确认迁移不会锁表影响线上服务
  • 大表结构变更建议在低峰期执行

步骤五:收集静态文件

bash
python manage.py collectstatic --noinput

步骤六:重启服务

bash
# Supervisor 管理
sudo supervisorctl restart djangoadmin

# Docker 部署
docker-compose down && docker-compose up --build -d

步骤七:验证

bash
# 1. 检查服务状态
sudo supervisorctl status djangoadmin

# 2. 检查健康端点
curl -s http://127.0.0.1:8000/health/

# 3. 检查日志
tail -f /data/apps/logs/supervisor.out.log

# 4. 验证核心功能
# - 登录接口
# - 列表查询接口
# - 新增/编辑/删除接口

回滚方案

代码回滚

bash
# 回退到上一个版本
git checkout HEAD~1

# 或回退到指定版本
git checkout v1.1.0

# 重新安装依赖
pip install -r requirements.txt

# 重启服务
sudo supervisorctl restart djangoadmin

数据库回滚

bash
# 回滚指定应用到指定版本
python manage.py migrate <app_name> <migration_name>

# 回滚指定应用到初始状态
python manage.py migrate <app_name> zero

完整回滚

bash
# 1. 停止服务
sudo supervisorctl stop djangoadmin

# 2. 恢复应用目录
cd /data/apps/
tar -xzf app_20260905.tar.gz

# 3. 恢复数据库
gunzip < backup_20260905.sql.gz | mysql -u root -p djangoadmin.django.elevue

# 4. 恢复上传文件
tar -xzf uploads_20260905.tar.gz -C /

# 5. 启动服务
sudo supervisorctl start djangoadmin

升级检查清单

  • [ ] 升级前已完成数据库备份
  • [ ] 升级前已完成应用目录备份
  • [ ] 变更日志已审查,了解所有变更
  • [ ] 新增 .env 配置项已添加
  • [ ] 数据库迁移已在测试环境验证
  • [ ] 依赖包已更新
  • [ ] 静态文件已收集
  • [ ] 服务已重启
  • [ ] 健康检查通过
  • [ ] 核心功能验证通过
  • [ ] 日志无异常报错

总结

版本升级的核心流程:备份 -> 拉代码 -> 更新依赖 -> 更新配置 -> 数据库迁移 -> 收集静态文件 -> 重启 -> 验证。每一步都需要可回滚,完整回滚方案应提前准备并验证。生产环境建议在低峰期执行。

小蚂蚁云团队 · 提供技术支持