在 Lightsail 上安装 Discourse

你好,我正在尝试搭建我的第一个 Discourse 论坛,需要一些帮助……

app.yml 中的设置看起来都没问题。我已经尝试过重启,但 Discourse 仍然无法访问。任何关于如何开始排查问题的建议都将不胜感激。

我对 Lightsail 不太确定,但就 AWS 而言,如果域名没有正确指向其 IP,90% 的情况下问题出在安全组上。您能否尝试在 AWS 安全组中为您的 VPS 开放必要的端口(80、443、587 等)?

感谢您的回复。我已开放这些端口(443 和 587 之前是关闭的)并重新构建了应用,但问题仍未解决。我怀疑问题出在 DNS 方面,但不确定还需要调整哪些设置。目前我尚未配置 becomeachiron.com,仅使用了子域名。这可能会导致子域名失效,但我不确定在 Lightsail 上应将其托管在哪里。

您是如何仅设置子域名的?

我们最近迁移到了 Discourse 和 Amazon Lightsail(因此我的专业知识有限)。
我拥有完全相同的配置,并且可以毫无问题地安装 Discourse。

我首先安装了 Amazon 官方的 Debian AMI。
然后将主机名配置为我的域名(discourse.becomeachiron.com)。
接着将 Debian 升级到最新版本:

sudo apt update
sudo apt upgrade

之后按照安装 Discourse 的说明操作(安装 git,然后安装 Discourse)。
一切顺利,安装成功。

我还需要打开 443 端口以启用 HTTPS(并在 Discourse 中进行相应配置)。

您描述的问题似乎与 DNS 和 IP 解析有关。

在 Lightsail 中,一台机器有三个 IP 地址:

  • 静态私有 IP:仅可在同一区域内同一网络中的内部机器访问。
  • 动态公共 IP:在启动实例时动态分配,每次停止机器时都会丢失,重新启动时会获得一个新的 IP。
  • 静态公共 IP:您可以分配给机器的公共 IP 地址。该地址是永久性的(但如果机器停止运行,您仍需按小时付费,费用很低,但确实会产生费用)。

您是否为机器分配了静态公共 IP 地址?

如果是,那么您需要在 DNS 中配置的就是这个 IP 地址。

如果不是,您必须使用当前的公共 IP 地址,并且每次启动机器时都需要更新它,因为 IP 会发生变化(我推测您可以安装一个动态 IP 客户端,在机器上自动完成此操作,前提是您能找到与 Amazon DNS 兼容的版本)。

最后,您需要等待一段时间,让 DNS 更改生效。

看起来您尚未设置该域名:

 pfaffman@balloon:~$ dig +short discourse.becomeachiron.com @NS-1041.AWSDNS-02.ORG

未返回任何结果。此链接 可用于测试传播情况,但截至目前,在 AWS 名称服务器上尚无您的子域名记录。

没有记录,因为他似乎没有使用 Amazon DNS,他表示使用的是 Google DNS。

因此,他需要在 Google 中进行配置。

discourse.becomeachiron.com 当前解析到 99.79.192.57

感谢大家的回复。理想情况下,我希望将 Discourse 托管在主域名上,而不是子域名。但我找到的所有说明都坚持要求使用子域名。这是否是必须的?

我也正在努力处理这一切 :slight_smile:

我了解到,可以使用不带 www 或 Discourse 子域名的纯域名。

但这并非默认配置,而且似乎操作起来不太容易。也许像您那样先尝试默认方式会更好。

我再强调一次:您是否为 Lightsail 实例配置了静态 IP 地址?

默认情况下,该地址是动态的。

如果尚未配置,请创建一个静态 IP。

进入 Lightsail 控制台,选择您的实例并打开“网络”选项卡。
然后选择“创建静态 IP”。

您的实例将获得一个新的永久 IP 地址。

接下来,前往 Google DNS,将该 IP 地址与您的机器名称进行注册。

我目前的进展如下:

