隨著Ghost的功能越來越多,它不再是一個純粹的markdown CMS了,Y Cheung猶豫了很久最終還是決定從Ghost遷出。
為什麼棄用Ghost?
升級維護困難
說實話,Y Cheung 並不是很頻繁在維護host的,備份有腳本定期執行,一般也就站點出現問題了再 ssh 登入上去看看,而ghost的升級並不如WordPress這般絲滑。四年前的Ghost 0.4.2 跨世代升級到 3.19.2 版本文章內就抱怨過了,而小版本升級也還要登入服務器操作,還不一定每次都順利。Y Cheung 不想分配那麼精力在這個事情上。
編輯器變更
現在的 Ghost 的編輯器不再是markdown語法編輯器,而是 visual editor 。這也許適應了商業化需求,但就已經不是當初的那個它了。畢竟十年前選擇ghost系統正是因為當時它是直接用markdown語法寫作的 opensource cms。如果現在的需求是一個visural editor,那還不如用wordpress、blogger等,都更簡單安裝維護,還有大量的社區、工具支持。
圖片處理困難
因為權限設置或別的不知名的原因,在給文章內添加圖片的時候,無法生成前台所需要的各種尺寸圖片,導致前台無法顯示圖片,需要 ssh 登入服務器手動生成,腳本是Y Cheung 自己寫的。而且 visual editor中只能新增圖片,無法選擇已上傳的圖片,在用markdown語法添加圖片也無法迅速找到那張圖片來使用。
資源開銷大
Ghost 是用 node.js 起的服務,還需數據庫,佔用服務器資源不小,而這個站只需要靜態加載頁面就好了,反正大家都是搜索過來看完需要的東西就跑的,繼續host在Y Cheung的主機上是一種資源浪費。
Cloudflare Page + Hugo 優勢
這個站原本就套了一層Cloudflare的CDN,現在Cloudflare Page可以免費host static sites,就是本站的最佳解了。而 Hugo 是用Go寫的,使用起來也很方便。
- Hugo 寫作直接是markdown文檔
- Hugo 社區活躍
- Hugo 無需數據庫
- 可以在 github上存儲內容與追踪版本變化
- 可以用 cloudflare 上自動部署
- 網站訪問速度更快
- All free
遷移步驟
- 參考官方文檔在本地安裝 Hugo。
- 在Ghost後台設置中的Labs
/ghost/settings/labs
,導出內容,獲得一個json文件。 - 將導出的json文件生成Hugo post所需的
.md
文件。 這一步Y Cheung是寫了個python腳本來轉換。另有 ghostToHugo 也是可以直接生成整個hugo站點的。 - 將圖片從備份文件中放入hugo的
static/images
文件夾內。 - 本地檢視網站,確認一切正常
- 更改RSS Feed 默認地址,編輯站點配置文件,如
/hugo.toml
:
1[outputFormats]
2[outputFormats.RSS]
3 mediatype = "application/rss"
4 baseName = "rss"
5[mediaTypes]
6[mediaTypes."application/rss"]
7 suffix = "xml"
8[params.social.rss]
9 url = "/rss"
- 根據實際情況,參考 Cloudflare Page Redirects文檔新增
static/_redirects
文件添加相關301跳轉,比如:
1# static/_redirects
2/tag/* /tags/:splat 301
- 在 github 上建立 private 項目,將本地hugo站點整個git push上去。
.gitignore
文件參考(https://www.toptal.com/developers/gitignore?templates=hugo)。 - 參考Cloudflare 文檔新增 Page site,關聯github repo,配置項目。
- 根據提示,更改域名DNS解析,增加CNNAME指向。
總結
Ghost不再是一個純粹的markdown CMS,因為它的功能越來越多,而且升級維護困難、占用服務器資源等問題也導致了Y Cheung放棄使用。相比之下,使用Cloudflare Page和Hugo可以免費托管靜態站點,並且具有許多優勢,如寫作直接使用markdown文檔、無需數據庫、可以在GitHub上存儲內容和追蹤版本變化等。歡迎大家也試試看哦~