当前位置 : 首页 » 文章分类 :  开发  »  Hexo博客(20)更换域名

Hexo博客(20)更换域名

其实我还挺喜欢masikkk.com这个域名的,因为之前玩魔兽争霸的时候经常用这个id,英雄头上一直顶着masikkk,慢慢就有感情了,不过后来有同学提醒我说kkk在国外很容易引起误解,让别人以为和黑帮有关系,确实是这样,之前自己也想到过,但别人说出来就更加在意了。后来注册张大妈账号的时候偶然间选用了“马呆萌”这个昵称,感觉不错,上阿里云一搜,madaimeng.com还没人注册,赶紧注册,然后开始修改博客域名。


域名迁移方案

改博客域名这是个大工程啊,为什么呢,因为里面用了好多第三方的服务,注册的时候都绑定了域名的,改了之后可能就不能用了,慢慢开始梳理修改项。

并且,我想让之前博客上的内容还在masikkk.com域名下继续可访问,就当作为档案备份,毕竟csdn博客上还有很多链接到masikkk.com下的博文。同时维护两个域名的博客也不现实,因为hexo生成文章页面的时候就把域名信息写死了,如果同时维护2份博客部署,每次还要改hexo中的域名配置再次生成,然后改部署配置再次部署。

所以我的方案是:GitHub和Coding上当前部署的hexo博客不动了,再分别开一个项目pages(GitHub和Coding的pages服务都分为用户pages和项目pages,之前都部署在了用户pages上,用户pages一个用户名下只能建立一个),绑定域名madaimeng.com,之后都在新域名下更新博客。


博客源码备份分离

博客源码备份工作一定要做好,安全最重要。目前博客源码备份在Coding上的私有仓库hexo_backup,只有一份。
现在我要改为源码有2份备份:

  • 一份名为masikkk_backup,备份之前masikkk.com的博客源码,此后停止更新,当然,以后如果还想继续维护这个域名,还继续更新。
  • 一份名为madaimeng_backup,备份madaimeng.com的博客源码,以后主要在此源码上做更新。

操作流程如下:

在Coding中新建2个用于备份的私有仓库

coding中创建私有仓库masikkk_backupmadaimeng_backup,选择private私有项目,不需要.gitignore文件,不需要Readme文件,因为这些我们本地项目中都有。

ssh连接Coding远程仓库

由于我们之前已经使用Coding进行部署和备份,私钥公钥文件以及配置好了,不需要此步骤。

解除项目与hexo_backup仓库的关联

首先保证本地源码是最新的。
进入hexo_backup目录,执行git remote rm origin,即删除clone时默认添加的远程仓库origin,现在本地Git已经没有关联的远程仓库了。

博客源码一式两份分别备份到对应远程仓库

将本地hexo_backup文件夹复制一份,命名为madaimeng_backup,原来的文件夹改名为masikkk_backup

madaimeng_backup关联远程仓库并备份

进入madaimeng_backup根目录,添加远程仓库:
git remote add origin git@git.coding.net:masikkk/madaimeng_backup.git
执行git remote show origin查看下远程仓库:

$ git remote show origin
* remote origin
  Fetch URL: git@git.coding.net:masikkk/madaimeng_backup.git
  Push  URL: git@git.coding.net:masikkk/madaimeng_backup.git
  HEAD branch: (unknown)

没问题。然后添加、提交、push到远程仓库:

git add .
git commit -m "首次备份到madaimeng_backup"
git push origin master

由于源码没有任何改动,前两步是无效操作,push到madaimeng_backup项目后去网站上查看下,commit说明还是之前最后一次commit的说明。

masikkk_backup关联远程仓库并备份

进入masikkk_backup根目录,添加远程仓库:
git remote add origin git@git.coding.net:masikkk/masikkk_backup.git
执行git remote show origin查看下远程仓库:

$ git remote show origin
* remote origin
  Fetch URL: git@git.coding.net:masikkk/masikkk_backup.git
  Push  URL: git@git.coding.net:masikkk/masikkk_backup.git
  HEAD branch: (unknown)

没问题。然后添加、提交、push到远程仓库:

git add .
git commit -m "首次备份到masikkk_backup"
git push origin master

由于源码没有任何改动,前两步是无效操作,push到masikkk_backup项目后去网站上查看下,commit说明还是之前最后一次commit的说明。


博客部署分离

