ifeabc
(Isak)
2020 年12 月 25 日 00:59
1
大家好!我尝试了几次在 Google Cloud 上部署 Discourse,目前正在进行第三次尝试:创建一台 Ubuntu 18.04 最小化版本的虚拟机实例,并通过终端手动安装 Discourse。按照指南 操作,一切看起来都正常,但在完成 ./discourse-setup 后,我无法访问该站点 。
我也尝试过通过 Google 市场的“一键部署”解决方案(包括 Google 官方和 Bitnami 提供的方案)来安装 Discourse。这样做时,我可以 访问 Discourse 的落地页。
我怀疑问题出在 Google 的端口配置上(而现成的安装方案可能规避了这个问题),但我对这方面了解太少,无法自行排查。大家有什么想法吗?
2 个赞
这可能与防火墙有关吗?
据我理解,Google Cloud 需要勾选两个复选框以允许对虚拟机进行公共访问。如有需要,稍后也可以进行相应配置。
3 个赞
ifeabc
(Isak)
2020 年12 月 25 日 12:11
3
嘿 Bhanu,感谢你的建议!
那些选项已经勾选了!
仍然无法正常工作。尝试 ping 该网站,一切看起来正常:
SSH 登录到网站并运行 netstat 检查端口,结果如下:
不过我对 netstat 不太熟悉。
1 个赞
ifeabc
(Isak)
2020 年12 月 26 日 01:10
5
我现在觉得,也许我并没有运行 Web 服务器?我需要在安装 Discourse 之前或之后安装 Nginx 吗?我顺着这个帖子 的思路,发现它和我的问题完全一致。
好的,我开始认为这就是问题所在。Nginx 似乎已经安装了,但没有运行。我杀死了 docker-proxy 的进程 ID 14311 和 14295,然后启动了 Nginx。现在 Nginx 已绑定到 80 端口,当我访问我的网站时,看到的是 Nginx 的欢迎页面!
接下来要重新让 Docker/Discourse 正常运行。
我还找到了这份指南 ,介绍了如何在较旧版本的 Ubuntu 上安装和配置 Discourse 论坛与 Nginx。他们似乎出于某种原因将 Docker 的端口从 80 改成了其他端口。也许这里存在某种冲突。
不知怎么地,我让 Nginx 运行在 80 端口,同时让 Docker-proxy 监听 8060 端口(HTTP)和 9443 端口(HTTPS),这是根据另一份教程 的建议做到的。但做到这一步后,我又感到迷茫了。Discourse 看起来是个很棒的论坛,但显然对于像我这样的新手来说,在 Google Cloud 上安装它简直不可能。
2 个赞
除非您计划将服务器用于托管 Discourse 以外的用途,否则无需运行专用 Web 服务器,因为 Discourse 已内置 Nginx 服务器。能否确认您的服务器已分配公共 IP 地址,并且已配置为允许外部连接端口 22、80 和 443?
参见:VPC firewall rules | Cloud Next Generation Firewall | Google Cloud Documentation
2 个赞
ifeabc
(Isak)
2020 年12 月 26 日 11:43
7
是的。我的 Google 虚拟机实例拥有公网 IP,并且已开放 22、80 和 443 端口的流量。
我认为这也在我终止了运行在 80 和 443 端口上的 docker-proxy 进程 PID、随后启动运行在 80 端口的 Nginx 并成功访问到我网站的 Nginx 默认页面时得到了验证。
1 个赞
这表明安装本身出了问题。如果是全新安装,直接销毁虚拟机并重新设置可能更简单。
2 个赞
ifeabc
(Isak)
2020 年12 月 26 日 17:14
9
我已经实际安装了三次,但每次端口都显示未绑定。虽然三次安装都成功了,但我始终无法访问论坛。因此,我正在考虑直接使用 Google 版本(该版本可以运行,但不允许我设置 SMTP),然后再想办法从 Google 版本中配置 SMTP。
1 个赞
ifeabc
(Isak)
2020 年12 月 27 日 01:15
10
安装完成后,我是否可以设置 SMTP?
按照此链接 中的“第 11 步”,我能够[创建(因为它尚不存在)并]编辑 discourse.conf 文件。完成此操作后,我似乎可以重启“discourse 服务”并测试我的邮件设置?
这意味着我不需要重新安装 Discourse,对吗?
然而,查看我运行的服务时,我没有看到名为"discourse"的服务,尽管我的 Discourse 论坛显然正在运行 。
Discourse 不应该在这里显示吗?是否有其他服务我可以重启,从而间接重启 Discourse 服务?
2 个赞
抱歉,我对 Google Cloud 镜像的搭建方式一无所知。我已经完成过十几次安装(包括上周的一次),很有把握问题出在您的虚拟机配置上。
以下是我在遵循官方安装指南之前所做的准备工作:
配置计算引擎以允许 HTTP 和 HTTPS 流量。
设置 DNS 并确认。
确保可以通过 SSH 连接到我的虚拟机。
我可以保证该流程是有效的。
附注:我通常在 Gcloud 上使用 Ubuntu 的 minimal 版本来安装 Discourse。
1 个赞
pfaffman
(Jay Pfaffman)
2020 年12 月 27 日 03:40
12
1 个赞
ifeabc
(Isak)
2020 年12 月 27 日 03:57
13
嗯,真奇怪。不过还是感谢你确认在 Google Cloud 上确实可行。我也认为 Discourse 安装本身没问题,问题出在虚拟机或端口上。那我明天再试第四次吧,尽管每次我都已经完成了那些准备步骤。谢谢 Bhanu。
@pfaffman 我试过了。
2 个赞
ifeabc
(Isak)
2020 年12 月 27 日 11:34
14
另外,您允许 HTTP/HTTPS 流量访问的其实并不是“计算机引擎”,而是"VM 实例”,对吗?
1 个赞
Compute Engine 是 Google 对虚拟机的称呼,我记得是这样。
1 个赞
pfaffman
(Jay Pfaffman)
2020 年12 月 27 日 13:40
16
运行 Discourse-setup 时会检查端口。这些测试通过了吗?
2 个赞
ifeabc
(Isak)
2020 年12 月 27 日 14:24
17
我现在就去查看。已删除旧实例和项目,并在 Google Cloud 上启动了新项目和新实例。现在将尝试安装 Discourse,并随后报告已检查的端口!
2 个赞
ifeabc
(Isak)
2021 年1 月 2 日 21:13
18
好的,几天之后,它终于运行起来了!
我重复了同样的流程,但这次对每一步都更加小心。
我删除了之前在 Google Cloud 上的实例和项目,从头开始创建一个新项目。
然后,我创建了一个新项目和一个新的实例,使用 Ubuntu 18.04 LTS 最小化版本,并启用了 HTTP/HTTPS。在按照上面提到的官方指南操作之前,我按照 Bhanu 的建议先测试了连通性。我还跟随了 Google Cloud 的“欢迎教程”,其中也包括在 80 端口上尝试运行一个 Python 服务器脚本等步骤。
在按照“官方指南”操作的过程中,我在配置 SMTP 时格外小心。出于某种原因,我决定不使用 Mailgun,而是最终选择了 Sendinblue 。它运行得非常顺利!
我真的不知道这次有什么不同,但现在它确实可以正常工作了。感谢你们在帖子中与我讨论!
6 个赞
ifeabc
(Isak)
2021 年1 月 9 日 01:20
19
我不知道为什么无法编辑我之前的帖子,但版主可能会将它们合并。
我只是想补充一点,我认为我的问题和解决方案可能源于我过于急切。
由于安装了一个有问题的插件,我最近不得不彻底重装我的 Discourse 实例。当我启动这个新实例时,获得了一个新的 IP 地址。于是,我登录到托管服务商,更新了 A 记录/DNS,将我的子域名 discourse.mydomain.com 指向我的 Google Cloud 实例的 IP 地址,然后回到 Google Cloud SSH 运行安装脚本。
首次运行 ./discourse-setup 时,安装程序会检查是否能够绑定到端口 80 和 443。但不知何故,它再次拒绝绑定到这两个端口。我通过 who.is 查询了 DNS,子域名解析正常,IP 也正确,但问题依旧。我尝试运行 ./discourse-setup 三次,均无果。接着用 netstat -ltnpu 检查,未发现异常。等待了五分钟后再运行第四次,这次终于成功了。
2 个赞
ifeabc
(Isak)
2021 年1 月 14 日 01:37
20
无法编辑我之前的帖子。但我确实再次遇到了安装问题。这次我在防火墙中还添加了以下允许规则:
SMTP 可能并非必要,但端口 80 和 443 的“出站”规则似乎确实需要。
1 个赞
Hector
(Héctor Fernández)
2021 年1 月 14 日 01:58
21
我认为无需配置任何出站规则,因为默认情况下所有端口都是开放的,除了端口 25 始终被阻止。
3 个赞