HTTPS:设置 SSL 证书时遇到问题

你好!

我尝试按照这篇很棒的教程为我的网站启用 HTTPS。一切顺利,直到我尝试重建应用,输入 ./launcher rebuild app 时出了问题。

我运行了 discourse-doctor 来排查问题,终于找到了一些线索:

==================== 重建日志结束 ====================
应用重建失败。

正在检查您的域名...

连接到 discourse.mydomain.com 成功。
您可能需要移除任何非标准插件并重新构建。
尝试重启现有容器...

启动现有容器
+ /usr/bin/docker start app
来自守护进程的错误响应:在端点 app (some_random_characters) 上编程外部连接时驱动程序失败:启动用户态代理时出错:listen tcp 0.0.0.0:443: bind: 地址已被占用
错误:启动容器失败:app
容器重启失败。

注意:我将一长串字符替换为 some_random_characters,并将我的域名替换为 discourse.mydomain.com

这很奇怪,因为我完全遵循了教程;我完全不知道该如何修复这个问题。

非常感谢您的任何帮助!

祝您有美好的一天,

nekodroid

您需要提供 app.yml 以便进一步诊断。发布前,请务必移除其中包含的敏感邮箱和密码。

--- 
env: 
  DISCOURSE_DEVELOPER_EMAILS: myemailadress@maildomain.com
  DISCOURSE_HOSTNAME: discourse.mydomain.com
  DISCOURSE_SMTP_ADDRESS: stmp.eu.mailgun.org
  DISCOURSE_SMTP_PASSWORD: smtppasswordwithoutquotes
  DISCOURSE_SMTP_PORT: 587
  DISCOURSE_SMTP_USER_NAME: postmaster@discourse.mydomain.com
  LANG: en_US.UTF-8
  LETSENCRYPT_ACCOUNT_EMAIL: myemailadress@maildomain.com
  UNICORN_WORKERS: 2
expose: 
  - "80:80"
  - "443:443"
hooks: 
  after_code: 
    - 
      exec: 
        cd: $home/plugins
        cmd: 
          - "git clone https://github.com/discourse/docker_manager.git"
params: 
  db_default_text_search_config: pg_catalog.english
  db_shared_buffers: 128MB
run: 
  - 
    exec: "echo \"开始自定义命令\""
  - 
    exec: "echo \"结束自定义命令\""
templates: 
  - templates/postgres.template.yml
  - templates/redis.template.yml
  - templates/web.template.yml
  - templates/web.ratelimited.template.yml
  - templates/web.template.yml
  - templates/web.ssl.template.yml
  - templates/web.letsencrypt.ssl.template.yml
volumes: 
  - 
    volume: 
      guest: /shared
      host: /var/discourse/shared/standalone
  - 
    volume: 
      guest: /var/log
      host: /var/discourse/shared/standalone/log/var-log

这就是它 ~

你读过这部分吗?

看起来你的 Docker 安装存在问题。

另外,你为什么完全重写了 app.yml 中各项内容的顺序?

我确实读过这份指南,但在执行命令 wget -qO- https://get.docker.com/ | sh 时遇到了阻碍;我记得它提示“命令 wget 使用错误”。因此我跳过了后续步骤,记得在输入命令 ./discourse-setup 后,Docker 自动完成了安装。

这很可能就是问题所在……

我将完全从头开始重新安装 Discourse,然后在此更新本帖子。

非常感谢大家的帮助,朋友们!:smiley_cat:

是的!这一点是在某个时候添加的。我不确定具体是什么时候添加的。

很高兴你已经准备好了。

谢谢你 :uwu:

顺便一提,我现在又遇到另一个错误了!

我运行了 discourse-setup 自动设置程序,并在提示时添加了一个用于 Let’s Encrypt 加密的电子邮件地址。现在它显示:

正在检查您的域名...
警告:此服务器似乎无法在 discourse.apertureproject.me:443 上访问。

连接到 http://discourse.apertureproject.me(端口 80)也失败。

根据这个提示,错误是由于端口未开放导致的,而我完全不知道该如何修复。而且,如果没有加密,我绝不会上线我的网站,所以我不会禁用 Let’s Encrypt。

编辑!

我找到了我的主机商(OVH)关于如何开放端口的文档。但我的 IP 管理器是空的,而根据文档中的截图,这里应该填充多个 IP 地址。

很抱歉,文档是法语的,但正如你所见,IP 地址列表完全是空的。

测试可能会在没有实际问题的情况下失败,以便您可以查看会发生什么。

DNS 是否已设置?没有。discourse.apertureproject.me 无法解析。您必须先设置 DNS,才能启用 https。

您使用的是哪种操作系统?什么平台?(某些平台的端口默认是关闭的)

如果您在命令行中运行 nc,是否会收到“命令未找到”的提示?

好的,我该怎么做?

我知道这与 DNS 记录有关,但它的值类型是什么,等等?

这里的“值”是指 A、AAAA、NS 等类型。

因为我已经在 DNS 服务器类别中添加了以下内容:

非常感谢您的帮助~ :smiley_cat:

您需要一个指向您的 Droplet IP 的 A 记录。

我已经那样做了。

还有一个问题,我之前从未遇到过:现在访问 apertureproject.me 时显示的是 nginx 欢迎页面。

之前显示的是 Discourse 安装成功的提示。

这将打开安装页面,属于正常现象。请尽快完成安装。

那该怎么安装呢?我不太明白。我以前从未见过这个页面。

抱歉,我对这个还不太熟悉……有点困惑 :tired_face:

仅遵循指示。

你是指 30 分钟安装指南吗?我已经按照它操作了。

不,你已经完成了。你现在处于管理员注册步骤。

啊……还是没弄明白 x’( 你建议我怎么做?

浏览您的域名时,您看到了什么?

欢迎使用 nginx!

如果您看到此页面,说明 nginx Web 服务器已成功安装并正常运行。需要进行进一步配置。

如需在线文档和支持,请参阅 nginx.org
商业支持可通过 nginx.com 获取。

感谢您使用 nginx。

不,我看到的是注册页面。请清除缓存和浏览器历史记录,然后重试。