当 'discourse enable_readonly' 启用时,站点自动退出只读模式。

大家好,

我正在使用 Ansible 设置一些自动化部署和迁移,但遇到了只读模式的问题。

当我通过以下方式启用只读模式时:
docker exec app discourse enable_readonly
或者

./launcher enter app
discourse enable_readonly

大约 1 分 20 秒后,站点会自动退出只读模式。

如果我通过 WebUI(admin/backups 部分)启用只读模式,它会一直保持启用状态,直到我禁用它。

有什么想法吗?

1 个赞

您检查过日志吗?也许有某个后台作业或插件正在中断此过程。

嗨 Lilly,

感谢您的回复。这是一个全新的默认安装,我没有安装任何插件,也没有创建任何作业。我应该查看哪些日志?抱歉,我有点新手。

我尝试了 tail -f

/var/discourse/shared/standalone/log/rails/unicorn.stdout.log
/var/discourse/shared/standalone/log/rails/unicorn.stderr.log
/var/discourse/shared/standalone/log/rails/production_errors.log
/var/discourse/shared/standalone/log/rails/production.log
/var/discourse/shared/standalone/log/rails/sidekiq.log
/var/discourse/shared/standalone/log/var-log/redis/current

我一边查看日志一边等待事件发生,但没有看到任何异常之处。

奇怪的是,通过 WebUI 激活时一切正常,但通过 CLI 激活时却不行。

我也遇到了使用该功能的问题,包括启用和禁用只读模式。上次我最终在 rails 中运行了 Discourse.enable_readonly_mode

每次发生这种情况都是紧急情况,我还没有调查过问题可能是什么。

供参考,在我自己的 Ansible 工具中,我不使用只读模式,但我使用了 Introducing Post Deployment Migration

1 个赞

谢谢 Jay。我怀疑我正在采用一种 XY 方法来解决这个问题。我将查看部署后迁移。感谢您提供的信息。

我想另一个选择可能是通过 API 调用激活 RO。

- name: post migrations
  shell: "docker exec  {{ discourse_yml }} bash -c 'rake db:ensure_post_migrations db:migrate'"
  become: yes

所以这可能适用于只读模式:

- name: post migrations
  shell: "docker exec  {{ discourse_yml }} bash -c 'echo Discourse.enable_readonly_mode | rails c'"
  become: yes

谢谢,非常感谢。我今晚就试试。

1 个赞

您使用的只读模式导致了这种差异吗?

3 个赞

感谢 JammyDodger!这些信息和链接非常有帮助。我不确定什么构成容器重启——据我所知,我的容器并没有每隔大约 1:30 重启一次,这是在使用 discourse enable_readonly 时 RO 模式保持启用的时间,即 Discourse.enable_readonly_mode(Discourse::READONLY_MODE_KEY)

但我可以确认 Discourse.enable_readonly_mode(Discourse::USER_READONLY_MODE_KEY) 可以“无限期”保持,这正是我想要达到的目的 :+1:

1 个赞

为了完整起见:

- name: Set read-only mode for live forum host
  ansible.builtin.shell: |
      docker exec app bash -c 'echo Discourse.enable_readonly_mode\(Discourse::USER_READONLY_MODE_KEY\) | rails c'
  register: enable_readonly_output
2 个赞

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.