Skip to content

Upgrade

pollybird edited this page Oct 15, 2026 · 5 revisions

v1.1 → v2.0 升级迁移

v1.1 → v2.0 升级迁移

v3.1.2 → v3.1.3(2026-10-15)速览:性能与并发健壮性版本(GitCode issue #3 四项中危 M7-M10):Setting 请求级整表缓存(同请求首查建映射、后续读零 SQL,set() 写后失效)、浏览量缓存累加 + 周期(60s)/阈值(200 次)合并回库(消除逐请求写事务,并修复整页缓存命中时计数不增长)、首页 N+1 治理(9 个行业区块收口 3 条 SQL + 栏目树请求级缓存)、用户名唯一性竞态兜底(并发重名捕获 IntegrityError 回退「用户名已存在」而非 500)。无数据库结构变更、无新增依赖,覆盖代码重启即可;注意浏览量统计语义变为近似值(误差窗口 ≤ 60s 或 200 次)。详见项目根目录 UPGRADE.md 与 CHANGELOG.md。

v3.1.1 → v3.1.2(2026-10-13)速览:安全修复版本(GitCode issue #2 五项中危 M1-M5):表单整数输入保护(safe_int)、上传子目录白名单(_safe_sub_dir 二次校验防 ../ 穿越到任意目录写文件)、CKEditorFuncNum 反射型 XSS 防护(仅 ^\d{1,6}$ + html.escape)、SVG 上传管控(默认 upload_allow_svg=off,开启后内容嗅探拒绝 <script>/onload=/<foreignObject> 等 + 512KB 大小上限 + .svg 静态响应附加 sandbox CSP 兜底)、登录验证码一次性消费(无论密码对错先 session.pop('captcha') 杜绝同码复用枚举密码)。无数据库结构变更、无新增依赖,覆盖代码重启即可;曾使用 SVG 作为 LOGO 的站点需到后台「上传安全」勾选「允许上传 SVG」。详见项目根目录 UPGRADE.md 与 CHANGELOG.md。

v3.0.x → v3.1.0(2026-10-10)速览:新增官方内置插件 db_migrator(数据库迁移,默认不启用),后台一键把 SQLite 开发库迁移到 MySQL/PostgreSQL(建表、按外键依赖逐表复制、PostgreSQL 重置序列、同步 Alembic 版本号),支持迁移后免重启热切换;修复文章批量操作不更新搜索索引、后台用户管理表单字段脱节问题。无数据库结构变更、无新增依赖,覆盖代码重启即可;需用迁移插件请在「插件管理」中手动启用。详见项目根目录 UPGRADE.md 与 CHANGELOG.md。

运行 v1.1 及更早版本升级到 v2.0+ 前,请务必阅读项目根目录 UPGRADE.md。本章为速览。

升级前必读:四个关键变化

变化 说明 需做的事
用户权限语义 v1.1 所有用户默认超管;v2.0 引入 RBAC 升级后审查超管标志并分配角色
文章状态机 is_enabled 升级为工作流状态 迁移自动回填,确认隐藏文章仍不可见
登录安全 失败 5 次锁定 10 分钟、验证码、异地提醒 告知后台用户;弱密码建议改密
上传行为 MIME 双重校验/去重/压缩默认开启 伪装脚本将无法上传

升级步骤

`# 0. 备份站点目录与数据库(必做!)
# 1. 停服并更新代码
git fetch && git checkout v2.4.0
# 2. 更新依赖
pip install -r requirements.txt
# 3. 执行迁移(幂等,可重复运行)
.venv/bin/python scripts/upgrade_v2.py
# 4. 启动服务,按 UPGRADE.md 逐项核对`

为什么必须运行迁移脚本

⚠️ v2.0 新增 9 张表、旧表补 12 列。仅启动程序无法完成迁移:db.create_all() 只建新表、不给旧表加列;跳过数据回填会让原本隐藏的文章被错误公开。

小版本升级

  • v2.2.x → v2.3.0:无数据库变更,覆盖代码即可;首次启动自动启用表单插件一次。
  • v2.3.x → v2.4.0:覆盖代码 + 装依赖;首次启动自动 stamp Alembic baseline 并执行增量迁移。
  • v2.6.2 → v2.6.3:无数据库变更,覆盖代码 + 装依赖(Flask-JWT-Extended、Flask-Limiter)即可。
  • v2.6.3 → v2.6.4:需执行迁移 0008(columns.member_only 列),无新增依赖;可选启用 member 插件(首次启用自动建 3 张会员表)。插件系统新增 requires/extends/min_core_version 强校验,现有插件无需改动。

Clone this wiki locally