Bio
2021 年6 月 15 日 19:35
1
你好,
我试图创建两个独立的 Discourse 论坛(包括用户、主题、分类等)。然而,当我获取一个新实例并尝试使用相同的域名但不同的子域名进行托管时,它会导致我当前的 Discourse 实例变得无法访问。
例如,如果我的当前 Discourse 运行在 discourse.example.com ,然后我尝试在 discourse2.example.com 启动第二个 Discourse,现有的实例就会停止工作,并且在第二个 URL 中什么也看不到。但是,我可以重新构建 discourse.example.com 上的第一个 Discourse,这样我的第一个实例就恢复了。
在设置过程中,除了 Discourse 主机名之外,所有设置都与第一个实例相同。谁能解释为什么会发生这种情况,以及我如何为 discourse2.example.com 创建一个全新的实例?
Benjamin_D
(Benjamin Decotte)
2021 年6 月 15 日 20:17
3
或者,也可以将 Discourse 部署在同一台机器上运行其他网站,具体可参考:
如果您想在运行 Discourse 的同一台机器上托管其他网站,需要在 Docker 容器前面配置一个额外的 NGINX 或 HAProxy 反向代理。
注意:本指南面向高级管理员
本指南假设您已经成功运行了 Discourse——如果没有,您可能很难判断配置是否生效。
如果另一台服务器正在使用 80 或 443 端口,您将无法使用 ./discourse-setup 来设置 Discourse。您需要使用您喜欢的文本编辑器复制并编辑 samples/standalone.yml 文件。
在容器外部安装 nginx
首先,确保容器未运行:
cd /var/discourse
./launcher stop app
然后安装 nginx 和 certbot:
sudo apt-get update && sudo apt-get install nginx certbot python3-certbot-nginx
修改容器定义
这里我们将更改 Discourse 的实际设置方式。我们不希望容器监听端口,而是告诉它监听一个特殊的文件(socket)。
您需要编辑 /var…
在此特定情况下,其他网站即为 Discourse。
Bio
2021 年6 月 21 日 16:28
5
感谢大家的建议。我结合这两个网站的内容,成功搭建了第二个 Discourse 站点:
https://meta.discourse.org/t/running-other-websites-on-the-same-machine-as-discourse/17247(特别感谢 @angus 的回答)
https://chowdri.medium.com/how-to-install-multiple-discourse-on-one-server-150db95602bb
虽然这两个网站提到的流程非常相似,但第二个网站可以作为第一个链接的更友好入门补充。我强烈建议任何打算尝试相同操作的人,在配置系统时同时阅读这两篇文章。
目前,我的第二个 Discourse 站点被标记为“不安全”(因为我从之前的实例复制了证书到 /var/discourse/shared/standalone/ssl 目录,以避免在执行 sudo nginx -t 时出现“文件未找到”错误)。请问有人知道如何让第二个 Discourse 站点启用 HTTPS 安全连接吗(第一个站点没有任何问题)?提前感谢!
manuel
(Manuel Kostka)
2021 年6 月 21 日 17:27
6
为什么不试试 @pfaffman 的教程(@itsbhanusharma 在上面分享过)呢?它只需处理证书。我实际上已经跟随它操作过好几次了,至今仍然惊叹于它如何让这件事变得如此简单!
说实话,它也有一个缺点,那就是你会变得贪心,为任何小任务都额外启动一个实例……我想我现在已经有 7 个了,还需要更多
Bio
2021 年6 月 23 日 16:11
7
感谢您的建议。我正在尝试操作,但在指南中的几个地方遇到了困难:
我似乎找不到数据库密码(甚至不确定它在文件中是做什么用的)。
我的 app.yml 文件原本没有 after_postgres 部分,所以我按照其他部分(如 after_ssl、after_db_migrate 等)的格式,在 hooks 下添加了一个。如果这部分放错了位置,请告诉我,我完全是新手,对这类操作还不熟悉。
当我在 http://www.yamllint.com/ 上检查 YAML 文件的语法时,在将 after_postgres 部分放在 hooks 下的那一行,我收到了错误提示:(<unknown>): did not find expected key while parsing a block mapping。
如果您能澄清一下 @manuel 在遵循上述指南时所采取的步骤,我们将不胜感激。
manuel
(Manuel Kostka)
2021 年6 月 23 日 21:05
8
我实际上一直只为双容器架构操作,而且运行良好。你可以通过运行 ./discourse-setup --two-container 轻松安装 Discourse,然后分别调整 web_only.yml 和 data.yml 文件。
如果你打算尝试单容器方案,但相关步骤不够清晰,最好直接在相关主题下发帖并说明你遇到的问题。说实话,我自己也不清楚这些文件的具体运作方式……正因如此,我才特别高兴有一个简单的方案,让我终于能够为开发环境快速启动多个实例。另外,对开发来说还有一个非常便利的地方:任何新增的实例都会自动预装好插件。
关于语法错误:你是在缩进时使用了制表符(Tab)吗?它对格式的要求非常严格。
Bio
2021 年6 月 23 日 21:24
9
不,我没有使用制表符,而且我相当确定从指南中复制粘贴的内容也没有包含任何制表符(尽管我只是简单检查了一下)。如果可以的话,我希望避免采用双容器设置,因此我会在指南中发帖寻求帮助。非常感谢您的协助!