GitHub和Coding上,原来masikkk.com的部署repo不要动他,还继续占着“用户pages”仓库,madaimeng.com部署到“项目pages”上。

GitHub和Coding中分别新建部署仓库

  • GitHub中新建空项目madaimeng,用于部署madaimeng.com
  • Coding中新建空项目madaimeng,用于部署madaimeng.com

修改hexo配置文件_config.yml的部署配置

由于我的博客是GitHub和Coding双部署的,需要配置2个pages仓库地址。

配置Coding pages部署

填入Coding中新项目madaimeng的git地址:git@git.coding.net:masikkk/madaimeng.git,分支设为master。
注意:分支不能随便设为其他的,看Coding的pages说明页面,部署来源仅支持coding-pages分支、master分支和master分支/docs目录。


Coding pages服务

配置GitHub pages部署

填入GitHub中新项目madaimeng的git地址:git@github.com:masikkk/madaimeng.git,分支设为master


GitHub pages服务

最终的deploy配置项如下:

deploy:
- type: git
  repo: git@git.coding.net:masikkk/madaimeng.git
  branch: master
- type: git
  repo: git@github.com:masikkk/madaimeng.git
  branch: master

然后hexo g生成博客,hexo d部署到两个pages仓库。


GitHub开启pages服务

新建的空项目是无法开启pages服务的,只有向其中推送内容后才可以开启,GitHub和Coding都一样。

madaimeng项目开启pages服务

hexo d部署后,可以看到项目中有了博客的整套部署文件,在项目settings中找到GitHub Pages项,选择master分支,保存后会提示CNAME文件中的masikkk.com域名已经有pages项目对应了,这很正常,我们稍后再改。


GitHub pages配置

GitHub pages自定义域名配置

可以看到GitHub Pages配置项下面还有个“Custom domain”配置,可以在这里填入自定义域名,我试了下,填入madaimeng.com后会自动更新CNAME文件,将其中内容改为madaimeng.com。2016年我刚开始玩GitHub pages的时候,还必须得手动在CNAME文件中配置自定义域名,现在改为界面配置方式了,更方便了,但本质上还是写入CNAME文件。

自定义域名前,只能通过 http://masikkk.github.io/madaimeng 访问项目pages,自定义域名后可通过 http://madaimeng.com 访问(当然前提是得设置madaimeng.com到GitHub pages的域名解析)。

有意思的是,通过 http://masikkk.com/madaimeng 也能访问博客,为什么呢?因为我还保留了之前的masikkk.github.io用户pages项目,里面也配了自定义域名,masikkk.com就是masikkk.github.io的自定义域名。

另外,配置了自定义域名后,再通过原来的 {username}.github.io 或 {username}.github.io/projectname 访问pages页面都会自动跳转到自定义域名,强制跳转的,如果不想跳转只能去掉自定义域名配置。


Coding开启pages服务

madaimeng项目开启pages服务

和GitHub的madaimeng项目一样,hexo d部署后,可以看到项目中有了博客的整套部署文件,打开项目的“Pages服务”配置页,这里面又分为“静态Pages”和“动态Pages”,在“静态Pages”中配置“部署来源”,选择master分支,保存后稍等一会儿就显示部署成功。


Coding pages配置

不得不感慨,当时刚开始用Coding的pages时,并没有“动态pages”这一说,现在又增加了动态pages,我看了下说明是可以部署WordPress动态网站:动态 Pages 是一个动态网页托管和演示服务,支持使用 PHP 语言和 MySQL 数据库,可用于部署开源博客、CMS 等动态应用。

Coding pages自定义域名配置

同样,Coding pages也可以配置自定义域名,配置为madaimeng.com
自定义域名前,只能通过 http://masikkk.coding.me/madaimeng 访问,自定义域名后可通过 http://madaimeng.com 访问(当然前提是得设置madaimeng.com到Coding pages的域名解析)


用户pages和项目pages区别

GitHub和Coding一样,一个用户名下只能创建一个唯一的用户pages项目,并且项目名必须和用户账号相同。

GitHub用户pages和项目pages区别

  • 用户pages
    • 默认URL:{username}.github.io
    • 允许的部署来源:master分支
  • 组织pages
    • 默认URL:{username}.github.io/{projectname}
    • 允许的部署来源:master分支、gh-pages分支、或master分支中的/docs目录

参考:User, Organization, and Project Pages
https://help.github.com/articles/user-organization-and-project-pages/

