@Lenciel

Blog with Octopress and Github pages

不知不觉,写 blog 好像从有电脑的人都要干的事情变成很小众的活动了。除了人到了一定年纪都会不愿意开口讲话之外,本座觉得还有个很大的原因就是:要找一个靠谱的 blog 服务商是非常麻烦的。岂止是是 blog 服务商,在天朝使用大多数 web 服务都很吊诡地只有两个选择:

  • 没有被墙但很糟的;
  • 很不错但被墙了的;

所以虽然知道Github可以免费 host 任何静态页面很久了,眼看着Octopress也日益成熟,但一直都下定决心去试:谁知道哪天 Github 又被墙了呢?

不过,在最近自己的职业生涯发生了不小的变化,在可预见的未来,肯定要做很多跟 code 有关的笔记。现在的blog系统是 wordpress,虽然非常好用,但是比起 markdown 来说,写起 code 来速度就差太多了。所以今天下定决心试了一把 Octopress+Github Pages,效果非常满意,特别记录一下过程,像大家做个推荐。

Jekyll&Octopress

Octopress是在Jekyll基础上进行的开发。Jekyll作为 Ruby 开发的静态页面 blog 系统,吸引本座的地方在于:

  • 静态页面:由于 Jekyll 生成的都是静态页面,意味着这些页面可以在任何地方被 host,比如 Github Pages,Google Drive 甚至是 Dropbox 都可以作为选择(当然它们也基本是被墙的)。
  • Markdown:Jekyll 的日志因为是用 Markdown 写的,相比传统的 Blog 系统如 Wordpress 而言,一方面在写的时候可以用你顺手的编辑器,另一方面储存和版本管理也方便得多。
  • 代码插入方便美观:Octopress 对日志中嵌入代码提供了各种方便

Mac下的安装设置过程

###Xcode###

  • 升级 Xcode
  • 启动 Xcode,在 Preferences 里面选择下载
  • 安装”Command Line Tools”

###Homebrew###

brew update
brew outdated|xargs brew install
brew tap homebrew/dupes
brew install apple-gcc42 git
brew upgrade

###rbenv###

首先如果你本来是用 rvm,需要删除:

rvm implode

然后安装 rbenv 以及 Ruby1.9.3-p194:

brew install rbenv
brew install ruby-build
eval "$(rbenv init -)"
rbenv install 1.9.3-p194
rbenv global 1.9.3-p194

安装完毕之后需要在你的环境变量中做一些设置,比如本座用的是 oh-my-zsh,就需要在~/.zshrc里面加上:

export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"
# required for https://github.com/imathis/octopress/issues/144
export LC_CTYPE=en_US.UTF-8
export LANG=en_US.UTF-8

注意在环境变量设置完毕之后,最好把$PATH打出来看看,确保没有其他版本的 Ruby 被启用了,特别要注意/Users/***/.gem/ruby/***/bin这样的路径。

安装Octopress

首选在 Github 上创建一个 repo 来放 blog,命名规则是 username.github.com(比如本座的就是 lenciel.github.com)。

然后在本地建立一个 repo 把 octopress 弄下来:

git clone git://github.com/imathis/octopress.git lenciel.github.com
cd lenciel.github.com
ruby --version # should read ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-darwin12.2.0]
gem install bundler
rbenv rehash

然后部署到刚才申请的 repo 上面去。虽然Github Pages自己有个废柴说明页面,但是看完之后一般你是不知道如何算是部署成功的。好在 Octopress 已经内建了交互式的配置和部署的命令:

rake setup_github_pages
# Example repo url: git@github.com:lenciel/lenciel.github.com
rake install
rake generate && rake deploy

然后你需要调整一下.git/config文件把自己的项目设置成新的 origin:

[core]
  repositoryformatversion = 0
  filemode = true
  bare = false
  logallrefupdates = true
  ignorecase = true
[remote "origin"]
  fetch = +refs/heads/*:refs/remotes/origin/*
  url = git@github.com:lenciel/lenciel.github.com
[remote "octopress"]
  url = git://github.com/imathis/octopress.git
  fetch = +refs/heads/*:refs/remotes/octopress/*
[branch "master"]
  remote = origin
  merge = refs/heads/master

这样一来,你就即可以从octopress/master取到更新,又可以往origin/master去 push 自己最新的日志了。

使用Octopress

###新建文章###

rake new_post\["Blog with Octopress and Github Pages"\]

这里要注意使用 zsh 的时候,对[]要转义成\[\]不然会报错。

###编辑文章###

subl source/_posts/2013-03-10-blog-with-octopress-and-github-pages.markdown

subl 是本座在 mac 上使用的编辑器Sublime Text 2的命令行命令,它的 markdown 插件Markdown EditingOmniMarkupPreview非常好用。

####Markdown Editing####

Markdown Editing对语法高亮,粘贴超链接,样式化,加 footnote 等都做了很好的支持:

Don't touch me

####OmniMarkupPreview####

OmniMarkupPreview 支持Cmd+Alt+O在你指定的浏览器里面预览并且动态刷新你正在编辑的 Markup 文档。这样你就可以不用不停的rake preview了。

###更多###

欢迎留言