尝试安装 apache2

既是也不是。让我们退一步看看这个问题。

之前,听起来你正在使用 Apache 运行多个网站。Apache 监听端口 80 和 443,然后将请求作为“虚拟主机”进行“代理”(重定向),因此你可以在同一台服务器上运行多个网站,它们都监听相同的端口(80 和 443)。这就是“LAMP 入门 101”……也就是虚拟主机的运作方式。

现在,假设你以官方开箱即用(OOTB)的方式安装 Discourse。OOTB 版本的 Discourse 会尝试绑定到相同的端口,但由于 Apache 已经在使用(绑定)这些端口,因此会失败。你有以下选择:

  1. 让 Discourse 运行在 Unix 域套接字上,并配置 Apache 将 Discourse 应用作为虚拟主机进行反向代理。

注意:我测试过这种方法,它是可行的;但这并未得到 Discourse 的官方(甚至非官方)支持。

  1. 从 Apache 迁移到 nginx,让所有 Web 服务器都通过 nginx 运行,并将 Discourse 应用作为虚拟主机进行反向代理,同时为 Discourse-docker 生产应用使用 Unix 域套接字。

注意:这也未得到 Discourse 的官方支持;大多数运行 Apache 网站的人会发现,将他们所有的 Apache2 mod_rewrite 和编码的 geo-ip mod 内容移植到 nginx 有点“棘手”;但这当然是可行的,特别是如果你的应用是为 nginx 和 Apache2 两者构建的(这样会更容易一些,但依然未获得官方支持)。

  1. 将 Discourse Docker 容器暴露在除 80 和 443 之外的其他端口上。

注意:这也不(真正)推荐(但据我回忆,这是官方支持的)。然而,大多数人不想通过输入端口号(如 https://my-great-discourse-app.org:3334)来访问 Web 应用,因此大多数人在生产环境中不会这样做。开发环境则是另一回事。

作为一个拥有大量 LAMP 经验且现在越来越多使用 Discourse 的人,在“不了解你所有具体情况”的前提下,我的建议是将它们运行在独立的服务器上(这得到了 Discourse 的官方支持);但如果你资金非常紧张,必须将所有服务运行在同一台服务器上(或者只是喜欢拥有一台大而复杂的服务器),那么你就需要学习如何配置 Apache2,使其通过 Unix 域套接字对 Discourse 应用进行反向代理。

我测试过这种方法,确实可以配置 Apache2 通过 Unix 域套接字对 Discourse 进行反向代理;但该方案并未获得官方(任何程度的)支持。

注意:关于使用 HAProxy 配置 Apache2 的链接,是我无法轻松使其生效的方案,因此我放弃了它(没必要只使用 HAProxy,还有“更老的方法”可以做到)。不过,你也许最好直接遵循这篇 Discourse 教程:

希望这能在某种程度上对你有所帮助,@nekodroid

1 个赞