将hexo博客同时托管在github,oschina和codin
我是小小强,这是我的第11篇原创文章,阅读需要大约15分钟。
背景
目前个人博客已经完成hexo搭建、在百度及谷歌收录。截止本文写作时,谷歌可收录博客,百度还无法搜索。由于github禁止百度爬虫抓取,所以需要想办法将博客部署到其他的站点上去。
经过考察,oschina目前无法绑定域名,coding可以;github私有仓库收费,oschina和coding不收费。所以经过一番折腾之后,目前的博客部署情况如下:
- 博客源码文件部署在oschina和coding的私有仓库上,本地执行
git add
,git commit
和git push
后会推送到对应仓库上 - 博客产生的静态文件部署在github、coding和oschina的公有仓库上。本地执行
hexo cl;hexo g -d
之后会自动推送到对应的仓库上。 - github和coding开启pages服务,用于提供博客服务,同时绑定域名。oschina也开启pages服务,但是无法绑定域名,可提供博客服务。
准备工作
创建coding帐号,在coding创建公有仓库,仓库名称与coding用户名一致,作者使用的是xxx,不创建分支。
配置本地git推送环境
- 本地创建coding对用的ssh key
ssh-keygen -t rsa -C "xxx@163.com" -f coding
,然后复制coding.pub文件内容,拷贝到coding。 -
ssh-add coding
将私钥加入本地库(以后每次开机都要执行) - 执行ssh -T git@git.coding.net测试是否成功
- 配置.ssh/config文件,加入以下内容
#coding
Host coding
HostName git.coding.net
User git
IdentityFile ~/.ssh/coding
- 修改_config.yml,将
deploy:
type: git
repository: https://github.com/xxx/xxx.github.io.git
branch: master
修改为
deploy:
type: git
repo:
github: git@github.com:xxx/xxx.github.io.git,master
coding: git@git.coding.net:xxx/xxx.git,master
注意在yml文件中,:后面都是要带空格的。以后执行hexo cl;hexo d -g
可以推送到两个版本库。另外经过测试,下面也可以
deploy:
type: git
repo:
github: https://github.com/xxx/xxx.github.io.git
coding: https://git.coding.net/xxx/githubblog.git
创建coding博客服务
coding启动pages服务
上文推送成功后,coding的xxx版本库会有静态文件,然后选择pages服务,选择部署来源master。部署成功后会提示http://xxx.coding.me/xxx/
部署成功,点击可以看到博客页面。
这里其实有个坑,如果你在建立版本库时,库名称和coding用户名不一致,在pages启动后,点击页面发现排版混乱,点击链接显示页面无法找到。如果要解决这个问题,就必须要绑定域名,在成功绑定域名后,再次启动pages服务,页面显示正常。所以,为了减少麻烦,默认还是建立与用户名一致的版本库吧,这样即使不绑定域名,博客也是可以正常访问的。
绑定域名
绑定过程比较简单,成功后执行xxx.github.io
和http://xxx.coding.me/xxx/
以及http://xxx.coding.me
,都会跳转到xiaoxiaoqiang.win
创建coding私有仓库
之前已经将hexo博客的源文件部署到oschina的私有仓库上,不过既然使用了coding,顺便也想在coding上也部署一个源文件库作为备份。这里就涉及到本地git库如何推送远端不同的仓库的知识。
创建coding私有库
在coding创建私有项目hexo,不创建任何分支。
修改本地git的config文件
方法1:
vim .git/config
最后增加
[remote "web"]
url = https://git.oschina.net/xxx/hexo.git
url = https://git.coding.net/xxx/hexo.git
每次执行git add .
,git commit
,然后执行git push web
方法二:
git remote add web https://git.oschina.net/xxx/hexo.git
git remote set-url --add https://git.coding.net/xxx/hexo.git
git push all --all
这种方法实际修改的也是config文件。