使用Octopress和Github搭建Blog

Github 对程序员来说已经越来越重要了,不仅是托管自己的开源代码(我业余时间做的小工具,自己的vim配置已经都放到了github上),针对企业用户更有一整套的解决方案,虽然没有接触过github enterprise, 但是看到一些牛人的讨论,心向往之。对个人来说,github的的Pages服务无疑更加有用。用github搭建Blog的人越来越多,网上也有很多攻略。Jekyll是一个ruby写的静态站点生成器,它的作者是github开发者之一,Github Pages 支持将Jekyll代码转换成静态站点。借助Jekyll-Bootstrap可以很方便的搭建一个基本的Blog, 中文可以参照这里。但是为了安全原因,Pages不支持第三方的Jekyll插件,所以Blog的功能受到限制。虽然基础功能已经够用,但是在折腾的几次之后,最后决定还是用更灵活的Octopress。

octopress一样是基于Jekyll的Blog框架,已经集成了很多插件,并提供了部署到Github的支持,octopress的具体介绍,查看官网。相比Jekyll-Bootstrap, 功能更加强大,可配置性更高,但是由于使用了很多第三方插件,不能使用Pages自动把markdown文件转化成网页,需要自己生成静态网页,并部署到Pages上。每次添加新的东西,都要”编译”,有人已经抱怨上百篇文章,产生网页耗时很久了,但是不管怎样,现阶段Octopress无疑是最佳选择。

创建github repository

Github Pages分为两种:一种是个人和组织的Pages, 一种是项目的Pages。它们只有细微的差别, 而用来发布Blog的是第一种。需要在Github上创建一个命名格式为username/username.github.io的repository(Pages以前使用的是username.github.com的子域名。最近因为安全原因,迁移到了新域名github.io下。以前创建的.com的repo仍然可以工作,但是Github推荐用户新建repo的时使用.io的命名), 生成的静态网页都要上传到这个repo的master分支。

由于octopress 部署Blog到Pages的时候使用ssh连接Github, 需要设置好Github账户的SSH Key,在局域网中,ssh的22端口可能被屏蔽,可以设置SSH使用HTTPS的443端口,具体步骤在这里

安装配置Octopress

Octopress的具体安装,官方文档讲的很清楚,不再累述。但是在ubuntu 12.04下按照它给出的方法安装Ruby时会有问题,解决方法请看我的另一篇博客《在ubuntu 12.04 上安装ruby》

安装成功以后,按照文档配置Octopress deploy到Github Pages。

这个过程中会创建两个branch

  1. master branch 用来发布产生静态网页(所有_deploy文件夹下的文件)
  2. source branch 用存放”源代码”(markdown文本,配置文件,插件)

发布博客:

1
2
rake generate
rake deploy

发布之后将所有”源代码”上传

1
2
3
git add .
git commit -m 'your message'
git push origin source

在一台新的电脑上维护Blog, 需要安装Octopress依赖环境,设置SSH, 并clone出一份source branche, 然后设置Github连接。

1
2
3
4
cd blog
git clone -b source git@github.com:yunfeizu/yunfeizu.github.com.git
cd yunfeizu.github.com
rake setup_github_pages

Octopress命令汇总:

  • rake new_post[‘article name’] 生成博文框架,然后修改生成的文件即可
  • rake generate 生成静态文件
  • rake watch 检测文件变化,实时生成新内容
  • rake preview 在本机4000端口生成访问内容
  • rake deploy 发布文件