前言
以前咱们把hexo托管在github,可是毕竟github是国外的,访问速度上仍是有点慢,因此想也部署一套在国内的托管平台,以前查资料据说gitcafe,可是据说gitcafe已经被coding收购了,因此就决定部署到coding。 查询了多方资料,终于鼓捣出了本地一次部署,同时更新到github以及coding。 html
正文
_config.yml配置
想要同时部署到2个平台,就要修改博客根目录下面的_config.yml文件中的deploy以下
根据Hexo官方文档须要修改为下面的形式git
deploy: type: git message: [message] repo: github: <repository url>,[branch] gitcafe: <repository url>,[branch]
因此个人是这样:github
deploy: type: git repo: github: git@github.com:tengj/tengj.github.io.git,master coding: git@git.coding.net:tengj/hexoblob.git,master
这里要注意一下:上面这段代码左边的-号只能有2个(以下图红圈),若是超过2个通常就是会被认定为填写格式有问题。我是在repo下面两行用tab键缩进就行,以前没注意这里一直报错。 segmentfault
我这边提交采用的SSH密钥,这个方法有个好处,提交的时候不用输入用户名和密码。若是你习惯用http的方式,只要将地址改为相应的http地址便可。浏览器
coding上建立一个新项目
这里只介绍coding上面如何建立项目,以及把本地hexo部署到coding上面,还不懂如何建立hexo的请看我以前的系类文章。首先咱们建立一个项目,建立后进入项目的代码模块,获取到这个项目的ssh地址,个人是https://git.coding.net/tengj/hexoblob.git
bash
同步本地hexo到coding上
把获取到了ssh配置在上面的_config.yml
文件中的deploy
下,若是是第一次使用coding的话,须要设置SSH公钥,生成的方法能够参考coding帮助中心
若是你看过我第一篇文章,里面也有介绍若是若是生成,我这里直接使用以前部署github时已经生成的公钥。
服务器
本地打开 id_rsa.pub
文件,复制其中所有内容,填写到SSH_RSA公钥
key下的一栏,公钥名称能够随意起名字。完成后点击“添加”,而后输入密码或动态码便可添加完成。 hexo
添加后,在git bash
命令输入:ssh
ssh -T git@coding.net
若是获得下面提示就表示公钥添加成功了:网站
Coding.net Tips : [Hello ! You've conected to Coding.net by SSH successfully! ]
最后使用部署命令就能把博客同步到coding上面:
hexo deploy -g
pages服务方式部署
部署博客方式有两种,第一种就是pages服务的方式,也推荐这种方式,由于能够绑定域名,而第二种演示的方式必须升级会员才能绑定自定义域名。pages方式也很简单
就是在source/须要建立一个空白文件,至于缘由,是由于 coding.net须要这个文件来做为以静态文件部署的标志。就是说看到这个Staticfile就知道按照静态文件来发布。
cd source/ touch Staticfile #名字必须是Staticfile
分支选择master,由于前面配置的分支是master,所以开启以后,也须要是master。而后看起以后就可访问了。
注意:
若是你的项目名称跟你
coding
的用户名同样,好比个人用户是叫tengj
,博客项目名也叫tengj
那直接访问tengj.coding.me
就能访问博客,不然就要带上项目名:tengj.coding.me/项目名
才能访问 推荐项目名跟用户名同样,这样就能够省略项目名了
演示方式部署
当你把你的静态网站上传到Coding以后,就能够着手部署演示了,Coding的演示平台支持静态网页,因此其实很是简单。在开启演示模式以前,会提醒你没有检测到环境,你直接强制开启就能够了。
- 部署版本我没有填,默认是master
- 运行环境必定要选择HTML
- 自动部署要勾上,为后面配置自动部署作准备
- 访问域名根据你本身喜好填写,填好要点急后面的确认按钮
- 应用内存也根据本身喜爱填写,填好要点急后面的确认按钮
以上都配置好了,就能够按下一键部署的按钮了,部署成功后输入地址:tengj.coding.io就能访问
设置自动部署
若是你是演示方式的话,就须要设置自动部署,很奇怪,我勾选上了自动部署,可是同步新文章的时候,tengj.coding.io访问没有自动更新最新的。查了资料发现还要配置WebHook才行
- 找到项目设置那边的WebHook,而后点击新建 Hook
- 第一个输入框中是填你的博客域名,而后在后面加上 /_
- 第二个输入框是输入一个 token ,咱们直接填写
{ { TOKEN } }
就能够了,TOKEN两边的大括号见的空格记得去掉 - 回到演示里,在左边的栏目中找到环境变量,变量名填写为
WEBHOOK_TOKEN
,值为{ { TOKEN } }
,接着从新启动应用就 ok 了!
最后一步咱们要测一下是否 push 代码的时候就会自动部署。咱们回到命令行建立一个新的文章(能够什么都不写),而后生成静态页面 push 到仓库去:
hexo n codingPage hexo deploy -g
咱们回到浏览器在输入博客的地址,若是那篇新写好的文章出如今首页了,说明咱们自动部署成功了。之后不再用本身去手动部署一次了!
我的域名绑定
我在万网上面购买了tengj.top域名,第一年只要4元哈哈,我的用的就不用com这种超级贵的域名了。如今要实现国内的走coding,海外的走github,只要配置2个CNAME就行。域名解析以下:
过几分钟后检测tengj.top看到的解析是正确的,国内解析到Coding,国外解析到Github,如图:
我如今访问tengj.top
是跳转到coding上面
直接访问tengj.github.io
地址会跳转到tengj.top
,可是内容也是coding上面
直接访问tengj.coding.me
发现不会跳转到tengj.top
这个域名,缘由我发帖问过别人,回答以下:
github只能绑定一个域名,因此访问
tengj.github.io
时,github的服务器知道要往tengj.top
跳转。coding能够绑定多个域名,当绑定多个域名时,访问tengj.coding.me,coding
的服务器不知道要往哪里跳转,因此干脆就不跳转了。可是当绑定一个时,为何不跳转,多是coding以为麻烦,就不跳转了。这些都是coding定的,咱们没办法改变。
你先想一个问题:那么多人都要在github
上搞博客,还要自定义域名。github哪来这么多ip给大家用?因此办法就是仅仅提供一个ip,这样必然致使这个服务器上发着全部人的博客文件,那么如何区分特定的域名应该展现谁的博客呢?就是在仓库里面新建一个CNAME文件,里面写上你博客想用的域名,github的服务器会根据当前http请求的Host头部(即域名),查找对应的包含相同的CNAME内容的目录,从而显示其中的页面。这就是为何要在仓库里面建立一个CNAME缘由。
不过,事情还没完,一个ip的问题是世界各地不一样地点的访问速度不一样,有些地方可能很慢,因此须要一组ip来分担一下。最先github好像只有2个ip,后来ip变多了。再后来,github支持域名解析的时候,经过alias来。好比在域名商那边设置成www.tengj.com ---> tengj.github.io
,因为github没法控制你如何配置域名和ip的关系,但他能够控制tengj.github.io
的最终ip解析,因此github
推荐你们使用alias
解析,能够为博主提供就近ip访问。这就是你在域名商那边配置CNAME
或者alias
的原理。这里的CNAME
跟上面提到的CNAME
做用不一样,不是一个概念,不要混淆。
参考
使用Cover主题,在Coding上搭建Hexo博客
将hexo博客同时托管到github和gitcafe
我的域名如何同时绑定 github 和 coding 上的博客
总结
到此为止,终于能够实现部署一次,github和coding两个同步都搞定了。访问速度也是唰唰唰的快,忙乎了大半个月终于搭好了独立博客。但愿对还在搭建hexo独立博客的小伙伴有帮助。下一篇研究下如何让百度能收录个人博客。
最后,厚颜无耻的求打赏..若是您认为博主的教程帮助到了你~ 你懂的o(^▽^)o (/▽\=)