回顾博客折腾之路

博客圈子里熟悉无灯的童鞋可能知道, 老灯早期玩了相当长一段时间的 WordPress. 后面又折腾过Habari(已经阵亡) 和 typecho, 后面换成了自己基于Kohana(2016年停止更新)写的博客系统,再后来又换成了自己基于Yii2框架写的博客系统. 可能是嫌弃自己写的博客系统体验太差了吧,正好给了借口可以不写博客了. 因此博客从刚开始的日更周更,变成月更,渐渐地变成了季更,年更,最后变成了长期不更了.

博客域名刚开始是ihacklog.com(停止续费,丢弃), 后面切换成80x86.io(停止续费,丢弃),而现在的域名是ttys3.net,原因很简单,不同时间,折腾的东西不同,喜好也会产生变化,因此域名命名上也会变化。

早期一起折腾WP的像万戈(现在没找到了,可能不存在了)和 木木, 比如万戈牌工具条在圈子里当时挺火的,木木则主要偏重主题方面的折腾。 我当时也是各种魔改主题和插件, 也写了一些自己的插件.

其实早就想把博客重新整一整, 但是越是对这些博客系统了解越多,选择反而更纠结了。 是用WP呢?还是用Drupal呢?或者是用基于Symfony 4框架的 bolt 呢?

重新思考

怎么选?分析一下自己的核心需求吧:

  • 支持markdown
  • 支持代码高亮
  • 支持发图片和附件

这个需求很简单啊。WP的插件系统固然非常灵活,但是官方编辑器默认是WYSIWYG(所见即所得)的. 这显然跟我的需求不太符合. 自从新版本的WordPress编辑器更换为 Gutenberg之后,我就再也没有用它的想法了.写几个文字还要一直点点点,选择这一个块是代码,是图片,还是视频?这是什么操作?当然,不能接受这个新编辑器的也不只老灯一人,很多重度使用者都采用hack方法,切换回了经典编辑器. 官方当然也知道大家的想法,弄了个插件以支持这些切换回旧编辑器的用户。但是我想说的是,官方既然已经决定了用Gutenberg,旧版编辑器彻底被干掉也只是时间的问题。WP不是一个有创新的产品,都2020年了,bitbucket都要移除hg支持了,而向WP官方插件仓库提交代码还只能使用svn。我想这也可以理解,一个生态已经好了,如果从svn换成git可能会导致很多插件失去维护,这可能是官方最担心的。

Drupal呢? 相对于WP来说,它的市场份额可能是很少的,但是相对于其它博客系统来说,它仍然算是占比较大的。Drupal的问题正好跟WP相反。相比于WP万年不变的svn, 新版本的Drupal已经在使用流行的Symfony框架和composer包管理了。但是Drupal的问题也很明显,每个大版本之间的兼容性很差,而新版本推出了,还在大量的用户因为插件依赖或技术问题无法升级或者不愿意升级到新版本。Drupal 9都快出来了,但是还有大把人在用7. 我试用了一下Drupal 8, 直接用的官方的docker镜像跑的,非常顺利。Drupal不是一个简单的CMS,而是一个框架级的CMF。 所以,我问了下自己,我写个博客真的需要用上Drupal吗?

Typecho是个非常小巧,运行效率极高的博客系统,深得一些嫌弃WP太重的用户欢心。我个人非常不喜欢它那个markdown编辑器,链接和图片等markdown语法它用的是“参考式链接的写法”,一个好好的链接,在Typecho编辑器里一添加, 变成了[标题][3]这样的玩意,然后[3]具体表示的是什么你还得去文章最底部找半天。这一点我完全无法接受。Typecho默认上传的附件无论是图片和附件,都是随机命名,没错,随机,这些文件名一旦脱离了Typecho这个系统,单看文件名,连哪张图片在前哪张在后你都搞不清楚。(我说的是系统本身的设计,并不涉及插件,事实上,只要你会代码,你改什么程序的代码不能改?)其它方面比如插件系统,主题系统它该有的都有。但是代码基本上处于无人维护的状态。最近一个公开正式发行的版本为0.9版(2013-12-12), 虽然github上目前还有些小修改,但是核心作者的精力在别的地方了,基本上不太可能有时间维护这个项目。

基于Symfony 4框架的 bolt 呢?这个博客系统的第4版还在RC阶段,不过发布应该快了。默认是WYSIWYG编辑器,但是可以通过配置切换成markdown编辑器。后台有一些奇怪的设计,我体验过后发现使用上有些不太习惯或者说难以接受。 另外bolt4不是使用了基于AR(Active Record, 比如Laravel的Eloquent)模式的东西,而是基于ORM的Doctrine, Doctrine这个块头有点大了,对于一个小博客来说.

然后呢?这些就是你不用这些系统的理由? 算是,也不算是。

我就是写几行字,我用得着架设一个PHP,还要架设一个NGINX, 然后还要架一个MySQL server么? 对于简单地写作需求来说,这些基于PHP的系统部署起来都太麻烦了,而且,部署好了还需要维护。

新的决定

最终我决定以程序员的方式来写博客,那就是

Git + markdown

Git仓库用来保存markdown文档,那么markdown怎么转换成html的博客呢? 这类静态站点生成器很多,基于node.js开发的有 hexo, 基于React的有 Gatsby, 基于Golang的有 hugo.

hexo一般前端人员比较偏爱,也正是由于它的用户的群体,它的主题和插件数量应当会相当丰富。Gatsby更灵活,相对来说上手难度更高了。hugo 是最方便的,直接下载一个可执行文件hugo就好了,没有任何依赖。

根据 Hugo 0.68.0的发布说明, Hugo现在有

  • 42462+ stars (四万以上的星星)
  • 439+ contributors (四百以上的贡献者)
  • 300+ themes (三百个以上的 主题)

然后我看了下, hexo官方主题也才300个左右.

所以,总体来说,使用Hugo的情况还算比较乐观。特别是官方发版特别勤快,bug修复及时。

好了,程序选好了,主题呢?我在逛 木木的博客时发现他那个主题特别好看。从footer找到了主题作者的github, 发现了同作者的另一款主题 terminal, 这个主题名字深得我心啊。terminalttyS3.net 这个域名是绝配啊。 虽然很想偷懒把木木那个主题直接拿来用, 但是最终还是决定用先用一下terminal吧。

根据自己的需求,对这个主题做了一些小调整,同样喜欢这个主题的可以关注一下我的fork: https://github.com/ttys3/hugo-theme-terminal/tree/ttys3

这个主题支持5各配色方案自由切换 ["orange", "blue", "red", "green", "pink"]

唯一奇怪的地方是默认居左,这在4K屏下,整个右半边都是空的。不过还好作者有提供选项调整, 设置centerTheme = true 即可,另外还有fullWidthTheme选项,我个人不是很喜欢网页弄成全屏宽,毕竟咱人的眼睛又不是鱼眼,看不了那么宽。

之前博客的内容去哪儿了?由于旧网站是部署在linode jp节点上的,现在这个node已经直接删除了,数据库和文件我进行了打包备份, 里面可能有一些东西是有用的,但是目前来说还没空整理。 现在之所以重新开始,也是想没有历史的包袱,一切从简。

好了,这篇就写到这里了,关于架设这个博客的技术细节,请看下回分解。