将博客迁移至hugo
搭建
最近我用的linode发布了新的套餐,里面包含了每月$5的最便宜的配置,因此将套餐换成这个,节约一些资金,毕竟自己的VPS用的服务也不多,不需要很强的性能。而为了更节省系统资源,准备将wordpress搭的博客迁移到了hugo。
关于使用hugo的优点介绍和搭建方法,它的官方上也有很多文章。而我选择用hugo,主要有以下原因:
- 部署简单
- 网站访问速度快
- Go写的,修改容易
- 文档为Markdown格式
- 离线编写,实时查看效果
- 很多现有主题选择,且修改容易
- 静态网站,不用数据库和apache等大软件
搭建的过程挺简单的,基本步骤如下:
$ hugo new site <site-name>
: 在同目录下创建一个站点。$ hugo new post/<post-name.md>
: 创建一个新文章,写入一些示例文字。$ mkdir themes && cd themes && git clone <theme-name-git>
: 添加一个主题。$ cd .. && $ hugo server -t <theme-name> -w --buildDrafts
: 启动服务。
在服务启动之后,默认配置下,就可以在http://localhost:1313
里看到了。
主题
hugo已经有很多主题了,在这里可以看到。我选的主题是mainroad,不过看了其他一些主题之后,觉得有一些不满意的地方,于是fork出来,自己做了一些修改:
- 在文章列表视图中,每个文章summary后添加readmore。
- 在单个文章视图中,将标签从底部移到顶部。
- 加入代码高亮。
- 在sidebar中加入RSS、Twitter和Github。
- 调整
<code>
的样式,包括背景色、round corner。 - 加入favicon。
可以通过以下命令添加到hugo中:
git clone https://github.com/choueric/mainroad
中文换行问题
在用hugo渲染Markdown的过程中发现,一个段落中行被浏览器显示之后,换行符被替换成了空格。这样的问题在网上也有很多讨论,例如:
对hugo来说,我觉得比较好的方法还是在将Markdown转换为HTML时,将同一个段落内的行合并成一行。hugo使用的转换引擎blackfriday提供了Extension,用户可以通过设置不同的Extension Options来调整引擎转换的行为。
我添加了一个JOIN_LINES
的Extension。当文章的front matter中设置了该Extension,如下所示:
[blackfriday]
extensions = ["joinLines"]
那么就会进行合并。虽然提了Pull request,不过编译之后的版本可以从这里下载。
Update 2017-06-28:
在blackfriday合并上面的PR之后,我又提交了一个Pull request给Hugo,以便该特性能够在Hugo中使用,目前该PR也被合并 :)
总结
最后,将整个hugo的目录放到Github上作为一个reposity,然后加上一个Makefile和一些脚本,让部署和发布更自动一些。然后服务器上添加一个cron任务,每5分钟pull一下,这样就可以定时更新网站了^_^
。
不过相比之前使用Wordpress比,还有一些其他虽然不是必须的功能,后续有空再实现: