Chouqin's Blog

A blog for hackers.

把博客迁到Octopress

折腾了一个下午,终于把博客迁到到了Octopress。 迁移的原因主要有两点:

  • 喜欢Octopress整体的风格,包括它的响应式设计, 还有特别好看的solarized的语法高亮。

  • 以前在jekyll上写博客,在github上面开了两个库, 原因在于Github Pages上不允许运行ruby脚本, 这样很多功能包括分页就都不能做了。为了完成分页的目的, 我在一个库里保存博客的源代码,使用jekyll来生成静态页面, 然后另一个库也就是chouqin.github.io就完全是静态页面, 把它发布到Github Pages上去。Octopress也是这样, 只不过它省去了我的麻烦,要发布到Github Pages, 只要一条rake deploy就够了,非常方便。

来说一下具体的迁移过程吧。

基础博客搭建

其实完全是照着Octopress的官方文档一步步安装过来的, 官方博客已经写得很清楚了。Ruby管理使用的是rvm

出现了一个问题是rake安装的是10.1.0的版本,跟Gemfile对应的不一致, 直接把Gemfile里的那行改为gem 'rake', '~> 10.1.0'

修改配置

首先是按照文档修改了一些_conf.yml配置:

  • 把使用的markdown改为kramdown
  • 启用pygments来进行语法高亮
  • Aside Bar只显示最近的Post和Github。
  • 配置了disqus_short_name

具体的配置可以查看我的github

使用MathJax

由于使用的是kramdown,它的语法包含数学,为了在页面上展示数学公式, 在source/_includes/head.html上加入以下的内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<!-- mathjax config similar to math.stackexchange -->

<script type="text/x-mathjax-config">
  MathJax.Hub.Config({
    tex2jax: {
      inlineMath: [ ['$','$'], ["\\(","\\)"] ],
      processEscapes: true
    }
  });
</script>

<script type="text/x-mathjax-config">
    MathJax.Hub.Config({
      tex2jax: {
	skipTags: ['script', 'noscript', 'style', 'textarea', 'pre', 'code']
      }
    });
</script>

<script type="text/x-mathjax-config">
    MathJax.Hub.Queue(function() {
	var all = MathJax.Hub.getAllJax(), i;
	for(i=0; i < all.length; i += 1) {
	    all[i].SourceElement().parentNode.className += ' has-jax';
	}
    });
</script>

<script type="text/javascript"
   src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML">
</script>

迁移原来的博文

原来的博客是基于jekyll的,对于每一篇博客,修改这几个地方即可:

  • 删除掉前面的Included file 'JB/setup' not found in _includes directory
  • 在配置上加入comments: true

发布到七牛

因为生成的是静态页面,所以也可以发布到七牛来加速访问。 在部署之前,你需要先注册成为七牛用户, 然后获取AccessKey 和 SecretKey

然后安装七牛的qrsync

octopress目录下创建qiniu.conf,写入以下内容:

1
2
3
4
5
6
7
8
{
    "access_key": "Please apply your access key here",
    "secret_key": "Dont send your secret key to anyone",
    "bucket": "Bucket name on qiniu resource storage",
    "sync_dir": "_deploy",
    "async_ops": "",
    "debug_level": 1
}

最后执行qrsync qiniu.conf,就能部署到七牛了。

Comments