通过浏览器更新 Discourse 与通过终端使用 ./launcher rebuild app 更新的流程是否相同?
如果相同,除了能够单独更新插件之外,两者还有什么优势?
我不是这方面的专家,所以如果我说了一些不合逻辑的话,请原谅。
我之所以这样问,是因为这是我第二次尝试通过浏览器更新,结果卡住了。第一次更新开始后卡在了更新过程的中间,然后昨晚(第二次)我点击了更新按钮,去睡觉了,早上醒来时它甚至还没有开始。我不得不取消并重新启动。
通过浏览器更新 Discourse 与通过终端使用 ./launcher rebuild app 更新的流程是否相同?
如果相同,除了能够单独更新插件之外,两者还有什么优势?
我不是这方面的专家,所以如果我说了一些不合逻辑的话,请原谅。
我之所以这样问,是因为这是我第二次尝试通过浏览器更新,结果卡住了。第一次更新开始后卡在了更新过程的中间,然后昨晚(第二次)我点击了更新按钮,去睡觉了,早上醒来时它甚至还没有开始。我不得不取消并重新启动。
尽可能使用UI来最小化停机时间(几秒钟)
有时某些更新形式(例如更新PostgreSQL版本)需要命令行更新。在那些时候这是有必要的,但会导致标准安装出现一些停机时间。通常需要20分钟。请选择非高峰时段。
UI应该会明确指出那些时候。
如果您想添加或删除插件,则需要使用控制台重建。
我现在正在更新,我注意到论坛仍在运行,只是有时会慢一些。这比使用终端要好,因为使用终端似乎会让论坛完全无法工作。感谢您的澄清。
即使对我这样的非专业人士来说也是如此吗?我的意思是,它会显示一些东西,告诉我应该改用终端吗?
从技术上讲,您认为有一天我们会可以在浏览器中完成所有事情吗?我不知道这个过程的技术细节,所以才问。
它又崩溃了……
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 已更新 ![]()
尝试创建一个交换空间:
似乎这个错误消息最近非常普遍,并且总是通过创建交换空间来解决。我不知道为什么,因为 Discourse 的官方要求没有改变。
我以前见过这个词,但我不知道它是什么,有什么用。
感谢您分享这个链接。我一定会照做的,如果遇到任何问题,我会分享出来。
当我进入 DigitalOcean 时,我看到我的 droplet 是这样的:
![]()
所以,我“符合”您分享的那个交换文件流程的条件,对吗?因为我的服务器内存小于等于 2GB。
如果小于 2GB,我建议创建一个 swapfile。我的只有 1GB,所以我肯定需要一个。
据我所知,swap 文件基本上会占用一些存储空间,并将其转换为内存使用。
那么 ./discourse-setup 应该已经自动创建了交换空间。我对系统管理的奥秘不太熟悉,所以我让其他人来详细说明这一点。
话虽如此,即使超出需求,用户也遇到过这个问题,所以这里面肯定有些不对劲的地方。
关于界面上的更新,我多年来觉得它有点不可靠。我不太清楚为什么,有时在重建成功的情况下,它会莫名其妙地失败。
有没有办法通过终端查看是否已经有一个了?(也许这回答了我的问题?我对系统管理的奥秘不太了解)
好的,我想我不是一个人。
我有点困惑……使用终端,这是两个不同的东西吗?更新和重建?因为我一直在只使用 ./launcher rebuild app,而且它总是有效的。
好的,谢谢。这很有帮助!
抱歉,我的意思是来自界面,我已经修正了我的帖子。 ![]()
好的,现在明白了 ![]()
是的,我的经历也一样。
缺点是重建会完全关闭论坛,这不太理想,但没办法……我们必须这样做。
更新
由于我在这方面没有专业知识,我使用了 Claude 和 ChatGPT 来帮助我弄清楚。因此,正如建议的那样,我选择了 swapfile 方法,但正如有人指出的那样,也许在我安装 Discourse 时已经有了一个 swapfile。为了确认,我在终端中运行了
sudo swapon --show
并得到了这个结果:
![]()
所以我看了“USED”这一列,心想:“嗯,如果 swapfile 用于在 RAM 不足时帮助提高运行流畅度,但它显示 swapfile 使用了 2GB 中的 1.9GB,那将无济于事”
所以我问 ChatGPT 是否可以清除/清空 swapfile,它给了我这个命令:
sudo swapoff -a && sudo swapon -a
运行它,让它完成工作,然后再次运行另一个命令:
sudo swapon --show
现在我看到这个:
![]()
所以我想,偶尔通过这个过程清除/清空 swapfile 是有好处的?
尝试增加交换空间可能值得一试:
从命令行重建占用的内存更少。
使用两个容器安装,可以在旧容器继续工作的同时构建新容器(如果你的RAM足够的话)。这会带来更少的停机时间。
有时你需要通过命令行进行重建,因为底层的库需要更新,而这些不能通过用户界面完成。
你可以
cd /var/discourse
grep swap discourse-setup
查看它是如何创建swap的命令。如果你运行swapoff(以使文件不再忙碌),那么你可以运行创建文件的命令(fsallocate)(如果需要的话,增大它的大小),然后格式化为swap(mkswap)并用swapon -a开启交换空间。
如果你有许多插件,可能总共需要5到6GB的空间。