更改discourse社区的网站域名(网址),一定要设置这些

:bookmark: 本指南阐述了如何更改您 Discourse 站点的域名,并包含有关设置 DNS 变更、编辑配置文件、更新站点设置以及更正社交登录和帖子内容以反映新域名的信息。

:warning: 本指南适用于使用我们在 GitHub 上的安装指南 安装的自托管 Discourse 实例。如果您是由 Discourse 托管 的,请参阅 为托管的 Discourse 配置您的域名 以获取具体说明。

您可能最终希望更改 Discourse 实例的域名,例如从

talk.foo.comtalk.bar.com

让我们开始吧。

提前设置较低的 DNS TTL

首先,将 DNS 的生存时间 (TTL) 设置更改为较低的值,例如 60 分钟。这应该在实际域名更改前几天完成,以确保更改可以在互联网上快速传播。

从任何站点设置中删除旧域名

访问您 Discourse 管理界面中的 /admin/site_settings,并搜索包含旧域名的任何设置。将这些设置更新为新域名。

更改 DNS 记录

更新您的 DNS 设置以禁用旧域名,并将新域名指向您 Discourse 服务器的 IP 地址。

app.yml 中编辑站点名称

您可以手动编辑 app.yml 文件以输入新的域名信息。

以下是手动编辑的方法:

cd /var/discourse
nano containers/app.yml

找到以下行并替换它:

DISCOURSE_HOSTNAME: 'your.newdomain.com'

如果使用内容分发网络 (CDN),请通过注释掉 app.yml 中的相应行来暂时禁用它。使用以下命令重建您的 Discourse 站点:

./launcher rebuild app

:information_source: 或者,您可以再次运行 ./discourse-setup 并输入新的域名信息,而不是编辑 app.yml

检查您的站点在新域名下是否可运行。

修复社交登录

:exclamation: 根据您的登录方式,您可能需要先执行此操作,否则一旦名称更改,您将无法登录。

如果您使用社交登录,请更新平台(Twitter、Facebook、Google、Yahoo、GitHub)上的凭据以反映新域名。在 Discourse 的 操作指南类别 中查找指南。

重新映射帖子中的域名

所有现有帖子仍将引用旧域名。

您需要将帖子中的旧域名引用更改为新域名:

之前:talk.foo.com

之后:talk.bar.com

./launcher enter app

然后

discourse remap talk.foo.com talk.bar.com

或者,如果 discourse 二进制文件不可用,您可以使用 rake 版本:

bundle exec rake posts:remap["talk.foo.com", "talk.bar.com"]

最后:

rake posts:rebake

这可确保现有帖子中的域名重新映射,并根据需要重新生成内容。

:information_source: 如果您有 CDN,请记住在域名更改后重新激活它。