前言

一直想通过写博客对自己学习过的技术进行记录、总结,一方面是对自己的知识体系进行梳理,另一方面则是为了在自己以后可能用到但忘得差不多时能够快速地重新熟悉起来,毕竟看自己写的东西总是更容易懂。国内也有不错的博客平台,像老牌的CSDN,或者新晋的简书,也曾申请过账号,但都没有写作的欲望,多是因遇到某些问题而不得不去请教作者。

在不断接触私人的博客网站后,觉得能这样做的人挺厉害的,就不禁地自己也想试试,恰好同事有过这样的经验,几个月前看过他的搭建过程记录后自己一直想实践,结果活生生地拖到了现在终于算是初步建好了。

虽然通过学习他的经验建好了,但我在搭建的过程中还是碰到了一些不一样的问题,所以有此篇博客,也当做自己的一个开始。

本人强烈推荐按照官方文档的步骤进行搭建Hexo,页面右上角可选择语言,有些中文翻译个人觉得不太准确,所以最好还是参照英文原文。本文后面的内容只有部分描述Hexo的搭建,如果您阅读后有任何不适请随时对照官方文档

准备

我所使用的系统环境是macOS Sierra(10.12),需预先安装以下两个软件:

  1. Node.js
  2. Git

其中Git最好通过Xcode安装,安装Xcode的Command Line Tools后Git就准备OK了。

安装

一句话:

1
$ npm install -g hexo-cli

但我在安装时看到警告要求user/local/文件夹的权限,所以后面用:

1
$ sudo npm install -g hexo-cli

再安装了一次。

创建

在一个合适的目录新建一个易于识别的文件夹,比如我在~下建了一个Blog文件夹,然后通过终端进入这个文件夹,执行下面这行命令:

1
$ hexo init

成功后会在Blog下看到这样的文件夹目录:

1
2
3
4
5
6
7
.
├── _config.yml
├── package.json
├── scaffolds
├── source
| └── _posts
└── themes

继续执行命令:

1
2
$ hexo generate
$ hexo server

然后在浏览器中输入:http://localhost:4000/可以看到一个Hollo Word的界面。

部署

Hexo支持多种部署方式,我用到的是Git。

准备

前面使用http://localhost:4000/访问的是本地服务,要想通过外网访问,还需要静态站点托管服务,现在比较出名且免费的有Github和Coding。所以首先得申请Github或者Coding的账号,国内访问全球男性交友网站Github比较慢,而Coding属于社会主义化的Github,使用哪个得看个人喜好。

Github

因为Github默认开启了Pages服务,所以只需以固定格式的名称新建一个仓库:[user_name].github.io,这是为了可以通过[user_name].github.io直接访问自己的博客,否则只能通过[user_name].github.io/[repository_name]访问。然后在Blog根目录下的_config.yml文件末尾进行修改,比如我的:

1
2
3
4
deploy:
type: git
repository: https://github.com/magicKen/magicKen.github.io.git
branch: master

Coding

新建一个与用户名(个性后缀)相同的仓库[user_name],也是为了可以通过[user_name].coding.me直接访问自己的博客,私有或者公开都没关系,只要后面开启了Pages服务,私有和公开的Pages服务开启的区别请参考Conding的Pages帮助。完成后再在Blog根目录下的_config.yml文件末尾进行修改,比如我的:

1
2
3
4
deploy:
type: git
repository: https://git.coding.net/magicken/magicken.git
branch: master

补充

如果想要同时部署到Github与Coding,_config.yml文件末尾可以这样修改:

1
2
3
4
5
6
7
8
deploy:
- type: git
repository: https://git.coding.net/magicken/magicken.git
branch: master
- type: git
repository: https://github.com/magicKen/magicKen.github.io.git
branch: master

最后执行以下命令进行部署(记得要在博客目录下):

1
$ hexo deploy

或者可以使用这个:

1
$ hexo deploy -g

它的意思是在部署之前进行generate。

绑定

我在GoDaddy上购买了自己的域名:mgken.com,我想把它绑到Coding中自己的博客仓库上,Coding的Pages帮助中说到,为了网站的SEO,建议只设置一个CName为www的到自己的[user_name].coding.me即可,然后在Coding的Pages服务开启页面添加域名绑定。但在这里碰到一个问题,用这种CName的方式添加域名绑定不加www无法访问,加了www我又觉得太麻烦了,最后通过GoDaddy的域名转址(301)实现,即将mgken.comwww.mgken.com

-完-