Discourse卡在维护模式

您好,我的 Discourse 服务器卡在维护模式。
我特意将其置于维护模式数月,自最初设置维护模式以来,我已升级了多个版本。

我的会话已过期,我已被登出,现在无法重新登录。

我可以 SSH 到 Discourse 服务器。
我已尝试以下步骤:

  1. SSH 到 Discourse 服务器
  2. 导航到 /var/discourse
  3. 运行:./launcher enter app
  4. 运行 rails c

我在这里尝试了几种禁用维护模式的方法。

[1] pry(main)> 
[2] pry(main)> 
[3] pry(main)> Discourse.disable_readonly_mode(Discourse::READONLY_MODE_KEY)
=> true
[4] pry(main)> Discourse.disable_readonly_mode
=> true

当我将焦点从 SSH 转移到我的网页浏览器时,我可以看到维护模式横幅消失了。

然后几秒钟后它又回来了。

我已参考过这些文档:

请帮忙。

第一个链接主题中的某人通过停止然后重新启动容器获得了一些成功。这是否值得一试?

感谢您的建议。但不幸的是,这并没有帮到我 :frowning:

我运行了

docker ps
docker kill app
docker start app

有趣的是,我还尝试手动启用只读模式:
例如:

[8] pry(main)> Discourse.enable_readonly_mode
=> true
[9] pry(main)> Discourse.disable_readonly_mode
=> true
[10] pry(main)>

执行此操作后,我注意到横幅又出现了,我甚至无法点击登录按钮,因为它显示“网站处于只读模式,登录已禁用。”,我还看到了横幅说:

网站处于只读模式。请继续浏览,但回复、点赞和其他操作暂时被禁用。

当我再次调用 disable_readonly_mode 时,维护模式横幅消失了,我可以点击登录按钮。Discourse 甚至会将我转交给身份验证 SSO 提供商。

但是,当我被重定向回 Discourse 时,我看到一个完整的页面,上面写着“网站处于只读模式。交互已禁用。”

我做了一些调查,虽然还没有找到解决方法,但似乎 /u/admin-login 链接可以绕过 read_only,并允许你登录:

@41821 您可以尝试 Discourse.disable_readonly_mode(Discourse::USER_READONLY_MODE_KEY)

4 个赞

我所做的一切都无法让我摆脱该状态。
Discourse.disable_readonly_mode(Discourse::USER_READONLY_MODE_KEY) 之后,它会变为读/写一秒钟,然后立即恢复为只读。日志中没有可辨别的内容。刷新 Redis 也没有帮助。手动清除 Redis 键也没有帮助。

这很可能是一个 bug,因为将版本从 2.8.7 回滚到 2.8.3(我之前能正常工作的版本)可以解决此问题。

我尝试通过代码来找出 bug 在哪里引入的,但实际上无法弄清楚。

1 个赞

这是一个自托管网站吗?刷新 Redis 应该可以清除所有内容,因为只读逻辑完全依赖于设置正确的 Redis 键。