你好!
我尝试按照这篇很棒的教程为我的网站启用 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
这就是它 ~
pfaffman
(Jay Pfaffman)
4
你读过这部分吗?
看起来你的 Docker 安装存在问题。
另外,你为什么完全重写了 app.yml 中各项内容的顺序?
我确实读过这份指南,但在执行命令 wget -qO- https://get.docker.com/ | sh 时遇到了阻碍;我记得它提示“命令 wget 使用错误”。因此我跳过了后续步骤,记得在输入命令 ./discourse-setup 后,Docker 自动完成了安装。
这很可能就是问题所在……
我将完全从头开始重新安装 Discourse,然后在此更新本帖子。
非常感谢大家的帮助,朋友们!
pfaffman
(Jay Pfaffman)
6
是的!这一点是在某个时候添加的。我不确定具体是什么时候添加的。
很高兴你已经准备好了。
谢谢你 :uwu:
顺便一提,我现在又遇到另一个错误了!
我运行了 discourse-setup 自动设置程序,并在提示时添加了一个用于 Let’s Encrypt 加密的电子邮件地址。现在它显示:
正在检查您的域名...
警告:此服务器似乎无法在 discourse.apertureproject.me:443 上访问。
连接到 http://discourse.apertureproject.me(端口 80)也失败。
根据这个提示,错误是由于端口未开放导致的,而我完全不知道该如何修复。而且,如果没有加密,我绝不会上线我的网站,所以我不会禁用 Let’s Encrypt。
编辑!
我找到了我的主机商(OVH)关于如何开放端口的文档。但我的 IP 管理器是空的,而根据文档中的截图,这里应该填充多个 IP 地址。
很抱歉,文档是法语的,但正如你所见,IP 地址列表完全是空的。
pfaffman
(Jay Pfaffman)
8
测试可能会在没有实际问题的情况下失败,以便您可以查看会发生什么。
DNS 是否已设置?没有。discourse.apertureproject.me 无法解析。您必须先设置 DNS,才能启用 https。
您使用的是哪种操作系统?什么平台?(某些平台的端口默认是关闭的)
如果您在命令行中运行 nc,是否会收到“命令未找到”的提示?
好的,我该怎么做?
我知道这与 DNS 记录有关,但它的值类型是什么,等等?
这里的“值”是指 A、AAAA、NS 等类型。
因为我已经在 DNS 服务器类别中添加了以下内容:
非常感谢您的帮助~ 
pfaffman
(Jay Pfaffman)
10
您需要一个指向您的 Droplet IP 的 A 记录。
我已经那样做了。
还有一个问题,我之前从未遇到过:现在访问 apertureproject.me 时显示的是 nginx 欢迎页面。
之前显示的是 Discourse 安装成功的提示。
那该怎么安装呢?我不太明白。我以前从未见过这个页面。
抱歉,我对这个还不太熟悉……有点困惑 
你是指 30 分钟安装指南吗?我已经按照它操作了。
欢迎使用 nginx!
如果您看到此页面,说明 nginx Web 服务器已成功安装并正常运行。需要进行进一步配置。
如需在线文档和支持,请参阅 nginx.org。
商业支持可通过 nginx.com 获取。
感谢您使用 nginx。
不,我看到的是注册页面。请清除缓存和浏览器历史记录,然后重试。