Ghost blog 架設經驗分享
花了一整晚,邊問 ChatGPT 邊被它害慘,從錯的 Node.js 版本、圖片無法上傳到 ghost start 開不起來,這篇文章記錄我第一次架設 Ghost Blog 遇到的所有坑與解法,給同樣想自架的人一點參考。
這是我第一次架設 Ghost blog ,過程中也是踩了一些坑,前前後後花了差不多一個晚上才完成,下面開始分享過程中遇到的問題以及解法 ~
坑.1 ChatGPT
沒錯,就是 ChatGPT... 因為 AI 太方便,現在做很多事情我都會請他直接把命令產生給我,我期待按著它給的命令一步步執行然後就完成(真的是想得美!)
首先 ChatGPT 要我在伺服器上安裝 nvm 來安裝 nodejs 18,結果就引發了第一個問題 ghost 的執行權限問題,官方的 Using nvm with local and production installs 有詳細說明,想直接避坑的話就是在伺服器上不要用 nvm 安裝 nodejs。
而且在這個步驟 ChatGPT 是要我安裝 nodejs 18,可是實際上官方已經建議要安裝 nodejs 20,雖然這不會導致安裝失敗,但這已經不是當下最好的安裝建議。
最終,我依然回到按照官方的 How to install Ghost on Ubuntu 的文件指引來完成安裝。
坑.2 DigitalOcean 的 apt install error
這次是我第一次使用 DigitalOcean ,我在伺服器 active 的時候就馬上進入伺服器執行 apt update & apt install 結果遇到這個錯誤
E: Could not get lock /var/lib/dpkg/lock-frontend
其實這是一個小問題,只是背景有 apt 在跑所以無法正常執行 apt update,遇到這個問題就先等等伺服器,過一陣子再執行 apt 命令就好。因為之前用 aws/gcp 從沒遇過這個問題,第一次看到的時候緊張了一下 😅
坑.3 避免使用名為 ghost 的 user
安裝 ghost-cli 的時候,系統 user 不要使用 root 也不要使用名為 ghost 的 user,因為這兩個 user 都會在之後使用 ghost 命令的時候系統會提示不要使用。
坑.4 安裝完 ghost 後,圖片無法上傳
終於安裝完 ghost 很開心的我馬上開始把玩了起來,結果一上傳網站封面圖就出現錯誤,出現錯誤的地方也沒有明確跟我說明錯誤原因,真的是臉都綠了 🥲 後來在新增 post 的功能裡面嘗試上傳圖片,結果一樣報錯,但這次好在系統有提到 sharp
而我隱約記得這個好像是一個 package 的名字,結果 Google 找到這篇:Unable to upload image to Ghost CMS with API error 500 and message "Internal server error, cannot upload image.
回到專案目錄把 ghost 停掉,安裝一下 sharp 再啟動 ghost 問題就解決
cd /var/www/ghost-blog
ghost stop
npm install sharp
ghost start
坑.5 ghost stop 後 ghost start 開不起來
這問題好像是發生在執行完 npm install sharp
後,我猜
是因為我執行 npm install sharp
的 user 跟執行 ghost install
的不同所導致,反正如同前面提到的,操作 ghost 命令的時候不要用名為 root 或 ghost 的 user 就對了,我就是因為過程 user 切來切去有用錯才導致這個問題,最後切到正確的使用者,在 ghost 專案目錄底下重新執行 ghost setup
後解決 ghost start
失敗的問題。
坑.6 伺服器資源太小
我一開始是打算用 1G ram 的伺服器來跑Ghost blog的,結果 ghost install
整整給我卡了 20 分鐘以上還跑不完,後來換成 2G 的伺服器就正常跑完了。
其實 DigitalOcean 的 Marketplace 也有 Ghost 的 One-Click Droplet ,理論上用這個方法是最簡單快速的,它會直接幫你指定伺服器OS以及規格,並且直接跳過安裝伺服器環境的步驟,不過這個服務不知道為什麼綁死機器規格,導致每月至少要 12美金,所以我最後還是選擇自己架設。
好啦!以上就是這是安裝 Ghost 的一些經驗分享。在這次經驗中也再次提醒自己,萬事不要太相信 ChatGPT ,雖然很多時候它的回答是可以用的,但有可能不是當前的最佳實踐,而且更糟的是它有可能給一個錯誤的方向 🥲
題外話,其實一開始我打算用 aws ec2 架設這個 blog 網站,因為我滿喜歡自架網站的,那種對伺服器有著完全的掌控感真的很好,不過算一算用 aws ec2 跑一月要40幾美金,這個價格對於一個剛起步沒什麼流量的網站真的滿不划算的 ~ 所以就選用 DigitalOcean 每月6美的方案。Ghost 官方的 How to install Ghost on Digital Ocean 有提到使用他們的連結去啟用 DigitalOcean 可以獲得免費的 $100 free credit ,有需要的人可以參考看看 ~
再次題外話,這次採用 Ghost blog 完全是因為我沒玩過 Ghost blog 系統,然後同時又被 ChatGPT 強力推薦,所以就跳進來了 ~~ 雖然我知道 WordPress 做 blog 很讚,但真的難以抵抗新玩具的吸引 🥹🥹