博客静态化工作

文章目录

很早以前就想把博客转换为静态站点。现在,我终于下决心来做这件事了。

为了这件值得纪念的事,我必须要写一点东西。

不得不说的历史

如果从 2005年4月 开始算起, zrong's blog 已经存在了将近10年的时间。但事实上,我在2003年就开始写博客了。最早用的博客系统是基于 ASP 的 oblog 系统。由于当时不太注重网络安全(其实是菜鸟啥都不懂),我的第一个博客被黑掉,然后我转投了 Wordpress ,没想到这一写就是10年。

2011年6月11日,我开始使用 Markdown 写博客,文章会直接提交到 Github 上。然后再手动粘贴到 Wordpress 后台,使用 Markdown On Save 插件来渲染博客内容。

之前的文章使用的是 HTML 格式,我使用 Pandoc 将它们全部转换成了 Markdown 格式。

到现在,博客上已经有了700多篇文章,大部分是原创,也有一部分是翻译和转载的。最近几年,基本没有转载过文章了。

目前,我的博客跑在 阿里云主机 上,用 lighttpd 做服务器,并使用了 WP Super Cache 扩展。

静态化的原因

说起来就简单了,就是下面几条。

  1. 不满 Wordpress 的臃肿;
  2. 一直不太喜欢 PHP;
  3. 希望访问起来更快;
  4. 希望维护起来更直接;
  5. 希望能使用版本库管理。

生成器选择

选择了 Python 平台后,生成器选择就是要纠结的问题了。

这里有一个列表可供参考:Static Site Generators

最后在 Choosing a new python based blog engine 的影响下,我暂时选择了 pelican 作为我的生成器工具。

后续工作

转换到 pelican 有许多问题要解决,包括但不限于:

  1. tag 和 category 的映射。这个我已经从 wp 中把它们提出成为列表了,但 pelican 不支持一篇博客有多个 category 。而我的文章中有不少是这样的。目前我批量把这些文章找了出来,然后人肉一个个判断应该属于哪个 category。
  2. Wordpress 中的附件和文章需要进行一一对应。我需要将把所有的附件地址都放在一个文件中,这样方便把附件放到 CDN 中,使其可以不占主站流量。毕竟我的主机带宽只有 1M。这需要写个插件处理。
  3. 写了10年 Wordpress ,我不可避免地使用了一些插件,例如 wpdownload、jwplayer、kmlflashembed 等等,这些插件特有的标签,都要进行转换。所以也要写几个 pelican 插件来处理。
  4. comment 功能,我打算用搜狐的畅言,导入不是问题,但是使用第三方插件系统就要考虑评论回调的问题,这需要写个评论插件,仅供回调用。
  5. 还需要一个 pageview 插件……

No Zuo No Die

前两天手贱,把 Markdown On Save 换成了 Markdown On Save Improved ,这一换,就导致了双引号转义出现问题。目前,博客中大部分文章中的超链接都由于这次手贱变得不能访问。

恢复数据库是不现实的,我准备化悲痛为力量,努力加快转换的工作。

WPCMD

上面提到的转换工作不是一天能完成的,尤其是对于我这种 python 菜鸟来说,许多东西都要一边学习一边开发。

我基于 python-wordpress-xmlrpc 写了一个工具用来进行这段时间的博客撰写工作。有了这个工具,我不必再苦逼地把 Markdown 源码粘贴到 Wordpress 后台了。同时,在这个工具的维护过程中,我也可以为 Pelican 的插件开发积累经验。

这个工具暂时命名为 wpcmd ,它的作用是将 Markdown 格式的文章转换成为 HTML 格式,然后通过 Wordpress 提供的 XML-RPC 接口发布到 Wordpress 博客。大部分博客的常用操作都可以使用这个工具在命令行上完成,我终于不必再面对 Wordpress 的后台了。