快轉到主要內容

架站從Github Pages換成Netlify ~ 第二帝國成立緣起

人文藝術 隨筆 Hexo
🗓️ 民國111年 壬寅年
✍ 切換正體/簡體字
目錄

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主題的規範。

相關文章

討厭人不需要理由嗎?
人文藝術 隨筆
戲就這麼散了,畢業遇到疫情的荒涼感
人文藝術 隨筆
法學不是科學,對的
人文藝術 隨筆

留言板

此處提供二種留言板。點選按鈕,選擇您覺得方便的留言板。要討論程式碼請用Giscus,匿名討論請用Disqus。

這是Giscus留言板,需要Github帳號才能留言。支援markdown語法,若要上傳圖片請貼Imgur連結。您的留言會在Github Discussions向所有人公開。

這是Disqus留言板,您可能會看到Disqus強制投放的廣告。有時留言可能會被系統判定需審核,導致延遲顯示,請見諒。