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的博客源码,以后主要在此源码上做更新。
操作流程如下:
1、在Coding中新建2个用于备份的私有仓库
coding中创建私有仓库masikkk_backup
和madaimeng_backup
,选择private私有项目,不需要.gitignore文件,不需要Readme文件,因为这些我们本地项目中都有。2、ssh连接Coding远程仓库
由于我们之前已经使用Coding进行部署和备份,私钥公钥文件以及配置好了,不需要此步骤。3、解除项目与hexo_backup仓库的关联
首先保证本地源码是最新的。
进入hexo_backup目录,执行git remote rm origin
,即删除clone时默认添加的远程仓库origin,现在本地Git已经没有关联的远程仓库了。4、博客源码一式两份分别备份到对应远程仓库
将本地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页面都会自动跳转到自定义域名,强制跳转的,如果不想跳转只能去掉自定义域名配置。
- Custom domain redirects for GitHub Pages sites
https://help.github.com/articles/custom-domain-redirects-for-github-pages-sites/
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/creating-pages.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官网上都有帮助手册:
- GitHub Pages帮助:Quick start: Setting up a custom domain
https://help.github.com/articles/quick-start-setting-up-a-custom-domain/ - Coding Pages帮助:绑定自定义域名
https://coding.net/help/doc/pages/domain.html
域名前加www无法访问问题
GitHub pages自定义www子域名
在DNS解析中设置了www和@的CNAME记录后,GitHub pages可自动实现 madaimeng.com 和 www.madaimeng.com 互相跳转,在自定义域名中配的是哪个,最终跳转到的(显示的)就是哪个。不需要额外的配置。所以我的博客在国外是可以通过前面加www的域名打开的。
下面的说明文档中说的很清楚:
- Setting up an apex domain and www subdomain
https://help.github.com/articles/setting-up-an-apex-domain-and-www-subdomain/
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 前缀。
- Coding Pages帮助:绑定自定义域名
https://coding.net/help/doc/pages/domain.html
其他配置修改
以下修改都是在新域名博客源码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.comdeploy
配置项,前面已修改。
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 %>
变量,所以不用动。
2018.1.5更新,新域名访问量太低了,看看新老域名的访问量对比图
masikkk.com和madaimeng.com访问量对比
老域名每天有将近100的pv,有近一半是直接访问,四分之一是csdn导流过来的,四分之一是搜索进入;新域名pv为个位数,多数还是我自己点击的。
老域名在百度的索引量稳定在200左右,而新域名只有可怜的2篇。
老域名可轻松在百度用site:
语法搜索站内文章,新博客site:
语法无结果。
慢慢来吧,我的老域名有现在的结果也是一点点积累的。
百度站长平台新建站点及提交搜索收录相关
之前的百度站长平台 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中,改为刚才新建的文章页推荐窗口的代码。
注意:如果网站访问量过小,需要好几天才能生成推荐内容,在生成推荐内容之前推荐框是不显示的,不要太着急以为弄错了。我的新博客17年12月23号就添加了推荐频道,直到18年1月5号主页侧边栏的推荐窗口才有内容,而文章详情页的推荐窗口目前还是没有内容。
来必力评论系统相关
来必力中没法新建站点,一个账号只能对应一个网站,懒得再注册账号了。
我直接什么也没改,还用的原来masikkk.com的data-uid
,没想到完全可用,有新评论后也会邮件通知,邮件通知中的链接也正常跳转到madaimeng.com。我感觉可能不管在哪个域名下使用,只要data-uid
一样,使用的就是同一套评论系统。
但是两个站点同一篇文章的评论互相看不到,这个是为什么呢?我猜测由于两个站点文章的url不同,评论系统只是把他们当做同一站点的不同文章,不同文章的评论当然不能显示在同一篇下了。
上一篇 来自Coding的圣诞惊喜
下一篇 Spring-JMX
页面信息
location:
protocol
: host
: hostname
: origin
: pathname
: href
: document:
referrer
: navigator:
platform
: userAgent
: