如何修改 Discourse 的域名

:warning: 如果你参考了 GitHub 上的安装指南 页面中的内容安装了一个 Discourse 实例后希望对自己安装的实例修改域名的使用手册。 如果你使用的是 Discourse 官方主机服务 的话,请参考 针对 Discourse 的云服务配置你的域名 页面中的详细内容。

假设,你现在希望修改你的 Discourse 实例的 域名从 talk.foo.comtalk.bar.com

让我们开始这个过程吧。

在 DNS 的高级设置中,设置 TTL 为 low(低)

你希望让所有人都知道你的域名被修改了,因此你可以在你的域名 DNS 中设置 TTL 时间为低,例如可以设置为 60 分钟。

这个设置的主要目的是能够让你的 DNS 修改更快的生效。互联网中 DNS 的修改是需要时间的,因为有缓存的存在。

从站点中删除所有有关老的域名配置

访问 /admin/site_settings 然后搜索所有有关老的域名的配置。

如果你的搜索中找到了一些有关老的域名的配置,请确定你将上面的配置进行修改。

在 app.yml 文件中编辑 Discourse 的配置

:mega: 可选的,你可以再次运行 ./discourse-setup 命令,然后通过这个命令提示的输入信息将新的域名更新到 app.yml 配置文件中。

app.yml 文件中,编辑 hostname 的内容。

## Discourse 实例中的主机名将会被修改为如下
DISCOURSE_HOSTNAME: 'talk.bar.com'

(同时,如果你还使用了 CDN 的话,你可以在 app.yml 文件中,将有关 CDN 的配置进行注释掉。在完成修改后,再将注释取消就可以了。)

在完成上面的配置后,需要对 Discourse 进行重构:

./launcher rebuild app

当你完成上面的重构后,你的站点只能通过新的域名来访问了。

修改你的 DNS 配置

  • 将老的域名的 DNS 记录删除
  • 修改新域名的 DNS 记录,将记录指向到你的 Discourse 服务地址。

当完成上面的配置后,你应该是没有问题通过新修改的域名来访问你的 Discourse 站点的。

你也可以同时在站点进行重构的时候修改你的 DNS 配置信息。

校验所有功能都能够正常访问,在我们对功能进行校验的时候,我们希望先确定我们能够正常登录我们的 Discourse 系统。这个就是下面的主题需要解决的问题…

修改第三方登录

:exclamation: 基于你如何进行登录的方式不同,你需要马上对这个进行修改,否则你在域名修改完成后就没有办法通过第三方进行登录了。

你的 Twitter, Facebook, Google, Yahoo, GitHub 社交媒体账号登录配置中同时也需要修改来让回调地址和你新修改的地址一致。

请参考官方的相关文章来进行配置和修改。

将主题中所有有关老站点的引用替换为新站点的域名

现在所有主题和帖子中有关站点主题的链接都还是老的域名的,我们现在需要修改这个,帖子中的链接指向新的域名。让我们来进行操作:

./launcher enter app

然后输入并且输入下面的命令:

discourse remap =BEFORE= =AFTER=

根据提示的内容进行修改后,再执行下面的命令:

rake posts:rebake

主题中的 remaps 现在将会使用新的域名地址替换为老的域名地址,然后我们重新生成了所有的主题,以避免有所遗漏。

至此,所有修改域名的配置都已经完成了!

(如果开始你注释掉了 CDN 的配置信息的话,不要忘记将上面的修改改回来。)

想知道 在主题中的输入对话框是如何创建的吗?

1 Like

对域名的修改可能会比较常见。

根据我们安装使用 Discourse 的经验,修改域名后不要着急把老域名删掉,更不要轻易吧上传到 CDN 上的文件删掉。

因为删掉的话,很有可能会出现文件丢失的情况。

1 Like

谢谢 @honeymoose 的教程,成功把域名切换到了正式的 https://forum.beginner.center/

@whitewatercn 不客气。

因为我觉得换域名是非常常见的需求。

我也经常换域名,网站小还好,比较容易换点。如果网站比较大,这换域名也非常头疼的。

1 Like

SSL证书怎么办,没有https连接 ,话说证书储藏在哪里

我想把证书迁过去

在配置文件中有下面 2 句话:

  - "templates/web.ssl.template.yml"
  #- "templates/web.letsencrypt.ssl.template.yml"

主要看你是自己配的 ssl 还是用的 letsencrypt。

配置文件的完整路径为:/var/discourse/templates/web.ssl.template.yml

在这个配置文件中能够看到 Key 的位置。

换域名的话,相应的邮箱的DNS SPF 和 DKIM record是不是也需要变?

这个好像并不需要。

邮件服务是单独的,貌似不需要。

大佬,我换完域名,网站访问正常了,但是却登录不了了,是啥原因呢?

现在好了,是自己输错了密码,分享下新域名

1 Like

好的,好的,没问题。