Coding用户pages和项目pages区别

  • 用户pages
    • 默认URL:{user_name}.coding.me
    • 允许的部署来源:master分支
  • 项目pages
    • 默认URL:{user_name}.coding.me/{project_name}
    • 允许的部署来源:master分支、coding-pages分支、或master分支中的/docs目录

参考:创建静态 Coding Pages
https://coding.net/help/doc/pages/getting-started.html


阿里云中配置新域名的DNS解析

DNS解析配置如下图:


阿里云DNS解析

记录类型

  • A记录:将域名指向一个IPv4地址(例如:10.10.10.10),需要增加A记录
  • CNAME记录:如果将域名指向一个域名,实现与被指向域名相同的访问效果,需要增加CNAME记录

主机记录:

  • www :将域名解析为www.example.com,填写www;
  • @ :将域名解析为example.com(不带www),填写@或者不填写;

为了实现国内访问走Coding,国外访问走GitHub,需要分线路解析:

  • 国外线路解析到GitHub pages,添加CNAME记录指向 {username}.github.io,即 masikkk.github.io
  • 国内线路解析到Coding pages,添加CNAME记录指向Coding Pages给的域名:
    • 静态 Pages,设置域名的 CNAME 记录到 pages.coding.me
    • 动态 Pages,设置域名的 CNAME 记录到 pages.coding.io

关于指向的域名,GitHub和Coding官网上都有帮助手册:


域名前加www无法访问问题

GitHub pages自定义www子域名

在DNS解析中设置了www和@的CNAME记录后,GitHub pages可自动实现 madaimeng.com 和 www.madaimeng.com 互相跳转,在自定义域名中配的是哪个,最终跳转到的(显示的)就是哪个。不需要额外的配置。所以我的博客在国外是可以通过前面加www的域名打开的。
下面的说明文档中说的很清楚:

Coding pages自定义www子域名

但我的博客在国内还是无法通过加www打开, http://www.madaimeng.com 只能打开Coding Pages提供的404页面,为什么呢?
既然能解析到Coding Pages,就说明在DNS解析处的配置是没问题的,但到达Coding Pages后,无法定位到具体的域名(因为没有哪个pages项目配置了自定义域名www.madaimeng.com ),找不到页面,所以出来个404。

解决方法很简单,在Coding madaimeng项目的pages设置中,再绑定一个自定义域名 www.madaimeng.com ,还可以设置是否自动跳转到不带www的域名,我比较喜欢不带www的,所以将不带www的域名设为“首选”,后面带www的勾选“跳转到首选”,如图:


Coding pages自定义www子域名

这样国内也可以通过 www.madaimeng.com 访问了,页面打开后会自动跳转到 madaimeng.com

Coding Pages的帮助文档中也说明了:

在『Pages 服务』设置页中绑定您的自定义域名,如果域名前缀为 www,绑定自定义域名需要填写 www 前缀。


其他配置修改

以下修改都是在新域名博客源码madaimeng_backup中

修改source中的CNAME文件

GitHub pages的自定义域名需要在CNAME文件中配置,刚才我们在GitHub页面上配了。但直接在GitHub页面上配置不行啊,下次再部署还得给覆盖了,所以,修改博客源码根目录madaimeng_backup/source中的CNAME文件,内容改为madaimeng.com

注意:CNAME,README,404.html等不需要hexo编译的文件都可以放在Hexo/source文件夹下,hexo g生成博客时会被原封不动的拷贝到public文件夹中,部署后自然就到了项目的根目录。

修改hexo配置文件_config.yml

url配置项,将 http://masikkk.com 改为 http://madaimeng.com
deploy配置项,前面已修改。


CNZZ统计新建站点并更新代码

  • 1、CNZZ中新建站点madaimeng.com,之后在“站点设置”->“获取代码”中可以看到统计代码。
  • 2、在主题的_config.yml配置文件中,有个cnzz_tongji配置项,siteid改为新站点的siteid,看CNZZ“获取代码”页面的URL,里面有个id='cnzz_stat_icon_**********'就是。
  • 3、统计代码之前加过,在free2mind/layout/_partial/post/analytics.ejs中,代码中含有自己siteid的地方是用<%= theme.cnzz_tongji.siteid %>变量代替的,所以代码不用动。

