Featured image of post 迁移到 Hugo

迁移到 Hugo

果然迁移是每个 Wordpress 博客的宿命吗。

如你所见,我迁移到了 Hugo。

这里曾经跑着 Wordpress,那是在去年 7 月部署好上线的,到迁移的时候用了也有一年有余。

为什么放弃使用 Wordpress?

迁移并不是因为 Wordpress 不够优秀,相反,Wordpress 是一套非常好的 CMS:它历史悠久1、运行稳定、大而全、傻瓜式安装,这些都是我当时选择它的重要理由。2

但既然这么写小标题,想必大家都能猜到 Wordpress 也有很多驱动我迁移的缺点。

过于笨重: Wordpress 真的太重了,一大堆我不需要的功能在那里摆着。对于个人网站来说, Wordpress 显然是太多余。笨重还带来了严重的性能问题,这点也是我当时把它从香港 Azure 迁移到美国的原因——就是因为美国的服务器更便宜。不成想, Wordpress 跑在上面却依然消耗了超过预期的资源。与其消耗大量资源跑一个博客程序,还不如用这些资源跑些别的。

易受攻击: 动态网站的攻击面很大,尤其是这种用户基数大的程序,攻击的收益很高。举个例子,在我使用 Wordpress 的这一年里,几乎每天都有机器人爆破我的/xmlrpc.php。这还不算什么,即使套上 Cloudflare,相同服务器配置下,Wordpress 能承受的访问量3也不会很高。

Markdown 水土不服: 相对于原生支持 Markdown 的博客框架,Wordpress 对 Markdown 的支持可谓是非常差的,每次我以 Markdown 写好的文章在 Wordpress 上发布总要经过一些修改。不要跟我说 Wordpress 是二十多年的老软件,就可以不兼容 Markdown,只要想做,就绝对不会是现在这个样子。

主题不合我胃口: 现有的开源 Wordpress 主题,我用过的有 MDx、Hourglass Twins 和 Argon。这几个主题几乎都没有再更新或者「处于缓慢维护状态」。既然都不再维护,样式也或多或少的过时。

加载速度太慢: Cloudflare 在大陆的直连速度懂的都懂。虽然我自建前端资源 CDN 缓解了一部分问题,但基调依然是加载慢。

为什么选 Hugo?

最开始,我还没有服务器,我的博客是基于 Hexo 构建的4,之所以放弃使用 Hexo,是因为我当时想要评论功能,以及跨设备编辑文章的能力5

Hugo 没有恶心人的node_modules,生成速度比 Hexo 快得多,主题也合我胃口,而且我也学过一点 Go,所以就决定是它了。Hugo 主题不需要学 Node.js 就可以魔改,简直不要太舒服。

迁移

之前 Hexo 里写好的 Markdown 文件基本可以直接扔到./content/post/里直接用,不过 Hugo 对文章头部的 yaml 要求更规范。例如:即使只有一个categories,也必须使用列表。

永久链接这个时候肯定是对不上的,改一下permalinks.toml就可以了:

1
2
3
# Permalinks format of each content section
post = "/:year/:month/:filename"
page = "/:slug/"

还有一些文章我打草稿的时间是 n 月,发布的时候变成了 n+1 月,永久链接就变得不一样,这些文章也要一一处理。

友链没办法,只能一个一个手动搬过来,好在本来只有十几条友链,这并不是什么难事。

评论就不一样了,目前没有找到什么导出方法,只能全部丢掉,或者日后慢慢搬过来。

部署的地方?

本来想 rclone 部署在自己的服务器上,后来发现 rclone 太慢,也不能跨设备编辑文章,遂放弃。

Github Pages?免了吧,太慢了6。Vercel?主 CNAME 已经被屏蔽了,感觉随时要凉6。于是乎我就找到了 Azure Static Web App,速度还行,还免费,就它了。

然后就遇到了 CNAME 和 Apex 域冲突的问题,这个真没办法。CF 的 CNAME 拉平国内容易拉平到美国节点,只好新开了一个子域blog.l3zc.com并重定向了上去,算是解决了这个问题。

待办清单

  • SEO
  • 评论迁移
  • 图片灯箱
  • 修好 RSS feed

近况

(回忆起近况,实在有些痛苦,我暂时不太想写这一部分。现在我试着开始写,看看能不能写出来)

现在没那么痛苦,却早已忘记,或许这就是一种自我保护吧。


  1. 说得难听点就是老古董。 ↩︎

  2. 当时的我也没有想到,这些理由中的一部分竟也会成为我迁移的重要推动力。 ↩︎

  3. DDoS 的访问量也算访问量。 ↩︎

  4. 现在我还留着这个博客,https://hexo.l3zc.com。 ↩︎

  5. 当时我还不会用 Github Actions。 ↩︎

  6. 指中国大陆。 ↩︎ ↩︎