0%

Hexo配置多个git仓库

吐槽

在经历过域名被封之后,今天又经历了搬瓦工服务器IP被封,我太难了。。。o(╥﹏╥)o
服务器IP被封,带来了三个问题:第一个是不能愉快地科学上网了;第二个是内网穿透不能使用了;第三个是自己的 www.voidking.com 域名无法访问了。

对于问题一,暂时使用免费的公共飞机场。对于问题二,暂时使用百度服务器,但是因为没有备案,所以不能进行域名解析。对于问题三,就是本文要解决的问题之一。

回到github

那么,因为服务器IP被封,域名无法访问怎么办?

方法一:再购买一个新的搬瓦工IP,或者再购买一个新的国外服务器。但是因为不想再花钱(就是这么抠),所以这个方法被否定了。
方法二:使用免费的git pages服务,比如github pages、gitlab pages、gitee pages等,并且把域名解析到git pages服务器。这里我选择最开始搭建hexo就使用的github pages,它支持免费的自定义域名和https。

参考《Hexo环境搭建》《Hexo环境搭建2018年5月版》,配置好github pages服务,并且配置域名的CNAME解析到 voidking.github.io ,开启强制https(github会自动申请ssl证书,点个赞)。

百度收录问题

除了访问速度慢一点之外,现在我的域名已经正常了,nice。但是,另外的问题出现了:百度搜索不到我的域名了!

使用百度抓取诊断工具诊断,发现抓取异常信息是拒绝访问,403 Forbidden。这是因为github屏蔽了百度蜘蛛,所以百度无法收录解析到github的域名。

浏览了一些文章,找到了解决办法:在DNSPod配置两个www的域名解析,线路类型“默认”解析到 voidking.github.io ,线路类型“百度”解析到一个百度可以抓取的地址,如下图。

也就是说,需要维护两个站点,两个站点分别处理来自不同线路的流量。其中一个站点建立在github,另外一个站点建立在哪儿呢?这里我选择ZEIT Now

理想是美好的,现实是残酷的!因为无论是github还是zeit,都需要验证域名解析,而它们都是境外服务器,所以都需要线路类型“境外”的CNAME解析,否则无法通过验证!尴尬了。。。只能选择其一。

为了百度的收录,看起来只能选择zeit了,不过zeit每个月只有20G的流量。为了在zeit流量用光后方便地切到github,因此还是需要维护两个站点。

hexo配置多个git仓库

为了维护两个站点,所以每次更新,需要发布github pages和zeit。github pages的发布很方便,上传代码后直接就发布了;而zeit的发布有多种方式,其中一种方式是通过Deploy Hooks触发。

如果github和zeit都使用 voidking.github.io 这一个git仓库,那么问题很简单。hexo d后,再访问一个url触发 Deploy Hooks就可以了。而zeit,不支持 voidking.github.io 这种项目名称,因此稍微麻烦一点。

1、新建git仓库
在github上再创建一个git仓库叫做voidking,import voidking.github.io仓库。

2、配置zeit关联
把voidking这个仓库和zeit做关联,并且发布项目,配置生成一个Deploy Hooks。

3、配置域名
按照提示绑定 www.voidking.com 这个域名到zeit站点。

4、修改config.yml文件
修改hexo的config.yml文件中的deploy部分为:

1
2
3
4
5
6
7
8
# github
deploy:
- type: git
repo: https://voidking.com/voidking/voidking.github.io.git
branch: master
- type: git
repo: https://voidking.com/voidking/voidking.git
branch: master

以上配置参考Hexo一键发布

5、发布项目
正常执行hexo d,静态资源代码会上传到两个git仓库中。
其中,voidking.github.io这个仓库就直接发布了。而voidking这个仓库想要发布到zeit上,还需要手动触发一下(访问Deploy Hooks的url)。

至此,hexo多个git仓库,多个站点配置完成。

后记

如果zeit上的流量用完了,可以在DNSPod上修改域名解析到github。虽然有延迟,但是对于个人使用来说足够了。