从 v3.4.0 升级到 v2026.7.2 前需要了解的事项

我负责维护一个基于 Docker 的 Discourse 安装环境,运行在 Ubuntu 上,这是我作为一个开源项目的一部分而接手维护的。多年来,我一直通过 git pull && ./launcher rebuild app 进行升级,然后通过 /admin/update 处的管理界面完成更新。然而,在 2024 年 1 月,由于 docker_manager 导致的一次破坏性升级给我带来了痛苦的经历(参见此处提交中的评论,以及此处被回滚的提交),此后我便不再如此随意地执行升级了。

如今已经过去两年半了,我需要重新建立定期升级的节奏,但上次失败的升级仍让我有些紧张。我想请人帮忙理解的是,在尝试从 v3.4.0 升级到 v2026.7.2 之前,我应该了解哪些事项?我们的站点没有使用任何额外的插件,我唯一知道的特殊配置是我们使用 Discourse Connect URL 来实现与我们主社区站点的单点登录(SSO)。

过程是否就这么简单?

cd /var/discourse
git pull
./launcher rebuild app

然后通过管理界面进行更新?从 v3.4.0 升级到 v2026.7.2 时,是否有我需要注意的中间步骤?

谢谢,

Cory

或者……(如果你感到紧张)……先备份(无论如何都应该备份),然后搭建一个全新的服务器并恢复备份,完成后再将域名指向新服务器。

你会遇到的一个大问题是,有一个重大的 PostgreSQL 升级(升级到 18)。如果你搭建一个新服务器,就不必处理那个升级过程。

此外,还存在一个小风险,即你依赖的插件或主题组件可能没有得到维护,尤其是当它们由不太活跃的第三方编写时。

正是出于对风险的担忧,经验丰富的 Discourse 系统管理员(SA)会使用双容器配置,这样你可以在提交更新之前先引导(bootstrap)更新(尽管在遇到大型 PostgreSQL 更新时,这种方法帮助不大,但这种情况很少发生)