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. 指中國大陸。 ↩︎ ↩︎