本指南阐述了如何更改您 Discourse 站点的域名,并包含有关设置 DNS 变更、编辑配置文件、更新站点设置以及更正社交登录和帖子内容以反映新域名的信息。
本指南适用于使用我们在 GitHub 上的安装指南 安装的自托管 Discourse 实例。如果您是由 Discourse 托管 的,请参阅 为托管的 Discourse 配置您的域名 以获取具体说明。
您可能最终希望更改 Discourse 实例的域名,例如从
talk.foo.com
→ talk.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
或者,您可以再次运行
./discourse-setup
并输入新的域名信息,而不是编辑 app.yml
。
检查您的站点在新域名下是否可运行。
修复社交登录
根据您的登录方式,您可能需要先执行此操作,否则一旦名称更改,您将无法登录。
如果您使用社交登录,请更新平台(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
这可确保现有帖子中的域名重新映射,并根据需要重新生成内容。
如果您有 CDN,请记住在域名更改后重新激活它。