Emacs is a lifestyle :-)
And happy hacking emacs!

记我的博客折腾经历

分类: 博客 · 字数: 1197 · ...

我从2019年暑假初次学着搭建自己的blog网站。经历了从动态网站到静态网站,从markdown到org-mode。

第一版使用 Django+mysql 。自己从零开始查资料、写代码,最终折腾的像那么回事了。使用Django的优势很明显:动态网站拓展性高,后台管理系统,复习和学习了很多Django建站的知识。但缺点是需要和数据库打交道,并且在hack时经常会出现数据库迁移和服务器部署方面的问题。这可没少让我烦神。

第二版使用的是 jekyll+github page 。静态网站和动态网站比最大的优势就是不需要和数据库接触,只需维护每个markdown文档。Github page也免去了服务器部署的麻烦。Jekyll有丰富的主题可以选择,很轻松便可搭建漂亮的网站。但是没有让我满意的主题。之后又尝试了其他静态博客,如 Hugo , Hexo 等,同样是主题的问题。

第三版 结合orgmode和静态blog 。使用静态博客,意味着需要学习markdown,因为绝大多数的静态blog都只支持markdown渲染。Markdown自然很强大,但是作为emacser,我还是更喜欢 org mode 。于是便折腾了 使用org-mode撰写Jekyll blog 。问题是,这种方法太不优雅!

第四版尝试 完全基于org-mode 的blog系统。melpa上有很多类似的package,比较著名的有org-page,org2web等。这些我都折腾了,不满意。原因要么是主题不好看,要么是流程太复杂。

经过了这四个阶段的折腾,我开始思考自己究竟需要什么样子的博客系统?结果总结为如下几点:

  • 白色系,主题简洁耐看。这是我不喜欢很多静态博客定制主题的原因。它们虽然一眼看上去都很漂亮,但是不耐看。我认为耐看的主题是简洁但功能强大的,给人一种“麻雀虽小,五脏俱全”的感觉。
  • 博客的受众主要是自己。除了一些技术文章,我的博客记录地更多是自己的思考与折腾经历。既然不为营销宣传,不为浏览量,自然也不需要做rss,SEO这些。
  • 不设评论系统。之前在评论系统的选择和搭建上我也花了不少精力,尝试过 Qisqus、Gitalks、Livere等。Disqus需要科学上网,Gitalks仅限Github账号登陆,Livere浏览器兼容做的不好。目前我还没有找到一款完美的评论系统。于是干脆放弃评论系统,有问题邮件联系。这样也避免了没有意义的评论。
  • 流程可控,可拓展。emacs是我最喜爱的生产力工具,将blog撰写和发布的所有流程放在emacs,我很放心。并且elisp的可拓展性是毋庸置疑的。

最终,我决定自己从零开始使用org-mode内置的功能搭建blog。静态博客网站的本质就是一个 index.html 加上一堆 <blog_post_name>.html 。如果想让网站漂亮一点,再加上一个 style.css 文件。至于其余的功能,如RSS,SEO,标签,评论等本质也就是对html进行一些添加、修改和处理。我暂时不需要这些功能,后面可根据需求添加。

OrgMode的 org-publish 原生支持批量org文件导出为HTML和添加导出样式,这使得基于org-mode搭建博客成为可能。最终的折腾效果见 https://geekinney.com

更新:

  • 20191204:增加disqus评论系统,需要科学上网才能使用。
  • 20191215:增加google analysis,分析网站数据流量。
  • 20200103:实现对disqus的lazyload,提高网站访问速度。
  • 20200121:使用valine代替disqus,国内可访问。
  • 20200210:本地加载highlight.min.js和Valine.min.js并将js放在页面底部,大大提高网站访问速度。
  • 20200211:SEO优化,增加sitemap和robots.txt。
  • 20200213:增加博客暗色主题,使用localStorage存储状态,点击按钮切换主题。
  • 20200214:使用elisp自动生成博文开头辅助信息(日期,字数,分类)。
  • 20200219:使用elisp自动生成blog首页,显示摘要。
  • 20200224:将nav page页面与文章页面分开,nav page不设评论。
  • 20200228:修改博客整体样式。
  • 20200302:添加 CC BY-NC-SA 4.0 共享协议。
  • 20200314:使用valine统计文章阅读量。
  • 20200425:博客技术改版,使用自己开发的 Geekblog package 搭建。
  • 20200426:使用Google Adsense。
  • 20200507:增加侧边栏音乐播放插件。