改变域名或者重命名我的 Discourse?


(Erick Guan) #1

原文于 Change the domain name or rename my Discourse?,翻译于2015-04-10。

你可能想要改变你 Discourse 的域名,比如说:

talk.foo.comtalk.bar.com

让我们开始吧。

将你的 DNS 记录的 TTL 值降低,别忘记提前设置

你需要让每一个人知道你的域名即将更改了,所以将你的域名的 TTL 值降低至,比如说是 60 分钟吧。

提前几天做这事,可以让整个因特网都知道,这样域名的变更才能迅速生效。

在站点设置中删除关于老域名的信息

访问 /admin/site_settings 并搜索老域名。

如果你发现了老域名,确认一下已经修改了他们。

在 app.yml 修改域名

app.yml 编辑主机地址那一行:

## The domain name this Discourse instance will respond to
DISCOURSE_HOSTNAME: 'talk.bar.com'

(如果你也使用了 CDN,先通过注释 将其先关闭。之后你就可以再把它开启。)

在更改之后,重建:

./launcher rebuild app

做完了之后,你的站点就可以通过新域名地址访问了。

修改 DNS 记录

  • 关闭旧域名的解析记录

  • 将新域名的 IP 地址指向 Discourse。

如果站点名字已经修改好,并且前面的重建过程正常完成,那么所有东西应该都正常了。

验证一下站点正常运行了,但是要做到这个,你得先登录,对吧?这让我们到了下一个环节…

修复第三方站点登录

你的 Twitter、Facebook、Google、Yahoo、GitHub、微博和 QQ 等第三方登录需要经过更改才能映射至新域名。在指南中找找对应的教程。

按照你的登录方式,你可能需要提前做好这件事,要么你就没法登录了。

将帖子中老的站点域名换至新域名

所有的帖子链接都指向了老域名。让我们修复它:

./launcher enter app
discourse remap talk.foo.com talk.bar.com
rake posts:rebake

这将让所有的帖子中的老 URL 指向新 URL,然后重建一遍帖子以防疏漏。

然后我们就搞定了!

(如果你用 CDN,别忘记再重新启用它)


教你更换域名
请问怎么使Discourse显示为中文界面
discourse社区如何切换域名?
(Helperhaps) #2

有个问题:

$ rake posts:rebake
$ rake posts:refresh_oneboxes

这两个命令有什么不同吗?用哪个好(函数栈太深了,看不下去了)

补充:
refresh_oneboxes 会同时刷新 one_box 这个有必要么


(Erick Guan) #3

第一个包括第二个,自动更新。没啥必要不必要的,等于再下载一次


(Helperhaps) #4

gotcha :slight_smile:


(悠悠掌柜) #5

@fantasticfears 请问站长,能不能使用这个方法替换词语呢?例如:我把“论坛”字眼,替换成“社区”

./launcher enter app
discourse remap 论坛 社区
rake posts:rebake

(Erick Guan) #6

用这个


(xiasummer) #7

我改完之后,发现之前设置了https登陆,然后登陆的时候浏览器提醒

此服务器无法证明它是 foo.com ;其安全证书来自 bar.com 。出现此问题的原因可能是配置有误或您的连接被拦截了。无法继续,因为这个网站对这个域要求更高的安全性。

查阅ref的讨论,我发现这个应该是lets encrypt 提供的certificate的问题,需要删除掉旧的,同时添加一个指定到新的域名的新的certificate,但是这个貌似在原讨论中也并没有具体说到如何删除旧的,添加新的。

ref


(Erick Guan) #8

shared 里面应该有 ssl 目录,里面证书可以删掉。


(xiasummer) #9

果然,不仅要删掉shared/ssl与shared/letsencrypt中的老的证书,而且启动需要用另一个浏览器去访问,因为原先的浏览器很可能有原网站的域名自动跳转。

最后就是,需要删除掉老的域名的域名解析,保留新的域名的域名解析。


(Erick Guan) #10

因为浏览器会缓存 TLS 证书。

这个你倒是可以做永久重定向。