使用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等
解决方法:
- 不使用默认的秘钥文件名称,自己命名
- 在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