正如上文所述,主机中的容器从未运行过 install-nginx。
我不确定这个话题是否特别有用。
你不喜欢 Discourse 的架构,不接受开发人员关于产品优化方式的说明,似乎不熟悉 Docker,而且你自己在提问时承认了撒谎,这正在集体浪费我们的时间。
这个话题已经标记了 unsupported-install 标签,因为你已经远远超出了为社区提供免费支持的范围。如果这些内容真的对你很重要,为什么不去 Marketplace 开启一个新话题呢?这样你就可以自己花钱聘请顾问来学习,而不是占用我们的时间。
我还没有用过,抱歉。所以我需要将上述 sed 命令放入 app.yml 的 hooks 部分吗?是否有示例展示如何在 docker_discourse 仓库的启动阶段修改文件?目前该部分只有一个用于插件的 git clone 命令。
我或许可以将这些 sed 命令放入 cmd 部分,就像 git clone 那样,但我不确定 install-nginx 脚本会位于哪个目录。
另外,app.yml 存放在哪里?我无法链接到上面的 hooks 部分,因为仓库中的 containers 目录是空的 ![]()
所有关于如何执行这些操作的文档都存在于这里的 meta 上。我们大家都喜欢跳过阅读手册,但在这种情况下,你真的应该回归基础。
坦白说,你处理这一切的方式完全反了。
我要再次指向 unsupported-install 标签——如果你决定偏离标准安装方式,那么由此产生的额外技术负担将由你自己承担。
你是如何安装该实例的?
抱歉,我在发帖前确实努力搜索过文档。我非常希望能有一份 Discourse 手册,我也已经阅读了许多带有 #howo 标签的话题。不幸的是,似乎并没有 Discourse 手册。
我很感激你的帮助,我相信这也会帮助未来那些搜索如何执行这些操作文档的其他人…
首先运行了 discourse-setup,但这最终导致安装失败。然后我手动编辑了 app.yml,接着运行了 ./launcher rebuild app。
我觉得这是一个有趣的讨论,只是为了更好地了解 Discourse。
我会选择 nginx,也许可以修改 app.yml,在编译过程中添加 mod_security 模块,并构建我自己的基础镜像。
Discourse 是一个复杂的软件,它运行在 Rails 之上,而 Rails 本身部署起来就相当复杂且难以保持一致性。这就是为什么官方团队在制作 Docker 镜像时付出了额外的努力。
这个镜像中包含了许多“黑科技”,进行了大量的优化,以确保在支持的部署环境中尽可能高效地运行。
了解了这一点,并且能够理清所有必要的组件(例如,运行 Discourse 所需的 2-3 个代码仓库),实现你想要的功能并非不可能。
既然你的当前架构是 nginx -> varnish -> apache,为什么不尝试 nginx -> varnish -> Discourse 呢?只需将 mod_security 添加到基础镜像中,并通过 hooks 进行配置即可。
mod_security 能提升安全性的可能性微乎其微。Discourse 的维护团队对安全性高度重视,因此 mod_security 本应解决的问题很可能已经被妥善解决。此外,如果您在镜像中添加 mod_security,导致 Discourse 无法运行的概率显著大于零。如果您安装了 mod_security 后发现 Discourse 无法正常工作,您将不得不自行修改 Discourse 以适配 mod_security,并说服 Discourse 维护团队您发现的是合理的安全隐患,或者被迫自行维护一个分支版本。这不会带来任何好处。 几乎可以肯定,这样做不会带来任何好处。
同意,另一个 WAF 近乎于“通过隐匿实现安全”。
Discourse 正在采取真正的主动措施来保障讨论安全:
本话题已偏离了最初关于在 Apache 上运行 Discourse(而非通过代理回退到 Nginx)的问题。
但我认为,讨论在 Discourse 之前部署 WAF(如 mod_security 或其他)对社区是有益的,因此我创建了一个独立的话题,专门讨论 Discourse + WAF: