Hexo & My Blog

标题实际上应该是“为何我要选择 Hexo 搭建博客”,不过尚未验证 title 字段对中文支持的如何,所以暂时先放个英文标题吧。。

为何选择 Hexo

言归正传,说说为什么选择 Hexo。
其实也很简单,搭建 Blog 纯粹是因为买了个域名,不想放在那浪费,但又不想再花钱买主机空间了,所以就想利用 Github Pages 搭建一个静态博客。
再因为基于 Github Pages 搭建静态博客的方案也没多少可选项。随手搜了一下 “Github Pages” + “Blog” 的关键字就冒出来很多 Hexo 的文章,而且又支持 Markdown 语法(这很关键),所以就自然而然咯。
可能是因为基于 Nodejs,使用起来相对方便,命令也比传统的 Jykell 少,所以最近就比较火吧。
说起 Jykell,我之前貌似也用过,不过已经完全忘光光了。。所以也不存在学习成本的问题。。

为什么看重 Markdown

为什么说 Markdown 很关键呢?这就要多扯几句了。
接触 Markdown 也有不少年头了,在部门里也试图过推广,还在自建的 redmine 里强行开启了 Markdown 模式。然并卵,公司官方都是用 MS Office 那一套,同事们也大多不愿意花费时间在这种并不能提高工作效率的事情上,所以基本上没有人在好好的使用。
那么我看重 Markdown 什么呢?

  1. 可读性
    虽然加了语法 tag,但仍然是纯文本。如果是 Word 文档,如果没有装 Office 就没法打开,而 Markdown 即使不输出为 HTML 或 PDF 格式,用记事本一样可以阅读。
    并且 Markdown 的语法标签还没有到干扰阅读的程度。这里有个反例就是 HTML。纯粹表现文本的 HTML 使用的标签也并不比 Markdown 多,但直接阅读源码实在是辣眼睛。。
  2. 轻量
    语法不多,但是够用。用得最多也就是标题、列表,还有对于程序员来说非常好用的代码块,在实现的比较好的 Markdown 渲染器上,还可以实现语法高亮。

当然,Markdown 也存在缺点,而且也很明显。

  1. 学习成本
    虽然我觉得不高,但足以挡住一批 Word 党了。。(还是要深深的怨念一下)
  2. 缺少统一标准
    这个可能是 Markdown 最为致命的一个缺点。虽然语法不多,但却没有一个统一规范和标准。各家 Markdown 编辑器几乎都有自己的方言,有的还互相冲突。。比如同是表达粗体,某些编辑器用**,有些却用__。。
  3. 无法制表
    对我来说表格也算是个比较常用的格式,至少比 LaTex 实用一万多倍。但是原生 Markdown 却不支持。。好在我买的 MWeb 支持,但这又涉及到上一个问题:各家编辑器都有方言。。

如何搭建静态 Blog

那么如何使用 Hexo 在 Github Pages 上搭建一个静态 Blog 呢。
其实本来不打算写,因为网上相关教程已经够多了,不过趁着刚刚搭建好 Blog 的兴奋劲,总要写点什么,那么就简单总结一下这个 Blog 的搭建过程吧。。

准备工作

我用的是 Mac,使用自带的 Shell 界面,很多事情就好办很多

  • 首先你需要安装 Nodejs 和 npm,因为 Hexo 是基于 Nodejs 开发的。我本地安装了 Homebrew,所以直接运行下面的命令就可以了。

    1
    2
    brew install nodejs
    brew install npm
  • 然后安装 Hexo,同样一行命令搞定。

    1
    npm install -g hexo

构建静态博客

  • 首先需要一个目录,这个目录中初始化 Hexo 的环境,所有的博客内容都将放在这个目录中

    1
    2
    cd <blog directory>
    hexo init
  • 等待命令执行完毕之后,其实静态 Blog 就已经生成好了,此时通过以下命令就可以操作你的 Blog

    • 新建一篇博文

      1
      hexo new post "blog title"
    • 修改了配置文件,或者新写了 Blog 之后,用这个命令重新生成 Blog 的静态内容

      1
      hexo g
    • 启动一个内建的 HTTP Server,这样就可以通过 http://localhost:4000/ 预览 Blog 了

      1
      hexo s
  • 当然,我们还需要自定义一下 Blog,否则跟别人的都长成一样多没意思

    • _config.xml:可以修改 Blog 的名字、作者、URL 格式等等
    • 主题:在 https://hexo.io/themes 选好了之后,将对应主题用 git clone 到 themes 文件夹中,然后修改_config.xml中的theme参数即可
    • 其它:通过插件还可以生成 RSS Feed,以及一些其他功能,由于天色已晚,暂时没有再折腾了,留待日后再说。。

发布

这时候就需要一个 Github 账号了。
在 Github 中新建一个 Repository,注意名字需要叫xxxx.github.io,这样生成出来的 Github Pages 页面才会是 https://xxxx.github.io 这样的域名。不知道这是什么规则,也没有细查 Github Pages 的帮助了。不过我第一次是弄错了,直接建了个 Repository 就叫 blog,结果生成出来的域名是 https://github.com/username/blog
之后要将 Hexo 生成的内容部署到 Github Pages 上,实际上就是把 hexo g 生成出来的 public 文件夹 push 到 xxxx.github.io 这个仓库里。
不过 Hexo 自己也提供了一个插件,就使得发布过程变得简单了许多。

  • 安装 hexo-deployer-git,又是一条命令的事

    1
    npm install hexo-deployer-git --save
  • 修改_config.xml,添加如下内容

    1
    2
    3
    4
    deploy:
    type: git
    repo: git@github.com:username/repository.git
    branch: master
  • 如果没有配置过 ssh 访问 github 的话,需要用 ssh-keygen 生成一对 RSA 密钥,并将公钥内容添加到 Github 的 Settings 里。这里就不赘述了。

  • 执行 hexo d 即可完成部署

域名绑定

这一节实际上跟 Hexo 就没什么关系了。Github Pages 本身对于域名绑定就支持的很好。配置起来也相当容易。

Namecheap

我的域名是在 Namecheap.com 上买的,在 Namecheap 的域名管理页面,选择「Advanced DNS」,添加一个「CNAME Record」。
然后在Host里填上想要绑定的二级域名,比如我填的就是blog;在value里填 Github Pages 生成的 xxx.github.io 即可。

Github Pages

Github 这边的配置就更加简单了。在 Repository 的根目录下新建一个名为CNAME的纯文本文件,文件内容是独立域名全称,比如blog.ulenium.com
同时,在 Repository 的 Settings 页面里,也有个Custom domain的设置项。在这里填入自己的独立域名也可以进行绑定。(实际上就是 Github 自动帮你添加一个 CNAME 文件)
不过需要注意的一点是,由于 Hexo deploy 的时候是直接 push 整个目录的,所以这个 CNAME 最好放到本地 Hexo 生成的source目录中。否则每次使用hexo d部署,就会把 Repository 里的 CNAME 文件给删掉。。

结语

以上就是我使用 Hexo + Github Pages 搭建静态博客的整个过程。夜深了,睡觉去。😂