在 OVH VPS Ubuntu 22.04 上安装 Discourse 的问题

自助检查在颁发证书之前进行。

1 个赞

iptables 呢?

请参阅 Oracle 试用安装指南中的此示例:Install Discourse on Oracle Cloud Free Tier

您可以检查这些日志:

/var/log/nginx/error.log
/var/log/apache2/error.log
/var/log/nginx/access.log
/var/log/apache2/access.log
/var/log/syslog
/var/log/dmesg

以及来自 docker logs your-container(或)您托管时未使用的 Docker 的日志文件中的 Discourse 日志。

这里有太多可能的问题:

  • DNS 或 SSL 问题(更常见)。
  • 防火墙、路由或网络配置错误。
  • 数据库、缓存、Discourse 服务。

没有日志或更多信息,几乎不可能提供更多建议。

下一步很简单,只需将证书文件另存为 ssl.crt 和 ssl.key,然后将其拖放到服务器目录 /var/discourse/shared/standalone/ssl/ssl.crt 和 /var/discourse/shared/standalone/ssl/ssl.key 中。

我看到了您给我的示例。我遵循了所有步骤。
唯一的区别是当我运行时:netfilter-persistent save
它没有回答,与示例不同,在示例中可以看到它回答 run-parts: …
image
我尝试从头开始安装 discourse 并在此之前运行以下 2 个 iptables:
iptables -I INPUT 5 -i ens3 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -I INPUT 5 -i ens3 -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT

我遇到了这个问题:
端口 80 和 443 可供使用
‘samples/standalone.yml’ → ‘containers/app.yml’
发现 2GB 内存和 1 个物理 CPU 核心
设置 db_shared_buffers = 256MB
设置 UNICORN_WORKERS = 4
containers/app.yml 内存参数已更新。

您的 Discourse 的主机名? [discourse.example.com]: mywebsite.fr

正在检查您的域名 . . .
警告:使用主机名 mywebsite.fr 无法访问计算机的 443 端口。
警告:连接到 http://mywebsite.fr (端口 80) 也失败。

这表明 mywebsite.fr 解析到某个不连接到您正在安装 discourse 的机器的 IP 地址。
首先要做的是确认 mywebsite.fr 解析到此服务器的 IP 地址。
您通常在购买域名的同一地点进行此操作。
如果您确定 IP 地址解析正确,则可能是防火墙问题。
搜索“打开端口 YOUR CLOUD SERVICE”的网络搜索可能会有所帮助。
此工具仅用于最标准的安装。如果您无法解决上述问题,则需要自己编辑 containers/app.yml,然后输入

你好 @satonotdead
我检查过了,我没有 /var/log/nginx/var/log/apache2 这两个文件夹。

这是我的 VPS 提供商的防火墙配置:

我不确定是否理解@xiaokong23357。
您的意思是,通过取消注释app.yml中的https行来安装http配置,然后手动执行此步骤:
将证书文件另存为ssl.crt和ssl.key,并将它们拖放到服务器目录/var/discourse/shared/standalone/ssl/ssl.crt和/var/discourse/shared/standalone/ssl/ssl.key中

您好,

我手动修改了 app.yml。现在我的浏览器上出现了以下消息:

欢迎使用 nginx!

如果您看到此页面,则表示 nginx Web 服务器已成功安装并正在运行。需要进一步的配置。

有关在线文档和支持,请参阅 nginx.org
商业支持可在 nginx.com 获得。

感谢您使用 nginx。

而且似乎我获得了 SSL,因为:/var/discourse/shared/standalone/ssl# ls -l
total 8
-rw-r–r-- 1 root root 0 Mar 3 01:00 mydomain.fr.cer
-rw------- 1 root root 3243 Mar 3 01:00 mydomain.fr.key
-rw-r–r-- 1 root root 0 Mar 3 01:01 mydomain.fr_ecc.cer
-rw------- 1 root root 227 Mar 3 01:01 mydomain.fr_ecc.key

我现在该怎么办?如何执行所需的配置?

实际上,当您在app.yml中引入模板项“templates/web.ssl.template.yml”时,您的网站已经开始使用https通信,而我上面说的是配置SSL证书的配置方法

1 个赞

此外,nginx 通常在您的服务器上运行多个网站时使用,如果您只运行 discourse,则可以选择忽略它

1 个赞

没关系,因为你只运行了一个实例,但我只是问一下,因为这是需要检查的事情。

你几乎完成了,只需要像 Snow Love 说的那样检查 SSL 证书创建步骤。

我怀疑你忽略了一些指南,善意提醒 → 最好花时间阅读文档和指南(我是说为了我们自己的时间)。

祝你好运 :person_surfing:

@xiaokong23357 我只使用 discourse。我该如何忽略它?

你好 @satonotdead

抱歉,您指的是哪个指南?
我遵循了这份文档:discourse/INSTALL-cloud.md at main · discourse/discourse · GitHub

我该如何操作:需要像 Snow Love 说的那样检查 SSL 证书创建步骤。

我在 /var/discourse/shared/standalone/ssl# ls -l 中找到了这个
total 8
-rw-r–r-- 1 root root 0 Mar 3 01:00 mydomain.fr.cer
-rw------- 1 root root 3243 Mar 3 01:00 mydomain.fr.key
-rw-r–r-- 1 root root 0 Mar 3 01:01 mydomain.fr_ecc.cer
-rw------- 1 root root 227 Mar 3 01:01 mydomain.fr_ecc.key

看看你,我这里没有使用 nginx 进行部署

如果您需要使用 nginx,请将“-80:80”放在 expose 中
#http “修改为” - “9090:80” # http“确保 nginx 可以代理到 discourse”

我不明白为什么会出现这个 nginx 问题。我从未要求使用 nginx。
你的意思是,我必须将 app.yml 文件更改为:
expose:

  • “9090:80” # http” 确保 nginx 可以代理到 discourse
  • “443:443” # https

是的,要使用 nginx,您需要修改 HTTP 代理端口
如果您不使用 nginx,请将 HTTP 端口 9090 更改为 80

@Titi 运行此命令的结果是什么?

apt list | grep nginx

我从你那里得到了通用的默认 nginx 索引页面这一事实来推断,你的 VPS 实际上已经安装了 nginx 并导致了你的问题。

Discourse 在内部也使用 nginx,但你需要一个严重损坏的安装才能让内部的 nginx 显示该页面。

1 个赞

更简单的任务是执行 systemctl status nginx。如果状态是活动的,则停止它 systemctl stop nginx,并确保它保持该状态,您将执行 systemctl disable nginx

完成所有这些之后,您将再次检查 app.yml 中是否仍然暴露 80:80 和 443:443。就是这样。

1 个赞