今早(2026年8月3日)的最新更新导致我的 Discourse 崩溃,只有我一个人遇到吗?

今天早上通过图形界面更新后,网站无法访问。看起来它试图从 Postgres V15 升级到 V18,但失败了。因此我通过启动器在应用内部重新构建,但无济于事。还有一条关于 VIPS /usr/local/lib/libvips.so.42 的错误报告。

有什么想法吗?还是只有我遇到这个问题?

再次尝试重新构建总是值得的,尤其是在数据库版本升级的情况下。请参阅附近的话题

如果您仍然遇到问题,请将您看到的输出中的大约100行粘贴出来,最好放在代码块中。

正如 Chris 所指出的,虽然这个建议可能对您来说有点晚:

我确实试过那个命令,但当然没看到你提到的那个帖子。我在开始更新之前做了备份。所以,我刚刚通过在容器内手动升级到 PG V18,并安装指向容器中较新版本的 vips,成功让它重新运行起来:

网站现在应该可以正常运行了……然后我执行了完整重建,并且成功了,所以希望现在一切正常。

vips-8.18.4

PostgreSQL 18.4

不过,我会去详细阅读你发布的那个帖子,因为我还有另一台机器上的实例需要更新。

谢谢你,Ed_S!

有趣的是,我在 2025 年 10 月的 app.yml 文件中已经有了:

templates:

  • “templates/postgres.template.yml”

我是不是从另一个话题中误解了什么?

我认为这意味着你使用的是默认选项,即不将 PostgreSQL 锁定在特定版本,而是采用 Discourse 推荐的版本。

(当人们看到新版本即将发布且不希望升级时,他们会锁定特定版本。但他们需要在意外更新到来之前采取行动。)

好吧,唉,所以我不太确定今天早上我的更新出了什么问题,为什么失败了。在我弄清楚这个站点失败的原因之前,我对升级其他站点持谨慎态度,因为我不想重蹈覆辙,尤其是不喜欢像在让第一个站点运行那样手动升级容器内的东西。

我猜测,今天这个引入 PostgreSQL 18 版本的更新需要进行两次重建。从 Web 界面来看,只能执行一次重建,如果我的猜测正确,那么 Web 界面的更新总会显示失败。实际上,它并没有失败,只是只完成了一半。

这个猜测可能是错的——我不便轻易测试。

不止一个人(包括我)表示不再使用 Web 更新机制,因为如果它真的失败,你无论如何都得去命令行处理。确实,它 95% 的时间(甚至更多)都能正常工作。但由于它偶尔会失败,我个人不再使用它。

好的,用 CLI 更新而不是 GUI 是个好主意。第一个站点运行的是 Ubuntu 22.04,第二个需要升级的站点运行的是 24.04。今天早上已经够刺激了,我会单独尝试通过 CLI 更新第二个站点,然后回来汇报。我注意到第二个服务器上仍然有旧版本的 vips(/usr/local/lib/libvips.so.42),希望这次能按需要升级,因为上次并没有成功。谢谢。

OJ,为了澄清一下,我的第一次 Discourse 更新肯定失败了。即使在 GUI 更新后通过 CLI 重新构建,问题依然存在。因此,我不得不手动将 Postgres 和 vips 的容器更新到 V18 版本。我希望第二个站点能取得更好的结果。请持续关注。

这是一个相当糟糕的局面。

请确保您有足够的磁盘空间。请注意,在另一个主题中建议预留 2 倍于数据库大小的空间。

当然,而且我在两台服务器上都有充足的磁盘空间。这是服务器 1

df -h /var/discourse
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda1 194G 25G 170G 13% /

服务器 2:

df -h /var/discourse
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda1 193G 26G 168G 14% /

因此,服务器 2 上的另一个 Discourse 站点似乎与故障的服务器 1 采用相同的设置方式,我暂时仍不想尝试这个第二台服务器: 虽然这无关紧要,但我看到在容器中:

/var/discourse# ./launcher enter app
检测到 x86_64 架构。

…app:/var/www/discourse# which vips
/usr/bin/vips

ldd /usr/bin/vips | grep vips
libvips.so.42 => /usr/local/lib/libvips.so.42 (0x000070c9601bb000)

ls -l /usr/local/lib/libvips*
-rwxr-xr-x 1 root root 3097864 Jul 26 02:22 /usr/local/lib/libvips.so.42

ps aux | grep ‘[p]ostgres’
/usr/lib/postgresql/15/bin/postmaster -D /etc/postgresql/15/main

/usr/lib/postgresql/15/bin/postgres --version
postgres (PostgreSQL) 15.18 (Debian 15.18-1.pgdg12+1)

好吧,在服务器 2 的命令行上,它运行成功了。真是见鬼。我想这故事的教训就是:请使用命令行进行更新。谢谢 Ed_S