# 版本升级流程 ## 概述 本文介绍版本升级标准流程,包括升级前准备、执行步骤、验证检查和回滚方案。遵循规范的升级流程可最大程度降低线上风险。 :::tip 升级原则 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 ``` :::tip 重点关注 - 是否有数据库结构变更(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 ``` :::warning 迁移前确认 - 迁移脚本需提前在测试环境验证 - 确认迁移不会锁表影响线上服务 - 大表结构变更建议在低峰期执行 ::: ### 步骤五:收集静态文件 ```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 # 回滚指定应用到初始状态 python manage.py migrate 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` 配置项已添加 - [ ] 数据库迁移已在测试环境验证 - [ ] 依赖包已更新 - [ ] 静态文件已收集 - [ ] 服务已重启 - [ ] 健康检查通过 - [ ] 核心功能验证通过 - [ ] 日志无异常报错 ## 总结 版本升级的核心流程:备份 -> 拉代码 -> 更新依赖 -> 更新配置 -> 数据库迁移 -> 收集静态文件 -> 重启 -> 验证。每一步都需要可回滚,完整回滚方案应提前准备并验证。生产环境建议在低峰期执行。