第三十八章 升级与版本更新

Ju7CMS 用户手册 · 发布于 2026-10-27 · 更新于 2026-10-27

升级分程序文件与数据库两部分;版本号怎么读、在线与离线两种走法、黑名单、失败怎么退与升级后必查的六页。

这一章解决什么

Ju7CMS 的升级分成两件事:程序文件更新(lib、ju7、插件、模板等)与数据库迁移(新增列、补数据)。升级包把两者放在一起,但执行时有严格的版本判断、文件黑名单和升级前备份。本章讲清版本号怎么读、在线与离线两种升级怎么走、出问题怎么退回去。

版本号怎么读

版本号是 14 位数字:yyyymmddHHMMSS。例如 20261023140736 表示 2026-10-23 14:07:36 打包。它没有「主版本.次版本」的概念,比较大小就是比时间。

位置存什么
auth_pkgver本机当前程序版本
升级包清单包的目标版本
授权系统签发升级包时使用的版本与文件摘要

系统只接受严格更新的包:新版本必须是 14 位数字,且数值大于当前版本。相同版本不重复装,旧版本不能拿来降级。这条判断在服务端,改前端按钮没有用。

在线升级:后台一条栏

位置:登录后台 → 工作台(首页)→ 顶部升级栏。只有超级管理员能看到可执行按钮。

状态界面文字能做什么
有新版存在可用更新,更新日期:…点【立即更新】执行
已最新当前主程序已是最新版本无操作
连不上暂时没连上厂商的升级服务,站点照常使用点【检查更新】重试;不影响站点
没查过在线升级还没检查过,点右边的【检查更新】查一次先检查

打开后台时不会自动出网检查,避免每次登录都卡几秒;状态来自上一次检查的缓存,只有点【检查更新】或升级完成后才真正请求厂商。连不上这一态缓存 5 分钟,避免反复重试。

执行时发生了什么

  1. 校验登录态、超级管理员身份、同源请求与 CSRF 令牌。
  2. 从厂商取回签名的升级包,校验版本严格更新、包摘要与文件清单。
  3. 把正式数据库备份到 data/databackup/pre-migrate-<时间>.bak。
  4. 按清单落盘程序文件;随后执行数据库迁移。
  5. 写新的 auth_pkgver,清缓存,刷新升级栏状态。

落盘请求由专用端点 ju7/upgpost.asp 接单,而不是工作台本身。原因很实际:IIS 会在请求期间锁住入口脚本,如果包里正好含这个文件,升级就会卡在「写自己被拒绝」。这个端点被列入黑名单,永远不会出现在包内,所以能写其他所有文件。

升级包的黑名单

打包端与安装端用同一把尺子,命中任意一条就拒收整个包,不做部分安装:

类别被拒内容原因
数据目录data/ upfile/ upload/ uploads/ log/ logs/ cache/ cachelist/ backup/ databackup/ temp/ tmp/这些是本站数据,不能被厂商包覆盖
授权目录plug/authorize/update/授权票据与升级缓存不能打进包
敏感扩展名config mdb ldb bak old配置、数据库、备份不随程序走
站点身份文件andvar.asp里面是本站的 theme_root、站点目录、数据库连接等,覆盖即换站
本站密钥lib/sms.asp短信等站点级凭据不能被统一版本覆盖
清单与通道update.xml、update.bak.xml、plug/authorize/update.xml、ju7/upgpost.asp清单自引用与接单端点都会造成死锁或伪造入口

这与「整站回灌」不是一回事:回灌是主题自带的数据包,会覆盖 upfile/、block/ 甚至数据库;升级包只动程序文件,且有上面的黑名单保护。

离线/手工升级

服务器不能出网,或厂商只给了压缩包时,按下面顺序做:

  1. 备份。功能 → 数据备份,生成一份并下载走;再把 config/、andvar.asp、theme/ 单独复制一份。
  2. 核对版本。确认包的目标版本高于本机 auth_pkgver;相同或更低不要装。
  3. 解包检查。包内不应出现上表任何一类路径。出现就整包退回,不要手工挑文件装。
  4. 覆盖程序文件。保留 data/、upfile/、cache/、log/、config/、andvar.asp、theme/(除非本次升级明确要换主题)。
  5. 执行数据库迁移。访问后台首页,让系统跑迁移;或按包内说明执行对应脚本。
  6. 清缓存并验证。缓存管理 → 清模板、页面、内存缓存;打开首页、列表、详情、后台各一页。
  7. 写版本号。确认后台显示的版本已是新版本,避免下次又提示升级。

升级失败怎么退

现象先看处置
提示包被拒拒绝原因与包内路径整包退回,让打包方重做;不要删掉黑名单规则绕过
落盘中途失败错误记录、磁盘空间、文件占用用 pre-migrate-*.bak 恢复数据库,再用文件备份覆盖程序目录
升级后整站 500错误记录里的文件与行号先恢复上一版程序文件;数据库迁移通常可重复执行,不要急着重灌库
升级后页面 200 但空白模板编译缓存、模板语法清模板缓存;仍是空白就恢复该模板文件
版本号没变,反复提示auth_pkgver 是否写入确认迁移完成;必要时手工写入正确版本(先备份库)

回滚的顺序是「先库、后文件」还是「先文件、后库」取决于本次升级有没有改表结构。最稳的做法是:两边都恢复到升级前同一时刻的备份,再重新排查,不要只退一半。

升级后必须回归的六页

  1. 首页:版块、轮播、图片是否完整。
  2. 一个列表页:分页、侧栏、SEO 标题。
  3. 一个详情页:正文、图片、上一章/下一章。
  4. 留言表单:能打开、能提交、验证码能发。
  5. 后台工作台:无报错、升级栏状态正常。
  6. 错误记录:没有新增的持续 500。

接下来怎么读

  1. 授权与版本的关系:第三十六章。
  2. 升级后页面空白/500 的排查:第四十章。
  3. 常见提示原文对照:第四十四章。