最近一段时间写点儿东西的欲望越来越强,但是面对 WordPress 实在是提不起劲儿,于是开始计划将 Blog 迁移到新的平台—— Ghost

之所以选择 Ghost ,一是自己比较熟悉 Node.js ,能够完全地控制整个 Blog;二是工作上有些简单的服务器运维却力不从心,打算借此机会好好熟悉一下;三是 Ghost 这个新兴项目很有潜力,众人期待的插件功能也即将发布,将来还会有更多好玩的东西……但最重要的是:Ghost 的默认主题太好看了!

于是花了三天晚上的时间,买了每月只需 $5 的 DigitalOcean VPS,从无到有地部署、迁移,简单修改了主题,终于搞定啦。

如何搭建 Ghost 的教程实在是太多了,这里就不重复了。简单介绍一下从 WordPress 迁移到 Ghost 的方法吧。

  1. 安装 WordPress 插件 Ghost 并启用,选择「Export」。它可以将你的 WordPress 文章、页面导出为 Ghost 识别的格式。
  2. 用文本编辑器打开导出的 wp2ghost_export_*.json 文件,将文章里的图片链接批量替换为类似 /content/images/YYYY/MM/NAME.EXT 的形式。比如 http://netputer.me/wp-content/uploads/2013/08/meow.jpg 就要替换为 /content/images/2013/08/meow.jpg
  3. 访问 YOUR-GHOST-BLOG.TLD/ghost/debug/ 并通过「Import」将文章导入。
  4. 将 WordPress 目录 /wp-content/uploads/ 的所有文件全部迁移到 Ghost 目录 /content/images/ 下。至此,迁移基本完成了。
  5. 为了避免旧的文章或图片链接无法访问,还需要设置 URL 重写规则,这里以 Nginx 规则为例:
rewrite "^/\d{4}/\d{2}/([^/]+)/?(.*)$" /$1/$2 permanent;
rewrite "^/\d{4}/\d{2}/?(.*)$" /$1 permanent;
rewrite "^/\d{4}/?(.*)$" /$1 permanent;
rewrite "^/category/([^/]+)/?(.*)$" /$2 permanent;
# 根据相应的固定链接格式进行修改

rewrite "^/feed/?$" /rss/ permanent;
# 订阅了旧的 RSS 的订户依旧能够得到更新

rewrite "^/wp-content/uploads/(.*)$" /content/images/$1 permanent;
# 旧的图片链接也能够相对正常地访问

迁移过程大致如此,很多东西也是拼凑出来,很多细节需要打磨。不过,偷懒的最大借口已经没了,接下来就是写写写!