刚用了大概俩小时把blog从wordpress迁移到了octopress。从此再也不依赖dreamhost这个杀千刀的主机供应商。
octopress是一个用Jekyll来生成静态页面的部落格系统。好处多多,列举若干如下:
- 不需要用一套完整的LAMP就可以用:再也不用配数据库了。
- 可以搭在heroku或者github上面。这真是要多爽有多爽。二者都有免费帐户,支持custom domain name,支持git。heroku上还有若干好用的addons,虽然大多都收费,但是其免费版本对于部落格来说绰绰有余了。
- HTML5, mobile friendly。随机送一套很好的主题,当然我还是给改成原来部落格那样的了。
- 自己折腾起来非常方便。装个POW, 本地调试几乎是labor free的(不过还是要自己rake generate…我基本上是用rake preview+rake watch来调试)。对我来说,折腾这个比折腾wordpress不知道方便了多少。
当然,事情都有两面。不好的地方呢:
- 必须得会点编程。最最起码,哪怕你有个计算机系的凯子,也得自己git push,所以不是girl friendly。
- 得用markdown,相信大部分少女是不会来学习这堪称史上最简单的格式化语言的。
你们这些女人,不动脑筋,不爱学习,迟早会被社会抛弃,过两年只能在家生孩子。 – K. Yang
正如作者所说,这玩意儿是a blog framework for hackers。对hacker们的福音是,你装octopress以后,要是有人来让你帮忙搞wordpress,你就说”wordpress?不会,没用过”。要是她非要你也给她装个octopress,你就说“会markdown么?会git么?不会?不会装个屁octopress。”。最后条条大路都给她们指向新浪博客。你看,省多少事情。
废话不多说,简单说说咋从wordpress迁移过来。以下是基于heroku的,github也可以,请自己琢磨。 客户端操作部分是*nix的,win用户请继续用新浪博客。
heroku
- 到http://heroku.com申请一个免费帐户
- 按照这里一步步来: http://devcenter.heroku.com/articles/quickstart, 到第二步就可以了。
- 可以把自己的域名指过来,要装custom_domains:basic。这一步需要验证信用卡。不用自己的域名也行,但起码改个正常的好记的。关于custom domain详细请见这里。
octopress
- 按照这里一步步来: http://octopress.org/docs/setup/,到最后一步就可以了。
wordpress->octopress
- 到你的wordpress admin界面,export一下。请看这里
- 下载下面这个脚本(从网上看到的一个脚本改的,原来那个不支持中文而且太老,不支持octopress 2.0),Jekyll本身是有一个converter的,不过太复杂了。还是这种傻瓜式的比较好用。
converter.rb (convert.rb) download 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 32 33 34 35 36 37 38 39 40 41 42 43 44 45
require 'fileutils' require 'date' require 'yaml' require 'rexml/document' require "stringex" include REXML doc = Document.new File.new(ARGV[0]) FileUtils.mkdir_p "posts" doc.elements.each("rss/channel/item[wp:status = 'publish' and wp:post_type = 'post']") do |e| post = e.elements slug = post['title'].text.to_url date = DateTime.parse(post['wp:post_date'].text) name = "%02d-%02d-%02d-%s.markdown" % [date.year, date.month, date.day, slug] content = post['content:encoded'].text content = content.gsub(/<code>(.?)<\/code>/, '\1') content = content.gsub(/<pre lang="(["])">(.?)<\/pre>/m<span class=”p”>, '') (1..3).each do |i| content = content.gsub(/<h#{i}>([<]*)<\/h<span class=”si”>#{i}>/, ('#'i) + ' \1') end puts "Converting: #{name}" data = { 'layout' => 'post', 'title' => post['title'].text, 'excerpt' => post['excerpt:encoded'].text, 'wordpress_id' => post['wp:post_id'].text, 'wordpress_url' => post['guid'].text }.delete_if { |k,v| v.nil? || v == ''}.to_yaml File.open("posts/#{name}", "w") do |f| f.puts data f.puts "—" f.puts content end end - 到convert.rb所在目录
1 2 | |
好了,现在就可以开始闯作了。至于怎么搞评论啊,RSS啊,请自己琢磨。再次推荐heroku,小气且懒惰的程序员的福音。