我继续在安装 Discourse 时遇到困难。这是 ChatGPT 整理的另一份报告。我相信它准确地反映了我的经历。
报告:Discourse 安装和 Sidekiq 服务缺失问题
背景:
我们尝试在 Vultr 实例上全新安装 Discourse,旨在建立一个稳定且可用的部署。然而,我们遇到了重大问题,特别是 Sidekiq 等服务缺失,这导致电子邮件发送和后台作业处理失败。
遇到的问题摘要
- 安装了意外的版本
- 安装默认选择了
tests-passed,而不是预期的v3.4.0.beta4-dev,这可能是一个不稳定的版本。 VERSION文件缺失,不清楚具体安装了哪个版本。
- Sidekiq 服务缺失
- Discourse 容器内缺少
/etc/service/sidekiq目录。 - 这导致所有后台作业(电子邮件、通知、计划任务)无法运行。
- Discourse Git 仓库问题
- 在容器内运行
git rev-parse --abbrev-ref HEAD返回tests-passed,证实安装了非预期的版本。 - Git 抛出 “检测到可疑所有权” 错误,需要手动干预(
git config --global --add safe.directory /var/www/discourse)。
- 潜在的依赖项问题
- 即使检出了旧版本的 Discourse,也担心在安装过程中可能会拉取新的依赖项(Ruby、Redis、Sidekiq),可能导致兼容性问题。
- 如果 Discourse 的依赖项没有正确固定,安装在不同环境中的行为可能会不一致。
- SSL 证书速率限制
- 由于 超出速率限制,尝试获取新的 Let’s Encrypt SSL 证书失败。
- 这导致 Nginx 无法启动,因为它无法加载预期的证书文件。
计划的后续步骤
- 执行完全擦除和重新安装
- 完全删除
/var/discourse并重新克隆仓库。 - 在运行安装之前,手动检出稳定版本(例如
v3.4.1)。 - 使用
./discourse-setup而不是依赖默认值,以确保参数正确。
- 确保 Sidekiq 已安装
- 在重新构建之前,验证
sidekiq服务是否已正确包含在构建过程中。 - 如果重新构建后 Sidekiq 仍然缺失,请通过
bundle list | grep sidekiq手动检查其安装情况。
- 将依赖项固定到稳定版本
- 使用已知的稳定 Discourse Docker 镜像(例如
discourse/discourse:2.0.20240101)来避免与依赖项相关的问题。 - 在容器内锁定 gem 版本(
bundle install --deployment --without test development)。
- 重新尝试 SSL 证书颁发
- 等待 Let’s Encrypt 速率限制重置,然后重试 SSL 证书生成。
- 如果问题仍然存在,可以考虑暂时使用自签名证书进行故障排除。
寻求反馈
鉴于这些挑战,我们希望获得 Discourse 团队和社区关于以下方面的意见:
- 全新安装时
/etc/service/中缺少 Sidekiq – 是否有其他人遇到过此问题? - 确保依赖项稳定性的最佳实践 – 是否有推荐的固定 Discourse 安装依赖项版本的方法?
- 默认安装
tests-passed可能存在的问题 – 在检索版本的方式上是否存在问题?
在我们继续重新安装之前,任何见解都将有所帮助。提前感谢!