浏览器更新与终端

通过浏览器更新 Discourse 与通过终端使用 ./launcher rebuild app 更新的流程是否相同?
如果相同,除了能够单独更新插件之外,两者还有什么优势?

我不是这方面的专家,所以如果我说了一些不合逻辑的话,请原谅。

我之所以这样问,是因为这是我第二次尝试通过浏览器更新,结果卡住了。第一次更新开始后卡在了更新过程的中间,然后昨晚(第二次)我点击了更新按钮,去睡觉了,早上醒来时它甚至还没有开始。我不得不取消并重新启动。

1 个赞

尽可能使用UI来最小化停机时间(几秒钟)

有时某些更新形式(例如更新PostgreSQL版本)需要命令行更新。在那些时候这是有必要的,但会导致标准安装出现一些停机时间。通常需要20分钟。请选择非高峰时段。

UI应该会明确指出那些时候。

如果您想添加或删除插件,则需要使用控制台重建。

3 个赞

我现在正在更新,我注意到论坛仍在运行,只是有时会慢一些。这比使用终端要好,因为使用终端似乎会让论坛完全无法工作。感谢您的澄清。

即使对我这样的非专业人士来说也是如此吗?我的意思是,它会显示一些东西,告诉我应该改用终端吗?

从技术上讲,您认为有一天我们会可以在浏览器中完成所有事情吗?我不知道这个过程的技术细节,所以才问。

1 个赞

它又崩溃了……
Spinning up 1 Unicorn worker(s) that were stopped initially

ERR_PNPM_RECURSIVE_EXEC_FIRST_FAIL 命令被 SIGKILL (强制终止) 杀死:ember build -prod Docker Manager: FAILED TO UPGRADE

我会经常遇到这种情况吗?可能是什么原因造成的,又该如何解决?

我怀疑在标准安装中它将始终保持这样。

您可以在这里找到有关配置“我们离线,稍后再回来”屏幕的资源,以缓解这 20 分钟的等待时间,但这并非标准安装,我建议您保持简单易于支持。

几天前我看到了,但对我来说确实非常复杂。

我现在发布我更新时看到的错误。它又崩溃了。在我之前的回复中。

在它崩溃后,我点击了重新启动更新的按钮,它又卡在了这里,这和昨晚发生的情况一样:

这是我注意到的,但不知道是否是巧合:当它卡在什么都不发生的状态时,我点击“重置更新”。尝试重新启动,但什么也没发生。然后我回到包含所有更新的页面,然后点击“更新”按钮。这次,它开始更新了。不确定代码中是否有东西坏了,以至于在重置后,“重新启动”按钮实际上什么也没做?我不知道,但我只是分享我的经历。

现在它又在更新了,在我做了我刚才描述的操作之后。

我现在很困惑……它又崩溃了,但当我刷新浏览器时,它显示 Discourse 已是最新版本……
当我进入插件所在的主更新页面时,它确实显示 Discourse 已更新 :thinking:

尝试创建一个交换空间:

似乎这个错误消息最近非常普遍,并且总是通过创建交换空间来解决。我不知道为什么,因为 Discourse 的官方要求没有改变。

2 个赞

我以前见过这个词,但我不知道它是什么,有什么用。

感谢您分享这个链接。我一定会照做的,如果遇到任何问题,我会分享出来。

当我进入 DigitalOcean 时,我看到我的 droplet 是这样的:
image

所以,我“符合”您分享的那个交换文件流程的条件,对吗?因为我的服务器内存小于等于 2GB。

1 个赞

如果小于 2GB,我建议创建一个 swapfile。我的只有 1GB,所以我肯定需要一个。
据我所知,swap 文件基本上会占用一些存储空间,并将其转换为内存使用。

2 个赞

那么 ./discourse-setup 应该已经自动创建了交换空间。我对系统管理的奥秘不太熟悉,所以我让其他人来详细说明这一点。

话虽如此,即使超出需求,用户也遇到过这个问题,所以这里面肯定有些不对劲的地方。

关于界面上的更新,我多年来觉得它有点不可靠。我不太清楚为什么,有时在重建成功的情况下,它会莫名其妙地失败。

3 个赞

有没有办法通过终端查看是否已经有一个了?(也许这回答了我的问题?我对系统管理的奥秘不太了解

好的,我想我不是一个人。

我有点困惑……使用终端,这是两个不同的东西吗?更新和重建?因为我一直在只使用 ./launcher rebuild app,而且它总是有效的。

1 个赞

好的,谢谢。这很有帮助!

2 个赞

抱歉,我的意思是来自界面,我已经修正了我的帖子。 :slight_smile:

2 个赞

好的,现在明白了 :slight_smile:
是的,我的经历也一样。
缺点是重建会完全关闭论坛,这不太理想,但没办法……我们必须这样做。

1 个赞

我问了 Claude 关于如何检查是否存在交换文件的问题,这是它的回答:

更新

由于我在这方面没有专业知识,我使用了 Claude 和 ChatGPT 来帮助我弄清楚。因此,正如建议的那样,我选择了 swapfile 方法,但正如有人指出的那样,也许在我安装 Discourse 时已经有了一个 swapfile。为了确认,我在终端中运行了

sudo swapon --show

并得到了这个结果:

image

所以我看了“USED”这一列,心想:“嗯,如果 swapfile 用于在 RAM 不足时帮助提高运行流畅度,但它显示 swapfile 使用了 2GB 中的 1.9GB,那将无济于事

所以我问 ChatGPT 是否可以清除/清空 swapfile,它给了我这个命令:

sudo swapoff -a && sudo swapon -a

运行它,让它完成工作,然后再次运行另一个命令:

sudo swapon --show

现在我看到这个:
image

所以我想,偶尔通过这个过程清除/清空 swapfile 是有好处的?

尝试增加交换空间可能值得一试:

2 个赞

从命令行重建占用的内存更少。

使用两个容器安装,可以在旧容器继续工作的同时构建新容器(如果你的RAM足够的话)。这会带来更少的停机时间。

有时你需要通过命令行进行重建,因为底层的库需要更新,而这些不能通过用户界面完成。

你可以

cd /var/discourse
grep swap discourse-setup

查看它是如何创建swap的命令。如果你运行swapoff(以使文件不再忙碌),那么你可以运行创建文件的命令(fsallocate)(如果需要的话,增大它的大小),然后格式化为swap(mkswap)并用swapon -a开启交换空间。

如果你有许多插件,可能总共需要5到6GB的空间。

4 个赞