Discourse 在 AWS EC2 上的设置在默认 IPv4 DNS 下无法正常工作

大家好,

我是 Discourse 的新手,正在按照 discourse/docs/INSTALL-cloud.md at main · discourse/discourse · GitHub 在 AWS EC2 实例上测试 Discourse 的设置。但我无法成功启动它。以下是我遇到的问题:

在购买所有资源之前,我想在没有域名的情况下先测试网站,因此我使用了该实例的公共 IPv4 DNS 作为 Discourse 的主机名来访问站点,例如 https://ec2_ip_address.us-west-1.compute.amazonaws.com/。
我通过安全组在实例上开放了端口 80 和 443,并验证这些端口可以从公共网络访问(使用 Python 简单服务器进行了测试)。
但在运行 ./discourse-setup./launcher rebuild app 启动 Discourse 服务器后,我在浏览器中收到“无法访问此网站”的错误。

我尝试运行 Discourse 诊断工具,结果返回:

Discourse version at ec2-ip_address.us-west-1.compute.amazonaws.com: NOT FOUND
Discourse version at localhost NOT FOUND

我不完全确定电子邮件设置是否正常工作,但我假设站点可访问性与电子邮件问题是分开的。

有人能指出我遗漏了什么,或者如何调试此问题吗?

非常感谢!

3 个赞

欢迎来到 Meta Discourse 社区 :slightly_smiling_face:

这可能无关紧要,但我注意到这里存在不一致:

2 个赞

你好,Jonathan,

感谢确认。我在此处省略了 IP 地址,URL 应该是正确的。

3 个赞

您的主机名上显示 Not found 状态,很可能是因为网站尚未上线。您需要提供更多信息,特别是来自 discourse-doctor 日志的内容。

重建/引导过程是否成功完成?

如果 EC2 实例性能不足,Discourse 可能需要一些时间才能启动(在某些情况下约为 3-5 分钟)。

您应该关注的是:如果构建成功完成,请通过 docker ps 确认容器正在运行,并监听 80 和 443 端口。一旦确认这一点,问题就出在 AWS 安全组配置上,而非安装本身。

3 个赞

您能否确认可以通过主机名访问该服务器?

2 个赞

您的主机名显示“未找到”状态,很可能是因为网站尚未上线。您需要提供更多来自 discourse-doctor 日志的信息。

同意。我会关注构建日志,看看是否有问题。如果日志中有错误,该如何调试?

您能否验证是否可以通过主机名访问服务器?

是的,我已验证主机名,并且端口 80 和 443 在浏览器中均可访问。我创建了一个简单的 Python HTTP 服务器来提供某些文件,并且在浏览器中可以看到响应。

2 个赞

你在日志中看到什么了吗?类似这样的路径:

/var/discourse/shared/standalone/logs/var-log/nginx/error.log

问题可能出在 Let’s Encrypt 和 AWS 之间。即使是你自己的域名,如果多次重建,也可能用完了配额。

2 个赞

真巧你提到了这个。:slightly_smiling_face: 这正是我最初关注此话题的原因。我在 https://community.letsencrypt.org 帮助过很多人,以为这个话题正好在我的专业范围内,可以帮忙。不过,若要使用我的任何工具,我需要知道真实的域名。

2 个赞

@ys2843

  • 能否更新一下后续情况?我也遇到了完全相同的问题,目前卡住了。
1 个赞

您是否尝试使用 AWS 域名?请勿这样做,请使用您自己的域名。

您查看过日志吗?

如果您执行了大量重建操作,还会触及 Let’s Encrypt 的频率限制。

1 个赞

@pfaffman

背景:在 AWS 上搭建一个最小化的 Discourse 论坛作为概念验证,旨在尽量降低成本

你可以在 GoDaddy 以 3 美元的价格注册一个域名。如果你的时间价值超过每小时 3 美元,你就应该注册一个域名。如果你连 3 美元都拿不出来去注册域名,那你也就负担不起 EC2。

2 个赞

@pfaffman

  • 在定价问题方面,我同意你的观点。
  • 从技术角度来看,有什么变通办法吗?

当然!看看有没有其他使用 .amazonaws.com 域名的用户也在使用 Let’s Encrypt,然后等一周。如果你不想注册域名,那会是我想尝试的下一个方案。