使用Hexo 3在github上搭建博客

闲话

博客是从去年开始写的,使用的是 wordpress 那一套,托管在淘宝空间,比较郁闷的是在淘宝买的便宜的空间一直都不稳定,并且访问的速度比较慢,时不时的空间崩了还得去和淘宝店主聊天,这次空间到期,索性就切换到 Github 上来了。在开始搭建之前也了解了一下目前主流的几个静态博客系统,主要是 jeklly, octpress, hexo 这三个,各有千秋,但发现octpress配置起来是最麻烦的,hexo最简洁,jeklly这个系统最原始。

Hexo 安装

hexo 是一款基于 Node.js 的静态博客框架,所以在安装hexo之前需要安装 Node.js,在 windows 安装 Node.js 相当简单,不赘述,安装 hexo步骤如下:

  • 下载并安装 Node.js

  • 打开命令行,运行:

    npm install -g hexo

由于该命令默认的使用是国外的镜像,安装速度慢,可以在命令后配置使用淘宝的服务器命令如下:

npm install -g cnpm --registry=http://registry.npm.taobao.org

Hexo 配置

  • 初始化,新建文件夹Blog,切换到该文件夹下,并运行: hexo init
  • 安装相关依赖: npm install 注意要安装依赖,否则在生成博客文件时会出错
  • hexo generate 生成博客文件
  • hexo server 启动服务器,访问localhost:4000即可看见结果

通过上面几步搭建本地 hexo 博客系统已经成功,下一步则是将博客部署到 github 上。

推送到github

  • 注册 github 创建 repo,将该 repo 命名为 yourusername.github.io

  • 在 hexo 文件夹下找到 _config.yml 文件,使用文本编辑器打开,主要配置项如下:

      # Hexo Configuration
      ## Docs: http://hexo.io/docs/configuration.html
      ## Source: https://github.com/hexojs/hexo/
    
      # Site 站点信息配置
      title: Academic Writing
      subtitle:
      description:
      author: Richard Wang
      language: zh-CN 中文编码
      timezone:
    
      # URL 域名配置
      ## If your site is put in a subdirectory, set url as 'http://yoursite.com/child' and root as '/child/'
      url: http://yousitename/
      root: /
      permalink: :year/:month/:day/:title/
      permalink_defaults:
    
      # Extensions
      ## Plugins: http://hexo.io/plugins/
      ## Themes: http://hexo.io/themes/
      theme: next #主题名称,可以选用主题
    
      # Deployment
      ## Docs: http://hexo.io/docs/deployment.html
      deploy: # hexo deploy信息配置,注意:在 Hexo 2中,type项填 github, 在 3 中需要改为 git, repo 选项是原来建立的地址,可以采用 https, ssh两种方式,但采用 http 方式每次 deploy 时都需要输入密码,ssh地址格式为: git@github.com:yourusername/reponame.git
        type: git
        repository: git@github.com:yourusername/reponame.git
        branch: master
  • 执行 hexo generate 命令生成

  • 执行 hexo deploy 命令发布博客

配置个性域名

  • 购买域名,域名购买建议在万网或者是 godaddy,在 godaddy 上买域名无需备案,但是现在在万网上购买备案也非常快,所以还是推荐在万网上买,价格相差不大。
  • 配置 dns 解析,万网的域名的 dns 解析配置很容易,到管理我的域名里添加条 a 记录即可。
  • 添加 CNAME 文件,这里需要提出来的一点,原本以为配置完-config.yml文件后发布即可直接映射到域名,发现没有成功。又采用了传统的方法,在 repo 根目录下添加了 CNAME 文件解析是成功了,但每次执行 hexo d 命令后,CNAME文件都被删除了,在网上搜索后发现需要将CNAME文件放在 source 目录下,这样即可。

问题

配置中间出现了许多没见过的 bug。折腾时间最久的是 github 的ssh登陆,问题描述如下:
系统环境:win7 64位,安装有git, github
症状:git bash 里面生成了id_rsa.pub,并且复制到了 github 上,ssh -T git@github.com 也显示成功,但就是在 git clone git@github.com:yourusername/reponame.git 时出现 github permission denied publickey 错误,重新生成秘钥以及各个博客上写的方法都不小包括运行 ssh-add等
解决方法:

  1. 不使用默认的秘钥文件名称,自己命名
  2. 在git bash中执行 git clone命令,同理最后再git bash中执行 hexo d 命令博客发布成功。

总结

本来配置网站应该是轻车熟路了,但还是花费了较长的时间。主要是中间碰到的问题大都通过看前人写的博客来解决,但这次遇到了比较偏门的问题,网上没有答案,对ssh了解不够,不明白基本原理,基本处于抓瞎,乱试的状态,耽误的比较久。

参考博文

[1] http://blog.csdn.net/poem_of_sunshine/article/details/29369785/
[2] http://zipperary.com/2013/05/28/hexo-guide-2/
[3] http://www.lizherui.com/pages/2013/08/17/build_blog.html