首页 > 技术 > 技巧经验 > Hexo多repositories部署及DNS分流
2016
11-14

Hexo多repositories部署及DNS分流

通过Hexo+Github的方式将Blog搭建在Github上虽然既省钱又方便,但是有个缺点,就是从国内访问有点慢,如果Github被墙了Blog就无法访问了。本篇文章讲的就是如何将Hexo同时部署在Github,coding(原名Gitcafe)等多个代码托管平台上并开启各自的page服务,再通过DNSPod分流访问的方法。

多repositories部署

1. 安装

1
hexo-deployer-git

1
npm install hexo-deployer-git –save

2. 在根目录下的配置文件

1
_config.yml

中添加deploy配置

deploy配置是部署的基础,在deploy配置中,用户需填上部署服务器的类型,仓库名称,分支名等信息。一个正确的部署配置中至少要有

1
type

参数。
标准格式:

1
2
3
4
5
deploy:
type: git
repo: <repository url>
branch: [branch]
message: [message]
参数 描述
repo 库(Repository)地址
branch 分支名称。如果您使用的是 GitHub 或 GitCafe 的话,程序会尝试自动检测
message 自定义提交信息 (默认为 Site updated: {{ now(’YYYY-MM-DD HH:mm:ss’) }})

如果同时使用多个deployer,则格式为:

1
2
3
4
5
deploy:
- type: git
repo:
- type: heroku
repo:

不过以上格式有点臃肿,看了其他博主的配置方法,这种格式比较简洁:

1
2
3
4
5
deploy:
- type: git
repo: <repository url>,[branch]
- type: git
repo: <repository url>,[branch]

以下是本人的配置:

1
2
3
4
5
deploy:
- type: git
repo: git@github.com:xyzardq/xyzardq.github.io.git,master
- type: git
repo: git@git.coding.net:xyzardq/xyzardq.git,master

其中,repositories(仓库)的地址有两种形式:
第一种是https,类似

1
https://github.com/xyzardq/xyzardq.github.io.git

第二种是SSH,类似

1
git@github.com:xyzardq/xyzardq.github.io.git

这两种仓库地址有什么区别呢?https是在部署时直接通过https协议push到对应的repositories,所以在push的时候需要输入仓库所对应的代码托管平台的账号密码。而SSH是在部署时用云端的公匙解锁本地的私匙,如果对应就直接push到对应的repositories,从而不用输入账户密码。本人比较推荐用SSH,毕竟不用输入密码比较方便。

两种repositories地址的使用方法

Github的repositories地址提取位置在当前仓库的菜单栏右侧
Hexo多repositories部署及DNS分流 - 第1张  | Qlog
Coding的repositories地址提取位置在当前仓库的左下角
Hexo多repositories部署及DNS分流 - 第2张  | Qlog

https地址的使用

https地址的使用比较简单,直接把对应的https地址填入repo中然后在部署时输入账户密码即可

SSH地址的使用

SSH地址需要配置SSH key,将公匙上传到云端后方可使用

  1. 配置SSH key
    git新建SSHkey并添加到代码托管平台
  2. 将对应的SSH地址填入repo中即可

3. 部署到云端

1
Hexo deploy
参数 描述
-g 部署前先搭建
-m “commit” 添加commit

DNS分流

现在,我们已经把Blog部署到了两个以上的平台上,那么,怎样才能根据访客不同的线路类型解析到不同的page上呢?这时就需要域名的DNS解析分流了。据我所知,目前DNSPod和cloudxds都支持DNS分流。DNSPod的免费版就支持DNS解析分流,但是缺点是免费版显性转址需要网站正常代理满30天….30天过去黄花菜都凉了,不过CNAME不受此限制。cloudxds的免费版号称DNSPod的收费版,但是缺点是没备案的域名用不了…所以如果是没备案的域名只能使用DNSPod了。下面以DNSpod为例。

注册DNSPod

DNSPod

添加CNAME记录

  1. 添加要解析的域名
    ps:填写的域名不要带www前缀
  2. 添加CNAME记录
    由于我们要进行DNS分流解析,所以一般来说需要添加两条以上的CNAME记录,下面以分为国外和国内两条线路为例:
    Hexo多repositories部署及DNS分流 - 第3张  | Qlog
    ps:除了国外和国内,DNSPod还提供电信移动联通等运营商和谷歌百度等搜索引擎的线路提供

    修改NS记录

    什么是NS记录?

    NS记录(name server)即域名服务器记录,用于指定该域名由哪个 DNS 服务器进行域名解析。注册域名时,总会有默认的 NS 记录。

ps:如果是在DNSPod注册的域名,请跳过此步。

  1. 记下DNSPod的域名服务器
    DNSPod的域名服务器存储在控制台的DNS记录中,默认为

    f1g1ns1.dnspod.net
    f1g1ns2.dnspod.net

  2. 修改所用域名注册商的域名服务器
    登录所用域名的域名注册商,进入DNS管理,将域名服务器(有的注册商为DNS记录中的NS记录)修改为DNSPod的域名服务器
  3. 测试DNS解析是否生效
    打开Dns检测|Dns查询- 站长工具,输入你的域名,选择CNAME类型,检测。如果国内国外的响应IP分别为你设置的两个记录值,则DNS分流设置成功

参考资料

同时将博客部署在Github和Gitcafe上,并通过DNSPOD分流
使用 DNSPod 解决 GoDaddy 域名解析不稳定的问题

最后编辑:
作者:xyzardq
这个家伙有点懒,什么都没有写

留下一个回复

你的email不会被公开。