哈囉 Hugo
我的第一篇文
This is my first hugo post. :D
目前這個網站專案是放在 GitHub,然後部署在 DigitalOcean Apps。我在本地端寫完文章,推到 GitHub 後,DigitalOcean 就會自動部署。目前 DigitalOcean 的免費方案似乎沒有流量及部署時間限制了,是個玩 Hugo 的好選擇。
選擇 Hugo 而不是繼續用 Wordpress 的原因,一來是嫌棄 Wordpress 太肥大;二來是 Hugo 可以直接用 markdown 寫文,再透過部署流程轉成靜態頁面,所以速度相比 PHP 當然是快上不少;最重要的是,要玩當然是要玩新玩具啊 wwwwww
好久沒有寫 Blog,不知道新玩具會讓我維持多久 XD
使用 Docker 安裝 Hugo
我不是很想把本機環境弄髒,所以選擇用 Docker 來安裝 Hugo,又因為我這個人比較懶,用 docker-compose 可以少打很多指令。docker-compose.yaml 內容如下:
version: '3.7'
services:
server:
image: klakegg/hugo:latest
command: new site /src
# command: server -D
volumes:
- "./<your folder>:/src"
ports:
- "1313:1313"
執行 docker-compose up -d
後會在目錄裡面看到滿多目錄跟檔案的。
我有嘗試過不要建立 folder,直接跟 docker-compose.yaml 放在同一層,也就是 ./:/src
這樣。不過不知道為什麼,產出來的檔案卻只有 public 這個目錄。
接著把 docker-compose.yaml 的 command 被 mark 的那行打開,然後 mark 原先的 new site 指令,並執行 docker-compose up -d
我用 server -D
是為了在本機可以看到草稿的文章,如果你不需要,直接用 server
就可以。
version: '3.7'
services:
server:
image: klakegg/hugo:latest
# command: new site /src
command: server -D
volumes:
- "./<your folder>:/src"
ports:
- "1313:1313"
打開瀏覽器,輸入 localhost:1313 應該就可以看到 404 頁面。
為了之後把專案推上 GitHub,以及用 submodule 的方式安裝佈景,我們需要先建好本地的 repo,在目錄內執行 git init
挑選佈景
接著可以到 Hugo Theme 選一個你順眼的佈景主題,我選的是 Paper 這個佈景。看起來滿簡潔的,目前我也不需要太花俏的功能,反正玩的順手,覺得不夠用後再來換佈景就好。
git submodule add https://github.com/nanxiaobei/hugo-paper themes/paper
參考佈景說明,我修改了一下 config.toml
baseURL = 'https://abend.tw/'
languageCode = 'zh-tw'
title = 'Abend'
theme = 'paper'
[params]
# color style
color = 'gray'
# header social icons
twitter = 'evenrain'
mastodon = 'https://abend.social/@evenrain'
# home page profile
avatar = '[email protected]'
name = 'evenrain'
bio = '閒散是天才的理想,懶惰是浪漫主義者的美德'
# misc
disableHLJS = true
monoDarkIcon = true
math = true
再打開 localhost:1313
應該就可以看到佈景大概的樣子了
建立第一篇文章
指令輸入
docker-compose exec server hugo new posts/hello-hugo.md
在目錄中的 /content/posts/ 中可以找到 hello-hugo.md,應該會長這樣
---
title: "Hello Hugo"
date: 2023-06-09T03:17:35Z
draft: true
---
寫完文章存擋後,雖然還是草稿狀態,但是因為我是用 server -D
,所以在瀏覽器中會看到結果。如果是用 server
就需要把 Front Matter 中的草稿狀態給為 draft: false
才會看到。
準備部署
接著我們需要到 GitHub 開一個新的 repository 存放專案
把本機端的程式碼推上 GitHub,這邊要注意的是,如果你已經用過 docker-compose exec server hugo
指令產生靜態檔案,public 目錄下的檔案記得要加入 .gitignore
,不需要上傳。
前面提過我的 Hugo 是部署在 DigitalOcean Apps,我們也需要到平台上開新的 App。授權 GitHub 權限、選擇 Repo,其他設定基本上不太需要更動
完成後 DigitalOcean Apps 會嘗試第一次部署,可以看見 DigitalOcean 把檔案都轉成靜態檔案,本文的 hello-hugo.md 也轉換成 /hello-hugo/index.html
部署完畢後可以用 DigitalOcean 預設的 Domain 來開啟網站,不過因為 baseURL 已經寫死成自己的網域,所以 CSS 那些都會跑版
最後就是把網域換成我們自己的網域,因為我的網域只有要拿來跑 Hugo,所以直接使用 DigitalOcean 的 DNS 就好
最終結果就是你看到的這個網站跟這篇文章啦 :D