本指南说明如何更改您的 Discourse 站点的域名,并包含有关设置 DNS 更改、编辑配置文件、更新站点设置以及更正社交登录和帖子内容以反映新域名信息。
本指南适用于使用我们在 GitHub 上的安装指南安装的自托管 Discourse 实例。如果您由 Discourse 托管,请参阅 Configure your domain name for hosted Discourse 获取具体说明。
您可能最终想要更改 Discourse 实例的域名,例如从
=BEFORE=
=AFTER=
让我们开始吧。
提前将 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
或者,您可以再次运行
./discourse-setup并输入新的域名信息,而不是编辑app.yml。
检查您的站点在新域名下是否可以正常运行。
修复社交登录
根据您的登录方式,您可能需要先执行此操作,否则更改名称后您将无法登录。
如果您使用社交登录,请在平台上(Twitter、Facebook、Google、GitHub)更新凭据以反映新域名。请参阅 Discourse how-to 类别中的指南。
重新映射帖子中的域名
所有现有帖子仍将引用旧域名。
您需要将帖子中对旧域名的引用更改为新域名:
./launcher enter app
然后
discourse remap =BEFORE= =AFTER=
用以下命令完成:
rake posts:rebake
这确保了域名在现有帖子中被重新映射,并且内容会根据需要重新生成。
如果您有 CDN,请记住在更改域名后重新激活它。
想知道 我们是如何创建那个表单的吗?
