hexo 部署小议

“为自己的目标努力着,全身心投入一件事情的时候,就不再整天想睡懒觉,不再熬夜看偶像,也不用刻意去想怎样好好生活,删掉那些原以为离不开的东西,然后觉得,这才是生活原本的样子啊。” ​​​​—— 德卡先生的信箱

  之前 hexo 或者其他的静态博客部署的问题,最先开始都是部署到 github 上,但github 在国内这种网络环境下偶尔总有点膈应,之所以想在 Coding(之前的 GitCafe)上再部署一份,是出于两个原因考虑:一是为了百度搜索爬虫能抓取自己博客上的内容,因为Github 屏蔽了百度爬虫,部署在国内才能被抓取到;二是为了国内访问加速,部署之后国内访问走 Coding,国外访问走 Github。这样既实现了访问速度的提升,内容的抓取,又能实现内容和代码两个地方备份,何乐而不为呢。

  简单了解下,coding 上部署 hexo 这类静态博客有两种方式来部署。第一种是 pages 服务的方式,操作简单,可绑定自己的域名;第二种是演示方式,操作比较复杂,要想自动部署还需要配置 webhook,并且必须升级会员才能绑定自定义域名。所以选择用 pages 方式。

1.1 准备 coding 上的仓库

GitHub Pages相同,Coding Pages也分用户站(用户页)项目站(项目页)

  • 用户站需要创建一个和用户名完全相同的项目,一个用户名下只能有一个,创建好后在其 coding-pages 分支(这里和 GitHub 不同,GitHub 的用户站是 master 分支)下部署 html 页面后即可通过 username.coding.me 访问。
  • 项目站可在任意项目中开启,也是部署 html 页面到 coding-pages 分支,然后可以通过 username.coding.me/projectname 访问。

1、coding 上注册账号,记住个性后缀,待会很用到

2、上传机器的 SSH 公钥到 coding,这里不再赘述

3、测试连接,是否能看到 success 返回

$ ssh -T git@git.coding.net

1.2 推送内容到 coding

1、编辑配置文件,增加推送到 coding

这里 hexo 怎么生成内容前文有,这里编辑站点配置文件

# 在部署这里增加成如下样式
deploy:
type: git
repo:
github: git@github.com:mingmings/note.git,gh-pages
coding: git@git.coding.net:mingmingsong/mingmingsong.git,coding-pages

# 开始部署
$ hexo deploy

2、 启用 coding-pages 的功能

后台页面上启用 pages 服务,coding 官方文档写的很清楚 user pageproject page 的区别,我这里因为用的是 coding-pagesgh-pages 分支,所以我用的其实是 project-pages 的形式。所以我的访问应该是 <username>.coding.me/<project>

1.3 链路优化

这里已经推送到了 coding,那么接下来就想实现上面说到的国内访问 coding,国外访问就访问 github,这样不同的链路访问都能获得相对理想的速度。因为每次更新博客更新都会同时推送到 coding 和 github,内容完全一致

1、这里就必须使用 dns 解析了

这里多数人用 dnspod,我之前买域名是从万网购买的,所以直接从万网的后台来设置 dns 解析,原理相同


核心就是这里的链路类型,不同的线路指向不同的类型,这里 dnspod万网以及其他可以提供域名解析的提供商应该都会有这个提供。到这里整个部署到 coding 就算完成了

1.4 以子目录形式部署 blog

我的 blog,无论是在之前 github 上还是现在的 coding 上,发觉别人访问我的域名mingmings.org 都是一个静态主页,我的 blog 其实是在 mingmings.org/note 下,blog 看似是在子目录中

这里其实原理是混用了 user-pagesproject-pages,这里稍微解释下,原理和 github 是相同的

  • user-pages 的仓库,根据 coding 的规定,user-pages 的仓库名必须是 <username>.coding.me,这个规则同样适用 github,只不过 github 的 user-pages 的名是 <username>.github.io,所以访问地址应该是 <username>.coding.me,我绑定域名 mingmings.org,相当于我整个站的首页
  • mingmings.org/note 因为不是一个域名,只是相当于子目录,所以指向了 project-pages 的仓库,这里 coding 没有对 project 的仓库名称做限制,所以可以随便起,我这里就是 note.git 但是分支可以是 mastercoding-pages,因为 github 上要求的 project-pages 的分支必须是 gh-pages ,所以我习惯这里也就沿用了 coding-pages 分支,相当于我整个站下的 note,所以访问域名因为上面域名的绑定这里就成了 mingmings.org/note
# 所以到这里应该理解配置文件格式为什么后面的分支是这样
deploy:
type: git
repo:
github: git@github.com:mingmings/note.git,gh-pages
coding: git@git.coding.net:mingmingsong/mingmingsong.git,coding-pages

到了这,完整的同时部署到 coding 和 github 上就完成了,并能根据线路优化访问,收工~

  

参考阅读