Discourse 3.5.0.beta2-dev 的问题 - SMTP 和后台作业

我继续在安装 Discourse 时遇到困难。这是 ChatGPT 整理的另一份报告。我相信它准确地反映了我的经历。

报告:Discourse 安装和 Sidekiq 服务缺失问题

背景:
我们尝试在 Vultr 实例上全新安装 Discourse,旨在建立一个稳定且可用的部署。然而,我们遇到了重大问题,特别是 Sidekiq 等服务缺失,这导致电子邮件发送和后台作业处理失败。


遇到的问题摘要

  1. 安装了意外的版本
  • 安装默认选择了 tests-passed,而不是预期的 v3.4.0.beta4-dev,这可能是一个不稳定的版本。
  • VERSION 文件缺失,不清楚具体安装了哪个版本。
  1. Sidekiq 服务缺失
  • Discourse 容器内缺少 /etc/service/sidekiq 目录。
  • 这导致所有后台作业(电子邮件、通知、计划任务)无法运行。
  1. Discourse Git 仓库问题
  • 在容器内运行 git rev-parse --abbrev-ref HEAD 返回 tests-passed,证实安装了非预期的版本。
  • Git 抛出 “检测到可疑所有权” 错误,需要手动干预(git config --global --add safe.directory /var/www/discourse)。
  1. 潜在的依赖项问题
  • 即使检出了旧版本的 Discourse,也担心在安装过程中可能会拉取新的依赖项(Ruby、Redis、Sidekiq),可能导致兼容性问题。
  • 如果 Discourse 的依赖项没有正确固定,安装在不同环境中的行为可能会不一致。
  1. SSL 证书速率限制
  • 由于 超出速率限制,尝试获取新的 Let’s Encrypt SSL 证书失败。
  • 这导致 Nginx 无法启动,因为它无法加载预期的证书文件。

计划的后续步骤

  1. 执行完全擦除和重新安装
  • 完全删除 /var/discourse 并重新克隆仓库。
  • 在运行安装之前,手动检出稳定版本(例如 v3.4.1)。
  • 使用 ./discourse-setup 而不是依赖默认值,以确保参数正确。
  1. 确保 Sidekiq 已安装
  • 在重新构建之前,验证 sidekiq 服务是否已正确包含在构建过程中。
  • 如果重新构建后 Sidekiq 仍然缺失,请通过 bundle list | grep sidekiq 手动检查其安装情况。
  1. 将依赖项固定到稳定版本
  • 使用已知的稳定 Discourse Docker 镜像(例如 discourse/discourse:2.0.20240101)来避免与依赖项相关的问题。
  • 在容器内锁定 gem 版本(bundle install --deployment --without test development)。
  1. 重新尝试 SSL 证书颁发
  • 等待 Let’s Encrypt 速率限制重置,然后重试 SSL 证书生成。
  • 如果问题仍然存在,可以考虑暂时使用自签名证书进行故障排除。

寻求反馈

鉴于这些挑战,我们希望获得 Discourse 团队和社区关于以下方面的意见:

  • 全新安装时 /etc/service/ 中缺少 Sidekiq – 是否有其他人遇到过此问题?
  • 确保依赖项稳定性的最佳实践 – 是否有推荐的固定 Discourse 安装依赖项版本的方法?
  • 默认安装 tests-passed 可能存在的问题 – 在检索版本的方式上是否存在问题?

在我们继续重新安装之前,任何见解都将有所帮助。提前感谢!