Become a sponsor

本文介绍版本升级标准流程,包括升级前准备、执行步骤、验证检查和回滚方案。遵循规范的升级流程可最大程度降低线上风险。
升级原则
# 1. 数据库全量备份
mysqldump -h 127.0.0.1 -u root -p --single-transaction \
djangoadmin_prod | gzip > backup_$(date +%Y%m%d_%H%M%S).sql.gz
# 2. 上传文件备份
tar -czf uploads_$(date +%Y%m%d).tar.gz /data/apps/uploads/
# 3. 应用目录备份(含 .env 和配置)
tar -czf app_$(date +%Y%m%d).tar.gz \
--exclude='uploads' --exclude='__pycache__' --exclude='.git' \
/data/apps/# 查看当前版本
git describe --tags --always
# 查看提交记录
git log --oneline -20
# 查看变更文件
git diff --stat HEAD~10重点关注
.env 新增配置项cd /data/apps/djangoadmin
# 拉取最新代码
git fetch origin
git pull origin main
# 或切换到指定版本
git checkout v1.2.0# 激活虚拟环境
source venv/bin/activate
# 更新依赖
pip install -r requirements.txt# 检查是否有新增的 .env 配置项
git diff HEAD~1 .env.example
# 如有新增项,手动添加到 .env
vim .env# 查看待执行的迁移
alembic current
alembic history --indicate-current
# 执行迁移
alembic upgrade head
# 或使用 Make 命令
make migrate-upgrade迁移前确认
# Supervisor 管理
sudo supervisorctl restart djangoadmin-fastapi
# Docker 部署
docker-compose down && docker-compose up --build -d
# Systemd 管理
sudo systemctl restart djangoadmin-fastapi# 1. 检查服务状态
sudo supervisorctl status djangoadmin-fastapi
# 2. 检查健康端点
curl -s http://127.0.0.1:8031/api/v1/health | python -m json.tool
# 3. 检查日志
tail -f /data/apps/logs/supervisor.out.log
# 4. 验证核心功能
# - 登录接口
# - 列表查询接口
# - 新增/编辑/删除接口# 回退到上一个版本
git checkout HEAD~1
# 或回退到指定版本
git checkout v1.1.0
# 重新安装依赖
pip install -r requirements.txt
# 重启服务
sudo supervisorctl restart djangoadmin-fastapi# 回滚最近一次迁移
alembic downgrade -1
# 回滚到指定版本
alembic downgrade <revision_id>
# 查看可用版本
alembic history# 1. 停止服务
sudo supervisorctl stop djangoadmin-fastapi
# 2. 恢复应用目录
cd /data/apps/
tar -xzf app_20260905.tar.gz
# 3. 恢复数据库
gunzip < backup_20260905.sql.gz | mysql -u root -p djangoadmin_prod
# 4. 恢复上传文件
tar -xzf uploads_20260905.tar.gz -C /
# 5. 启动服务
sudo supervisorctl start djangoadmin-fastapi对于重要生产环境,建议采用灰度升级:
1. 部署新版本到 1 台服务器
2. Nginx 将 10% 流量切到新版本
3. 观察 30 分钟,无异常后逐步增加流量
4. 流量 100% 切到新版本
5. 下线旧版本# Nginx 灰度配置
upstream backend {
server 10.0.1.10:8031 weight=9; # 旧版本 90%
server 10.0.1.11:8031 weight=1; # 新版本 10%
}.env 配置项已添加版本升级的核心流程:备份 → 拉代码 → 更新依赖 → 更新配置 → 数据库迁移 → 重启 → 验证。每一步都需要可回滚,完整回滚方案应提前准备并验证。生产环境建议在低峰期执行,重要系统采用灰度升级策略。