百度统计新建站点并更新代码

  • 1、百度统计中新建站点madaimeng.com,并获取代码。
  • 2、在主题的_config.yml配置文件中,有个baidu_tongji配置项,siteid改为新站点的siteid,“获取代码”中的hm.src = "https://hm.baidu.com/hm.js?***************"; 就是siteid
  • 3、百度统计代码是主题自带的,也在analytics.ejs中,里面也是引用了<%= theme.baidu_tongji.siteid %>变量,所以不用动。

百度站长平台新建站点及提交搜索收录相关

之前的百度站长平台 http://zhanzhang.baidu.com/ 现在改名叫 百度搜索资源平台 http://ziyuan.baidu.com/ 了。

使用百度联盟账号登录,我之前添加的站点masikkk.com还在其中,但新添加站点的话,需要填写手机号、姓名等非常严格的信息,然后才能添加新站点。

网站验证

然后要进行网站验证,即验证对网站的所有权。

我去年(2016年8月)添加站点的时候,由于已经使用了百度统计,是不需要验证的

首先如果您的网站已使用了百度统计,您可以使用统计账号登录平台,或者绑定站长平台与百度统计账号,站长平台支持您批量导入百度统计中的站点,您不需要再对网站进行验证。

但这次新域名也添加了百度统计,不知道是不是由于今天刚加上还未生效,还是需要手动验证,百度提供以下三种验证方式:

  • 文件验证
    将验证文件(baidu_verify_{自动分配的id}.html)放置于所配置域名(madaimeng.com)的根目录下。为保持验证通过的状态,成功验证后也不能删除此HTML文件。

  • HTML标签验证
    将以下代码添加到网站首页HTML代码的<head>标签与</head>标签之间,完成操作后请点击“验证”按钮。
    <meta name="baidu-site-verification" content="{自动分配的id}" />
    为保持验证通过的状态,成功验证后也不能删除该标签。
    我感觉这种方式不安全啊,<meta>标签是可以被别人通过右键查看网页源文件看到的,这不就暴露了验证ID吗?但貌似也没人这么无聊。

  • CNAME验证
    将 {自动分配的id}.madaimeng.com 使用CNAME解析到ziyuan.baidu.com
    完成操作后点击“完成验证”按钮。为保持验证通过的状态,成功验证后也不能删除该DNS记录。


百度站长平台中通过CNAME方式进行网站验证

我使用的是CNAME验证,只需要在阿里云中添加一条DNS解析即可,不用改动网站源码,方便。

在阿里云中给madaimeng.com加上如下一条解析记录,主机记录填入自动分配的id,保存后等几分钟,点击完成验证,成功。


添加阿里云DNS解析进行验证

链接提交js代码之前添加过,在free2mind/layout/_partial/post/footer.ejs中,不用动。


百度推荐配置新站点并更新代码

  • 使用百度联盟账号登录百度推荐,看到左上角已经自动关联了新站点madaimeng.com,应该是从站长平台关联过来的。
  • 在站点madaimeng.com下,新建2个推荐频道,一个是主页推荐,一个是文章页推荐。每个频道中新建一个推荐窗口,然后配置推荐内容,主页推荐窗口的推荐策略为“个性化优先”,文章页推荐窗口的推荐策略为“相关性优先”。之前有文章专门介绍了如何使用百度推荐,完全照着来一遍即可。
  • 主页侧边栏推荐窗口代码在 themes\free2mind\layout\_widget\baidu_tuijian.ejs中,改为刚才新建的主页推荐窗口的代码。
  • 文章页侧边栏推荐窗口代码在 themes\free2mind\layout\_partial\post\meta.ejs中,改为刚才新建的文章页推荐窗口的代码。

来必力评论系统相关

来必力中没法新建站点,一个账号只能对应一个网站,懒得再注册账号了。
我直接什么也没改,还用的原来masikkk.com的data-uid,没想到完全可用,有新评论后也会邮件通知,邮件通知中的链接也正常跳转到madaimeng.com。我感觉可能不管在哪个域名下使用,只要data-uid一样,使用的就是同一套评论系统。
但是两个站点同一篇文章的评论互相看不到,这个是为什么呢?我猜测由于两个站点文章的url不同,评论系统只是把他们当做同一站点的不同文章,不同文章的评论当然不能显示在同一篇下了。


下一篇 Hexo博客(19)使用七牛云图床

域名迁移公告
2017年12月20日起,本博客迁移到新域名madaimeng.com,旧域名masikkk.com不再更新内容,但将永久保持可访问!
阅读
4,509
阅读预计17分钟
创建日期 2017-12-20
修改日期 2017-12-26
类别
标签
百度推荐