默认应用无法重新构建

嘿,我使用这份指南在 Linux 机器上设置了默认的 Discourse。过程非常顺利,网站也完美启动。

我决定允许用户通过 Facebook 登录,因此我按照上述链接中引用的 Facebook 说明进行了操作(我本想再次提供链接,但新用户似乎只能发布两个链接)。结果未能成功,但网站仍然正常运行(我不记得尝试通过 Facebook 登录时遇到的具体错误)。

在浏览 Facebook 文档时,我看到需要启用 HTTPS,于是开始按照这些文档进行操作。一切顺利,直到执行 ./launcher rebuild app 时出现了 PostgreSQL 错误。这让我感到意外,因为据我所知,我并未对 PostgreSQL 配置做任何修改。第一个错误如下:

INFO -- : > cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate'
rake aborted!
PG::ConnectionBad: could not connect to server: No such file or directory
	Is the server running locally and accepting
	connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?

我没有停止 PostgreSQL 服务,但尝试运行 service start postgres 时,系统提示该服务未安装。因此我推测它是以我习惯之外的其他方式自动安装的。请问我可能哪里做错了?谢谢。

我的 container/app.yml 内容如下:

templates:
  - "templates/web.template.yml"
  - "templates/web.ssl.template.yml"
  - "templates/web.letsencrypt.ssl.template.yml"
  - "templates/postgres.template.yml"
  - "templates/redis.template.yml"
  - "templates/web.template.yml"
  - "templates/web.ratelimited.template.yml"

expose:
  - "80:80"   # http
  - "443:443" # https

params:
  db_default_text_search_config: "pg_catalog.english"

  db_shared_buffers: "128MB"

env:
  LANG: en_US.UTF-8
  LETSENCRYPT_ACCOUNT_EMAIL: 'myotheremail@gmail.com'
  UNICORN_WORKERS: 2

  DISCOURSE_HOSTNAME: mysite.com

  DISCOURSE_DEVELOPER_EMAILS: 'myemail@gmail.com'

  DISCOURSE_SMTP_ADDRESS: smtp.gmail.com
  DISCOURSE_SMTP_PORT: 587
  DISCOURSE_SMTP_USER_NAME: myemail@gmail.com
  DISCOURSE_SMTP_PASSWORD: "myPa$$word"

  ## 此 Discourse 实例的 HTTP 或 HTTPS CDN 地址(配置为拉取)
  ## 详见 https://meta.discourse.org/t/14857
  #DISCOURSE_CDN_URL: https://discourse-cdn.example.com

volumes:
  - volume:
      host: /var/discourse/shared/standalone
      guest: /shared
  - volume:
      host: /var/discourse/shared/standalone/log/var-log
      guest: /var/log

hooks:
  after_code:
    - exec:
        cd: $home/plugins
        cmd:
          - git clone https://github.com/discourse/docker_manager.git

run:
  - exec: echo "Beginning of custom commands"
  - exec: echo "End of custom commands"

如果您遵循的是官方指南,HTTPS 应该已自动设置。请注意您链接的指南最顶部的说明:

是的,没错。我正是按照这些步骤操作的。我确实先查看了 Facebook 登录连接指南,但我怀疑问题并不出在那里。我按照您发布的指南操作后,接着转向了 HTTPS 配置,现在便遇到了上述问题。

好的,我们先重新梳理一下。

你只需要参考这两份指南:

这份指南你不需要参考,因为默认已启用 HTTPS:

如果可能的话,建议从头开始操作,然后在尝试使用 Facebook 登录时遇到任何错误,请随时反馈。

好的,当我完成第一个指南时,网站已经上线了,但还不是 HTTPS。我原以为要等我启用它之后才会变成 HTTPS。我会重新检查一遍说明,也许我哪里没理解清楚,然后我再回来反馈。

好的,我已经把应用重新启动了,但在这些说明中,我找不到任何能将网站设置为 HTTPS 的步骤,除了底部提到的 Let’s Encrypt 方法外,没有其他涉及证书的地方。我漏掉了什么?你能具体指出在这些说明的哪一部分会设置 HTTPS 吗?

这一切都在后台完成。当您在最后一步配置中输入您的电子邮件时:

我打赌我是按了回车键跳过的,甚至都没意识到。如果是这样,最好的做法是重新运行配置,还是按照 Let’s Encrypt 的说明操作?需要注意的是,我网站上现在已经有了一些内容,我不想把它们弄丢。(再次感谢您的帮助)

请再次运行 discourse-setup,并为 Let’s Encrypt 提供一个地址。

多么棒的功能啊。第一次没注意到,现在觉得自己好傻。感谢你们两位以及团队实现这个功能。

有没有什么措辞上的调整,能让你更早理解我的意思?

我是这么认为的。我在服务器方面很有经验,但自 Let’s Encrypt 推出以来我一直不太活跃,所以如果文档中有开箱即用的证书获取部分,我本以为会看到。既然没有,我就以为需要额外步骤。该页面上除了 ./disource-setup 命令的输出外,根本没有提到 Let’s Encrypt。也许可以在“编辑 Discourse 配置”部分(在执行命令之前)补充说明:如果希望启用 HTTPS,则需要在 Let’s Encrypt 字段中填写相应信息。我本来就知道去该页面查找 HTTPS 相关内容,但由于用 Ctrl+F 搜索不到任何包含“https”的字符串,我就以为没有相关内容。我搜索了“https”和“cert”,由于找不到相关结果,便以为这是独立的部分。

说实话,如果我对网站托管更熟悉的话,可能早就看到 Let’s Encrypt 并立刻明白是怎么回事了。或许可以加一个“所需准备”部分,列出需要关联 Let’s Encrypt 的邮箱地址?

我并非想冒犯谁,文档本身非常出色,问题出在我自己身上,是我的人为疏忽导致的。

好吧。哪些词?

我不确定您是否没看到我回复的其余部分,但也许我直接提交一个包含我认为合适的修复的 PR 吧。不过,真的只要在文档中提及证书已得到处理即可。

啊!所以安装云文档确实没有说清楚?听起来确实如此。

我会查看 discourse-setup 中的措辞,看看是否需要更清楚地说明 Let’s Encrypt 是什么。确实,不应假设用户已经了解这些内容。

谢谢