从 Tumblr 迁移到 Octopress

以前一直在用 Tumblr 作为 blog 托管,因为简单,还不用管流量、图片托管等问题,也支持自定义域名,不过最近开始满足不了我的一些需求:

  • 非 Photo 类型的文章难插入多张图片,通常都是用别的图床来放置图片,比如 Droplr;
  • CSS/JS 的处理比较郁闷。

所以就打算迁移到 GitHub + Octopress 上,虽然所有东西都是公开的。

附 Octopress 简单教程:

第一步,在 GitHub 创建一个新的 repo,将其命名为 "username.github.com","username" 是你的用户名。

第二步,创建好之后,去 admin 页面选择 "Automatic Page Generator"。

第三步,安装 Octopress:

git clone git://github.com/imathis/octopress.git octopress
cd octopress # 保证安装了 Ruby 和 rbenv/RVM,进入目录时会问你是否信任 .rvmrc,选是
gem install bundler
# rbenv 需要跑 `rbenv rehash`
bundle install
rake install
rake setup_github_pages # 填入你的 repo 地址
rake generate

一些常用的操作如下:

rake new_post["title"]:创建新的文章,title 尽量用英文吧,Mac Terminal 打中文会报错。创建的文章会用时间戳的方式,如 2012-11-02-moved-from-tumblr.markdown 保存到 source/_post 下,用任意编辑器打开即可。

rake new_page[page-name]:创建新的页面,比如个人简介什么的,会放在 source/page-name 下,默认主页是 index.markdown

rake generate:把所有文件转换并复制到 public/ 下面。rake watch 会监视文件并实时转换。

rake preview:启动一个 localhost:4000 服务器供预览。

rake deploy:如果没问题了,就用这个命令把文件提交到 GitHub。

因为这个 repo(按照上面的例子是 octopress)和你的 GitHub pages 并不是同一个 repo,所以你可以再建一个 repo,把东西提交上去,这样也方便你写草稿,还可以用 Bitbucket 的免费私有 repo。

如果执行 rake new_postrake generate 时碰到了类似 invalid byte sequence in US-ASCII (ArgumentError) 的问题,编辑一下这两个文件:

# rvm-path/gems/ruby-version/gems/jekyll-version/lib/jekyll/tags/include.rb
# 把 source = File.read(@file) 改成:
source = File.read(@file, :encoding => "utf-8")

# rvm-path/gems/ruby-version/gems/jekyll-version/lib/jekyll/convertible.rb
# 把 self.content = File.read(File.join(base, name)) 改成:
self.content = File.read(File.join(base, name), :encoding => "utf-8")

根据你的配置,把 rvm-pathruby-versionjekyll-version 改成实际的路径。一般情况,rvm-path~/.rvm/

或者在你的 .bashrc.zshrc 等文件加入以下两个变量:

export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8

这个问题是由于 Python 2.X 并没有把 Unicode 作为默认编码格式,Jekyll 也没有声明要用 Unicode 处理文件。