如何修改 Discourse 的域名

本篇文章翻译自英文的原文: Change the domain name or rename my 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 的配置信息的话,不要忘记将上面的修改改回来。)

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

请参考原文 如何修改 Discourse 的域名 - Discourse - OSSEZ 了解更多内容。

感谢官方的支持。