zeblog我的极简博客系统

Table of Contents

以前用过hugo、hexo、jkelly这些比较流行的网页博客框架,但配置上多多少少都会出现一些问题,总是有很多不爽的地方,后面还是老老实实用了第三方的网站。

后来选了medium作为自己的写作平台,因为它的黑白极简的网页风格我挺喜欢,所以断断续续也用了几年。但是它的文本编辑,对于后来习惯使用vim和emacs这种编辑器的我来说总是非常不习惯。我索性就开始在本地用emacs写好再上传到medium,就这样用这种方式一直用到了现在。

但是这种本地编写再复制到平台的方式,总有一种使用上的割裂感。在很早的时候就有想过迁移到独立站点的想法,不过一开始是准备学一下怎么使用medium的api,把本地的文件内容直接用按一下快捷键通过网络接口的方式发布到平台上。

但是后来想了一下,既然都建立独立站了,索性网页的风格也自己定制好了。幸好在那段时间里,我有意无意地积累了不少emacs上写博客相关的函数,最后整合一下修改修改就是现在这个叫 zeblog 博客项目。

构建流程

简单说一下这个项目的构建博客流程,其实非常简单。我先创建一个 index.org 文件,里面的内容就是一列post name,每一行post就是一篇博客。然后再手写一个 index.html.tmpl 的模板文件,要发布的时候将标记好的post全部用emacs org自带的 org-html-export-to-html 功能导出成一个个html文件。然后再将发布的post name列表结合index.html.tmpl模板,格式化生成一个index.html就完成了,这就是全部的构建流程。

.
├── index.html
├── post.files
│   └── z.jpeg
└── post.html
  • index.html:用纯手工编写的index.html.tmpl生成,包含所有文章的链接。除了几个必要的html element和css style,整体大小只有几KB。
  • post.html:用emacs的org-mode编写后导出几KB的html。
  • post.files:作为post附带的图像和附件存储目录。删除文章时也只需要以rm post.files/* 的方式删除文章所有的数据,这样就可以很方便通过命令行来管理文章附带信息。

使用上也非常简单,先设置好你要保存博客的路径地址,然后输入一些你的个人信息,就创建好了博客项目地址。

(require 'zeblog)
(zeblog-init ./blog)

Enter author: [author name]
Enter email: [email address]
Enter publish url: [publish url]
Enter publish rss title: [rss title]

然后用一些快捷键,比如按下 i 键就创建了一篇博客就可以开始编辑了。编辑好之后,用 m 键标记好要发布的文章们,再按下大写的 P 键这个快捷键就publish所有博客们了。后续你就可以随意用scp或者rsync这些工具,把publish之后的文件们上传到自己的服务器上了。如果要在预览生成的效果,可以按下 B 键就会在浏览器里打开indext.html,这就是一个简单的写作发布流程。

- i: Create a new post after the current post.
- I: Create a new post before the current post.
- c: Create and edit a new post after the current post.
- C: Create and edit a new post before the current post.
- d: Delete current post.
- r: Rename current post.
- <return>: Open current post in another window.
- S-<return>: Open current post.
- n, j: Move to next post.
- p, k: Move to previous post.
- M-<up>, M-<down>, K, J: Move current blog post up or down in the index.
- m: Mark current post.
- M: Unmark current post.
- P: Publish all posts.
- b: Browse current post.

之后只需再配合一台server和公网域名就可以发布自己的博客了,或者使用github pages之类的page host服务这种更方便快捷的方式。但是在这里我再推荐一种更加自由的方式——public access unix(*nix)。这是一种在公网上提供免费unix shell访问的服务。和常见的私人server不同,这些免费的shell account是很多人共用一台机器。虽然账号受到容量、权限、 网络、程序方面的限制,但是只要遵守机器上的一些规范,保持良好的公共秩序,就可以和私人服务器一样使用。

使用效果