在 Lightsail 中:

  • 创建了一个静态 IP 并将其绑定到我的实例(感谢 fernando)
  • 创建了一个 DNS 区域

在 Google Domains 中:

  • 将名称服务器更新为 DNS 区域中的名称服务器
  • 创建了一个子域名并将其指向静态 IP

Discourse 已正确设置——我可以通过公共 IP 访问它。除非我遗漏了什么,现在我等待 DNS 生效。

你搞错了。

你的 SOA 记录指向的是 AWS DNS 服务器,而不是 Google,但你却说正在修改 Google 中的 DNS 记录。

becomeachiron.com
primary name server = ns-612.awsdns-12.net
responsible mail addr = awsdns-hostmaster.amazon.com
serial = 1
refresh = 7200 (2 hours)
retry = 900 (15 mins)
expire = 1209600 (14 days)
default TTL = 86400 (1 day)

becomeachiron.com nameserver = ns-1041.awsdns-02.org
becomeachiron.com nameserver = ns-1824.awsdns-36.co.uk
becomeachiron.com nameserver = ns-216.awsdns-27.com
becomeachiron.com nameserver = ns-612.awsdns-12.net

如果你使用的是 Amazon DNS,请修改其中的 DNS 设置;如果你使用的是 Google DNS,请将你的 SOA 记录指向 Google。

没错!这正是我想表达的。我本应附上 whois 记录。您的解释比我更清晰。

因此,请更改 whois 记录,或更新 AWS 名称服务器。

我刚才没理解您的意思,抱歉。

我有点困惑……我通过 Google Domains 注册了域名,但 Lightsail 生成了名称服务器。

您可以在一个注册商处注册域名,并使用其他提供商的 DNS 服务。

购买域名时,您购买的仅仅是域名名称以及存储在域名注册商服务器上的 SOA 记录。

DNS 服务与域名提供商是相互独立的。
SOA 记录会告知您的 DNS 服务器所在的位置。

当然,许多域名注册商(如 Google Domains)会在价格中包含 DNS 服务。

但您已在 Amazon Lightsail 购买了 DNS 服务,这导致您的 SOA 记录在 Google 中发生了更改。

我并未在 Amazon 购买 DNS 服务,而是使用外部 DNS 服务(据我所知,Amazon 会对 DNS 服务收费)。

在这种情况下,您需要在您的提供商(即您的情况中的 Google)处自行更新 DNS 记录。
此时,您需要将 SOA 记录更改为 Google DNS 的默认配置。

或者,您可以使用 Amazon 的 DNS 服务并通过其更新记录。在这种情况下,您保留 SOA 记录不变,并使用 Amazon 的工具来更改 DNS 记录。

如果您在 Amazon 上使用邮件服务,可能您已经同意更改 SOA 记录并将其指向 Amazon 服务。

您本质上需要的是 Lightsail VPS 的公共 IP 地址,然后选择在任何您喜欢的地方管理您的 DNS。

如果您希望通过亚马逊来管理这些,可以使用 Route 53,它会为您提供名称服务器,您可以在域名注册商(例如 Google)的域名设置中更新这些名称服务器。

或者,您可以编辑当前的区域文件(在域名的“管理 DNS”部分),并在其中更新您的 A 记录。

根据上面的内容,您希望在主域名上托管,我可以帮您设置。这就像正常的安装一样,这样做完全没问题,因为有时人们只是希望他们的论坛位于不同的域名上。

例如:Twitter 社区论坛

再次感谢大家!我已经准备就绪:http://discourse.becomeachiron.com/

我还在整理这些组件具体是如何协同工作的——我不常接触 DNS 相关事务。现在我需要想办法把我的主域名上线 :slight_smile:

看起来您正在使用 AWS Route53 来管理您的 DNS。

对于主域名,请按以下步骤操作:

  1. 为主域名(用 @ 表示)创建一个指向您的 Lightsail IP 的别名(A)记录。
  2. 编辑您的 app.yml 文件以使用主域名。
  3. 重新构建。
  4. 运行 Discourse 重映射。

您只需完成以上步骤即可。