1. 緣起#
自從第一帝國,用Hexo架在Github Pages上因為重新安裝系統導致檔案盡失後,雖然網站還在,卻變成真靜態了。
回到Google Blogger,經營4個月好像有點起色,QEMU和UUP DUMP的議題成功引起關注,但遠沒有Minecraft基岩版部落格受歡迎,也不夠格放Adsense。後來接觸到去Google化的思想,所以我希望可以擺脫Google與其產品的控制,除了Youtube以外,供我寫廢文的部落格也要找個新平台。
2. 先嘗試Neocities架站#
這個靜態網頁代管網站很復古,歷史漫長,貓貓很可愛,他們還說網站程式碼是開源的。
原本以為提供線上HTML編輯器,可以當成Blogger替代品了。結果HTML編輯器真的只是HTML編輯,不是可見即所得,網站檔案還要自己上傳。
雖說如此,支援自訂網域的付費會員只要5美元。
這年代不會有人手打HTML了,所以我找了個新靜態網頁生成器「Hugo」,操作跟Hexo類似,同樣能用Markdown寫文章後生成。於是將網站做好後,將public
目錄的內容上傳到Neocities。直接把靜態網頁檔案拖拉上傳才發現,這個前端寫的有夠爛,Firefox上傳目錄會各種漏檔案。
所以參照官方說明,安裝Ruby寫成的命令行工具…啊咧,openSUSE的Ruby 0.31.0用gem install
安裝怎麼都是喚不出已安裝的Neocities呢,重裝Ruby還把YaST整沒了。多方除錯未果,我放棄。
幸好官方還有提供Python版的套件,寫一個腳本上傳就輕鬆多了。( 參考)
#! python3
import neocities
from glob import glob
import os
USERNAME = "帳戶"
PASSWORD = "密碼"
LOCAL_DIRECTORY = "public" # Hugo generates the site in the public directory
file_extensions = [
'.html','.htm',
'.jpg','.png','.gif','.svg','.ico',
'.js','.json','.css','.txt','.csv','.xml',
'.eot','.ttf','.woff','.woff2']
def push(d):
''' recursive directory upload, adapted from https://github.com/neoslaughter/python-neo '''
files = glob(d + '/**', recursive=True)
for file_name in files:
if os.path.splitext(file_name)[1] in file_extensions:
destination_path = file_name.replace(LOCAL_DIRECTORY,'').replace("\\","/")
nc.upload((file_name, destination_path))
print("Uploaded {} as {}".format(file_name, destination_path))
nc = neocities.NeoCities(USERNAME, PASSWORD)
push(LOCAL_DIRECTORY)
試了一下後覺得Neocities還是太old school了,所以改向跟Github Pages類似的服務「Netlify」。
3. 使用Netlify架站的好處#
Netlify的原理是先在Github開一個私人repo,之後用Github註冊Netlify的服務後,選定該私人Github repo給Netlify存取。之後git push到此repo,Netlify那邊會自動同步部署過去。
實測部署速度比Github Pages快一點,幾乎是一分鐘就會出現更新內容了,Github Pages會久一點。
Netlify的容量有100GB,還準備好了自訂網域的設定,所以我認為未來應該很有擴充性。
此外這種部署過程應該可以避免重複以前的問題:靜態網頁生成器設定檔存在本機,Github Pages的repo只會有靜態網頁結果,設定檔要另外開repo備份。以前覺得麻煩沒做,於是發生慘況。
現在是整個網站都推送到Github的單個repo,保證本機檔案弄丟也不怕,再由Netlify根據netlify.toml
設定檔,把public
目錄部署到Netlifyy上:
[build]
publish = "public"
command = "hugo"
[build.environment]
HUGO_VERSION = "0.100.1"
現在設定好之後還有細部選項要微調,不過程式碼部份就盡量保持目前用的Hugo主題的規範。