无法连接 - DO 上的新安装

我刚刚尝试了两次在 Digital Ocean 上安装 Discourse。

尝试 1:
第一次尝试时,我使用了官方 Github 说明,使用 DO Ubuntu 22.04 LTS 镜像,1GB 的液滴。

我使用了现有域的一个子域,以及一个已正常工作多年的 Mailjet 账户的凭据。

我不知道需要安装 Docker,所以当我输入
discourse-setup
时,安装程序说
Failed to find docker or docker.io on your PATH.
(在你的 PATH 中找不到 docker 或 docker.io。)

然后我按 Enter 键继续安装 Docker。

之后,安装似乎运行正常。

它以以下内容结束:

117:M 25 May 2023 01:14:46.500 * DB saved on disk
117:M 25 May 2023 01:14:46.501 # Redis is now ready to exit, bye bye...

以及几行附加内容。

我不确定 DNS 传播的速度有多快,所以我将 DO IP 地址输入到我的 /etc/hosts 文件中。

我尝试在浏览器中指向我的子域 URL;我收到“无法连接到服务器”。

我尝试在浏览器中指向 IP 地址;我收到“无法连接到服务器”。

所以,我尝试了第二次。

尝试 2:
我遵循了 linuxhandbook 上的说明,使用 Marketplace 选项卡中的 DO 一键安装,这给了我一个 2GB 的液滴。

通过 ssh 登录后,安装程序自动运行,并且似乎没有出现任何问题。最后,它说
Discourse is now installed. Log into your admin account in a browser to continue configuring Discourse.
(Discourse 现已安装。请在浏览器中登录您的管理员帐户以继续配置 Discourse。)

但同样,当我尝试在浏览器中指向我的子域 URL 或(此第二个液滴的新)DO IP 地址时,我的浏览器无法连接(我尝试了 Firefox 和 Safari)。

运行
./launcher start app
显示

x86_64 arch detected.
cadd91ccd0cd
Nothing to do, your container has already started!

(x86_64 架构已检测到。 cadd91ccd0cd 没有什么可做的,您的容器已经启动!)

discourse-doctor 显示(除其他外)
Discourse container app is running
(Discourse 容器应用程序正在运行)
并给出正确的
DISCOURSE_HOSTNAME

我能尝试什么来让这个安装(其中一个或两个)响应我的浏览器?

(第二个 IP 地址仍在我的 hosts 文件中,但根据 DNS 检查器,它也已经传播,所以似乎应该可以通过子域 URL 或仅通过 IP 地址访问。)

感谢任何帮助。

还有一些细节:

据我所知,我没有任何控制面板来管理我的任何一个 droplet(没有 Plesk,也没有 cPanel)。

在典型的共享主机设置中,我通常会进入 public_html 并创建一个简单的测试文件,例如 testfile.html,看看是否至少能加载一个纯 HTML 文件,但在 DO droplet 上,我不知道在哪里可以这样做(或者是否可以这样做)。

如果 ./discourse-setup 运行顺利,那么它应该已经能够解析您的域名了,所以您无需再进行任何操作。此时,DNS 传播对您的服务器来说已经完成了。

请注意,一键安装的 Digital Ocean Discourse 是一个 unsupported-install,这意味着您在这里获得支持的可能性较小。 :slight_smile:

我建议您从头开始,并使用标准安装。

  1. 创建一个液滴 (droplet)

  2. 通过 SSH 登录

  3. 运行 ping yourdomain.com 并查看它是否解析到您的服务器 IP(无论如何 ./discourse-setup 都会显示警告,如果未解析)。

    • 如果未解析,请等待直到解析成功。
  4. 解析成功后,使用官方指南安装 Discourse discourse/docs/INSTALL-cloud.md at main · discourse/discourse · GitHub

请反馈结果 :slight_smile:

当然,我不是专家,也许有人能够指出您当前的问题。

2 个赞

没有必要这样做,这样做也没有帮助。如上所述,discourse-setup 会进行测试,以查看它是否可以使用主机名与自身通信。如果您在运行 discourse setup 之前编辑了 /etc/hosts 文件,那么 DNS 就无法工作,您也无法从 let’s encrypt 获取证书,这就是为什么 Web 服务器无法启动的原因。如果您尝试的次数足够多,您将被限制速率,需要等待一周或使用不同的子域。

您可以查看 /var/discourse/shared/logs/var-log/nginx/access.log(或非常相似的文件)来查看问题。

此时最简单的方法是使用新的子域,设置 DNS,等待其传播(有一些工具可以显示它),然后运行 discourse-setup。

2 个赞

感谢你们两位的回复。

我创建了一个新的子域名和一个新的 Droplet,并用它们进行了第三次尝试,现在一切都已启动并运行。

在我第一次尝试运行 ./discourse-setup 时,输出中没有显示任何关于域名或 SSL 问题的迹象;有可能报告了错误但我错过了,但如果是这样,也许可以使这类错误通知更加明显。

我很高兴我的新 Discourse 已设置并运行。再次感谢帮助新手。

是否有可能在 discourse/docs/INSTALL-cloud.md at main · discourse/discourse · GitHub 中添加一个故障排除技巧部分,如果可以的话,我能否为此做出贡献?

1 个赞

它会卡住。你不会错过的。我猜你巧妙地用 /etc/hosts 解决了问题,这满足了脚本,但没有让 Let’s Encrypt 在获取证书时成功。discourse-setup 是一个 shell 脚本,专为最不熟悉的用户设计,因此它的测试相当粗糙。

也许可以看看标准的安装主题?

编辑:嗯,那里没什么内容。

你想添加什么故障排除建议?我认为那里有一些线索。我猜有人会创建一个 /etc/hosts 条目并绕过 DNS 检查,这我从未听说过有人这样做过。 :slight_smile: