Ghost Blog Note 01
安裝Ghost Blog過程的筆記。

安裝紀錄
撰寫部落格是為了記錄一些日常或者記錄一些學習筆記,我一直認為是一些很酷的行為,不過因為懶惰等等原因總是更新的很慢、很佛性。
從2019年開始,我使用hexo利用github的頁面功能在github.io上建立了部落格,寫了一些學習、研究技術的文章,荒廢的很大一個原因是hexo的一些設置有點複雜,需要處理主題、插件、佈局等等設置,而且我本身也不熟悉 Node.js,為了維護或升級這些有點難度,另外編輯、發布的功能因為不是所見即所得的方式,通常可能需要花一個排版亂掉會一堆時間去找到問題,後來就找到了Ghost Blog這個可以選擇在平台上開賬號或者自架的部落格。
這個部落格是安裝在AWS提供的lightsail服務上,安裝的方法很簡單而且在網上也有教學,這裡就先跳過了,本文主要記錄針對主題去更改什麼了設置、或者添加了什麼為主。
更新幽靈
進入ghost資料夾,更新後更改權限:
cd /opt/bitnami/ghost
sudo su ghost -c "ghost update"
sudo chown ghost:bitnami -R /opt/bitnami/ghost
sudo chmod 640 /opt/bitnami/ghost/config.production.json
更新後config.production.json
可能會改變可以去查看是否有被變更,主要可能被變更的選項如下:

改回來後需要重啟ghost:
sudo su ghost -c "ghost restart"
備份設置
之前在升級Ghost Blog的時候,遇到因為打錯指令導致整個部落格開不起來,後來直接想辦法取出前一段時間慢慢匯出的資料,再還原到新的服務器上,所以在對服務器進行操作的時候進行備份或定期備份是一件很重要的事情,在這台服務器上我所使用的方式是Amazon Lightsail的Sanpshots來進行備份,他可以手動進行備份、也可以定期執行備份的動作,整體來說有一個很方便的功能。
快照
進入 Amazon Lightsai 的頁面,看到大量實例中您要備份的機器,然後選擇快照,可以看到以下畫面:

可以直接Create snapshot
:

或是開啟下面的Automatic snapshots,Change snapshot time來選擇備份時間:

mail設定
要讓其他對你的Ghost部落格有興趣的人可以進行評論、通知訂閱者發了新文章等等操作,或是作者需要對密碼進行重製等等都需要使用到郵件來通知。這裡使用了SMTP的方式進行設定,SMTP的服務則是選擇了Mailgun來發送郵件。
Mailgun設定
進入Mailgun的控制台在右上角點選Add New Domain
新增一個網域:

按照說明填入你的網域和選擇使用的伺服器:

接下來要去管理你網域的DNS服務商那裏去設定DNS紀錄、MX紀錄:

因為我這邊使用的是Cloudflare平台,要注意最後一個CNAME要記得在Cloudflare上不要使用到proxy,要設定成DNS only (要讓橘黃色小雲變成灰色):

都設定好之後可以點選上方的Verify DNS settings
:

如果沒有問題,在Status上會顯示Verified或是Active:

設定好之後要去左邊的Sending > Domain setting ,接著點選SMTP credentials,記住這裡的Login名稱和產生的密碼,密碼如果忘記了可以直接點選Reset password來重設:

接著在同個頁面,點選Sending API keys,再點右上方的Add sending key
來新增,輸入該API Key的敘述:

得到Sending API key一樣記錄下來,如果忘了則需要重新產生,之後會需要用到:

寫入Mailgun設定
將之前在SMTP credentials中的帳號密碼填入:

然後要在後台的Settings > Email newsletter最下方Mailgun configuration
點選Expand
,選好Mailgun region和輸入在Mailgun註冊的domain,將剛剛取得的API key輸入到下方的Mailgun Private API key空格處:

Mailgun添加白名單
弄好上方的設定後,可能會發現一般的訂閱或是文章回覆是可以收到Mail,但是一旦發表新文章時卻收不到信,這時候需要將伺服器所在的IP加入Mailgun的IP白名單,首先點選右上角的個人資訊、選擇API Security
:

點選上方的IP allow list:

點選Add to allow list後,將Ghost Blog所在的IP填入即可:

設定完後可以自行發表文章測試看看收不收的到信,目前Ghost Blog (5.59.2) 的 Casper (5.7.0) 主題預設的留言方式在留言的時候同時會寄信給作者,也可以在文章下留言來測試郵件是否能正常發送。
Google Analytics
如果你是第一次使用Google Analytics登入進去後有以下畫面,點選開始測量:

首先需要先創建一個帳戶,這裡的帳戶負責管理你要分析的資源,資源可能是網站或是APP (ISO或是Android) :

接下來就按照它上面所引導的步驟把必要的資訊一一填入:




我們需要分析的是部落格,所以這邊選擇網站:

把網站的資訊填入:

之後會挑出來Google Analytics所產生的JS程式碼:

複製前面的程式碼,貼到Ghost Blog管理介面裡Settings > Code injection的Header裡面:

接下來進入部落格重新整理一下,去看Google Analytics的報表上有沒有產生瀏覽紀錄,如果有代表已經完成了:

Google News Sitemap
參照Ghost的教學文章,新增sitemap.hbs
:
<?xml version="1.0" encoding="UTF-8"?>
<urlset
xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:news="http://www.google.com/schemas/sitemap-news/0.9"
>
{{#get "posts" filter="published_at:>now-2d" limit="1000" include="tags"}}
{{#foreach posts}}
<url>
<loc>{{url absolute="true"}}</loc>
<news:news>
<news:publication>
<news:name>{{@site.title}}</news:name>
<news:language>{{@site.locale}}</news:language>
</news:publication>
{{#has visibility="members"}}
<news:access>Registration</news:access>
{{/has}}
{{#has visibility="paid"}}
<news:access>Subscription</news:access>
{{/has}}
<news:publication_date>{{date published_at format="YYYY-MM-DDTHH:mm:ssZ"}}</news:publication_date>
<news:title>{{title}}</news:title>
<news:keywords>{{tags limit="5" autolink="false"}}</news:keywords>
</news:news>
</url>
{{/foreach}}
{{/get}}
</urlset>
更新route.yaml
,在routes
新增以下這段:
routes:
/sitemap/:
template: sitemap
content_type: text/xml
進入Google Search Console確認Google是否有偵測到sitemap,因為目前只有這個網站需要使用sitemap的功能,所以選擇右邊的選項填入網站的名稱:

因為之前已經完成了Google Analytics的連結,所以可以直接驗證為擁有者:

點選左方的Sitemap選項:

填入剛剛創建的sitemap網址,最後看到成功就代表完成了:

結論
到這裡關於Ghost Blog的設定基本上就完成了,之後如果有新增功能會以較為短篇的文章記錄。