我知道得足够多,以至于坐在开放的 SSH 会话前会有危险。前几天我顺利完成了安装,一切正常。
但今天,我需要重新构建(我是在开发服务器上,而非生产环境),按照同样的步骤操作后,运行 ./discourse-setup 并等待安装完成后访问网站,却没有任何反应。
我还尝试运行了 ./launcher start app,但依然没有任何结果。
对于安装故障排查,通常有哪些建议的操作?
我知道得足够多,以至于坐在开放的 SSH 会话前会有危险。前几天我顺利完成了安装,一切正常。
但今天,我需要重新构建(我是在开发服务器上,而非生产环境),按照同样的步骤操作后,运行 ./discourse-setup 并等待安装完成后访问网站,却没有任何反应。
我还尝试运行了 ./launcher start app,但依然没有任何结果。
对于安装故障排查,通常有哪些建议的操作?
./discourse-setup 或 ./launcher start app 后没有任何消息或错误?
请告诉我们这些环境有何不同。
您是否使用了反向代理?CloudFlare?
您的生产环境部署在何处?
不,安装似乎已成功。当我检查 docker info 时,发现容器也在运行。
我在 AWS 上运行 Amazon Linux 2,前几天在同一操作系统上此操作是有效的。该域名仅使用 CloudFlare 进行 DNS 解析。
以下是我所做的确切步骤顺序。Git、Docker 和 ncat 均通过 amazon-linux-extras 安装(按照安装过程中的提示操作),但这不应成为问题,因为前几天我的开发论坛运行正常。
你为什么要这么做?
问得好。
我之所以这么做,是因为第四步之后就不起作用了……哈哈。我应该卸载吗?
是的,请卸载。
这可能是 DNS 问题。
curl localhost 返回什么?
tail /var/discourse/shared/logs/var-log/nginx/access.log 显示什么?
Discourse 在容器内包含一个 Web 服务器。
curl: (7) 无法连接到 localhost 端口 80:连接被拒绝
tail: 无法打开‘/var/discourse/shared/logs/var-log/nginx/access.log’进行读取:没有那个文件或目录
我执行了正常的安装,但我确认 shared 文件夹甚至不存在。
顺便感谢你的帮助!就像我说的,我知道得足够多,足以惹麻烦……而且不总是好事。![]()
抱歉。
tail /var/discourse/shared/standalone/logs/var-log/nginx/access.log
或者,如果仍然不正确,
find /var/discourse/shared -name access.log
以查看日志文件的位置。
在这里找到了:
/var/discourse/shared/standalone/log/var-log/nginx/
里面没有 access.log,但有一个 error.log。
里面反复出现同一行(此处已将真实域名替换为 example.com):
2020/04/08 19:46:34 [emerg] 2112#2112: cannot load certificate "/shared/ssl/example.com.cer": PEM_read_bio_X509_AUX() failed (SSL: error:0909006C:PEM routines:get_name:no start line:Expecting: TRUSTED CERTIFICATE)
我没有通过 Let’s Encrypt 进行证书申请流程,因为我已经为该域名拥有证书。我是否仍然需要同时使用 Let’s Encrypt?
您需要一个证书。
您可以搜索并找到安装自有证书的教程,那些教程会说这非常麻烦;或者,您可以允许 Let’s Encrypt 为您免费获取证书,无需任何麻烦。
哎呀,瞧瞧这个。成功了。
感谢 @pfaffman 以及所有回复的人。![]()
其实,我收回刚才的话。Chrome 以显示上次成功加载页面的模式打开了窗口,但使用无痕模式刷新后,发现仍然无法工作。这完全是我的失误。![]()
有没有关于如何设置 Let’s Encrypt 证书的链接?我需要回顾一下我做了什么(或者没做什么)。
只需运行 discourse-setup。当它询问 Let’s Encrypt 时,提供任意电子邮件地址,或者提供您自己的地址,以便在他们认为您需要续期时收到通知。
好的,我就是这样做的……我原以为这些都基于安装指南,但我仍然看到空白页面。
看起来 Discourse 正在 /shared/ssl/ 目录中查找证书,但我证书的实际位置是 /shared/standalone/ssl/。
我的 app.yml 配置设置为:
## Docker 容器是无状态的;所有数据都存储在 /shared 中
volumes:
您可以尝试
cd /var/discourse
rm -r shared/standalone/ssl shared/standalone/letsencrypt
./launcher rebuild app
rm 命令是凭记忆输入的。如果这些目录不存在,请告诉我应该输入什么。
看来我遇到了 Let’s Encrypt 每周 10 张证书的限制。我想这解释了为什么我无法继续执行到下一步。
以下是另一位用户在多次重建后遇到相同问题的讨论:Trouble with SSL after lots of rebuilds - #14 by pfaffman
所以,我猜我现在唯一的办法就是安装我自己已有的证书了?