Files
djangoadmin-wiki/DjangoAdmin_FastAPI_AntdVue/zh/volume6/upgrade.md
T
2026-09-12 23:12:15 +08:00

225 lines
4.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 版本升级流程
## 概述
本文介绍版本升级标准流程,包括升级前准备、执行步骤、验证检查和回滚方案。遵循规范的升级流程可最大程度降低线上风险。
:::tip 升级原则
1. 先备份,后升级
2. 先测试环境,后生产环境
3. 每次升级可回滚
4. 低峰期执行升级
:::
## 升级前准备
### 备份
```bash
# 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/
```
### 查看变更日志
```bash
# 查看当前版本
git describe --tags --always
# 查看提交记录
git log --oneline -20
# 查看变更文件
git diff --stat HEAD~10
```
:::tip 重点关注
- 是否有数据库结构变更(Alembic 迁移脚本)
- 是否有 `.env` 新增配置项
- 是否有依赖包更新(requirements.txt)
- 是否有破坏性变更(Breaking Changes)
:::
## 标准升级步骤
### 步骤一:拉取代码
```bash
cd /data/apps/djangoadmin
# 拉取最新代码
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
# 查看待执行的迁移
alembic current
alembic history --indicate-current
# 执行迁移
alembic upgrade head
# 或使用 Make 命令
make migrate-upgrade
```
:::warning 迁移前确认
- 迁移脚本需提前在测试环境验证
- 确认迁移不会锁表影响线上服务
- 大表结构变更建议在低峰期执行
:::
### 步骤五:重启服务
```bash
# Supervisor 管理
sudo supervisorctl restart djangoadmin-fastapi
# Docker 部署
docker-compose down && docker-compose up --build -d
# Systemd 管理
sudo systemctl restart djangoadmin-fastapi
```
### 步骤六:验证
```bash
# 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. 验证核心功能
# - 登录接口
# - 列表查询接口
# - 新增/编辑/删除接口
```
## 回滚方案
### 代码回滚
```bash
# 回退到上一个版本
git checkout HEAD~1
# 或回退到指定版本
git checkout v1.1.0
# 重新安装依赖
pip install -r requirements.txt
# 重启服务
sudo supervisorctl restart djangoadmin-fastapi
```
### 数据库回滚
```bash
# 回滚最近一次迁移
alembic downgrade -1
# 回滚到指定版本
alembic downgrade <revision_id>
# 查看可用版本
alembic history
```
### 完整回滚
```bash
# 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
# Nginx 灰度配置
upstream backend {
server 10.0.1.10:8031 weight=9; # 旧版本 90%
server 10.0.1.11:8031 weight=1; # 新版本 10%
}
```
## 升级检查清单
- [ ] 升级前已完成数据库备份
- [ ] 升级前已完成应用目录备份
- [ ] 变更日志已审查,了解所有变更
- [ ] 新增 `.env` 配置项已添加
- [ ] 数据库迁移已在测试环境验证
- [ ] 依赖包已更新
- [ ] 服务已重启
- [ ] 健康检查通过
- [ ] 核心功能验证通过
- [ ] 日志无异常报错
## 总结
版本升级的核心流程:备份 → 拉代码 → 更新依赖 → 更新配置 → 数据库迁移 → 重启 → 验证。每一步都需要可回滚,完整回滚方案应提前准备并验证。生产环境建议在低峰期执行,重要系统采用灰度升级策略。