在github部署hugo静态网站
原由
颱風天那都不能去,只好繼續 Coding 人生、看看 Pocket 未讀的文章。不過也因此發現好幾個不錯的東西
- Supercharging the Atom Editor for Go Development · marcio.io,最近也開始用 Atom 也開始學習 Golang 語言。這一篇作者說明了他自己的使用經驗。
- 使用Hugo搭建免费个人Blog · Ulric Qin 這一篇文章看到 Hugo,發現在他的 Blog 也是用 Hugo 架的
在 Ulric Quin 的文章中得知他自己的 Blog 是架在大陸的GitCafe,Hugo 可以直接發佈到 GitCafe & Github 的 Page 免費,當然是立刻自己動手玩一玩
在 Hosting on GitHub Pages 的說明文件中有如何把 Hugo 靜態網站佈署到 Github Pages 中。但因為 GitHub Pages提供了二種不同形態的頁面 User or organization site
& Project Site
。其中個人主頁一個帳號只能有一個、而專案頁面則可以很多個。
所以在佈署 Hugo 靜態網站也因為對應到不同的型態的 Github Pages 而有所不同。
第一種方式是將 Hugo 靜態網站佈署到 Github Page
Project Site
面頁中. 只需要在 github 上建立一個 repo,但是利用 git 中subtree
的概念將public
資料夾連結到gh-pages
的分支上,git 操作過程較為繁鎖
Url 上的差異
1 | # project site url |
Project Site
Step1 - 安裝 Hugo 並建立新專案
在安裝(詳細步驟請看這)好 Hugo 後,直接建立新的 Hugo 專案
1 | # 建立 Hugo 新專案,-f 是指定 yaml 格式,預設為 toml:frontmatter format |
檢視新專案資料架構
1 | # <project-name> file structure |
Step2 - 安裝新的 Themes
本來安裝 themes 可直接新建 themes 資料夾並使用 git clone <themes-url>
,不過此方法在後面 push 到 Github Pages 出,Github 會回報
The page build failed with the following error: The submodule
themes/hyde
was not properly initialized with a.gitmodules
file. For more information, see >https://help.github.com/articles/page-build-failed-missing-submodule.
If you have any questions you can contact us by replying to this email.
所以這邊直接使用 git submodule
的方式來安裝 themes
1 | # add hugo themes to project as submodule |
Step3 - 編輯專案設定檔
1 | baseurl : "http://<你的github账号>.github.com/blog-hugo" |
Step4 - 新增新的文章
在 content/posts
建立 first-post.md
1 | # 會在專案 content/posts 下產生 first-post.md 檔案 |
編輯 first-post.md
1 | --- |
Step5 - 預覽
此時就可以在 Local 執行, http://127.0.0.1:1313/blog-hugo/
1 | # -w watch filesystem for changes and recreate as needed |
應該可以看到下面擷圖的樣式
Step6 - 發佈 Hugo 靜態網站至 Github Pages
接下來的動作是一連串的 git 操作,把 Hugo 產生的 public
資料夾推送至 Github Pages
1 | # 删除public文件夹,以后hugo会重新生成 |
這時候,訪問 http://你的github账号.github.com/hugo_blog 應該就可以正常運作
之後如果有任何修改,只有執行最後的3個步驟即可或是將最後的步驟寫成 deploy.sh
1 | deploy.sh |
Organization site
Github Pages 除了提供專案主頁(可以多個)之外,也提供了個人主頁(每一個 github 帳號只有一個)的方式。將 Hugo 靜態網站發佈到個人主頁的方式比發佈到專案主頁簡單
在個人主頁中
- Github repo 必需取口 .github.io
- master 分支中的內容會被 Build 及發佈到你的 Github Page中 (專案主頁是利用 gh-pages 分支,這點不太一樣)
Step1 - 建立 Hugo repos
- 建立
blog-hugo
repo (用來 host Hugo 的內容) - 建立
mile3033.github.io
repo (Hugo public 中靜態網頁的內容)
Step2 - 建立 Hugo 新專案
1 | $ hugo new site blog-hugo -f yaml |
Step3 - 安裝 Themes
1 | $ git submodule add https://github.com/laozhu/hugo-nuo themes/hugo-nuo |
Step4 - 編輯專案設定檔
1 | baseurl: 'http://mile3033.github.com/' |
Step5 - 新增文章
1 | $ hugo new posts/first-post.md -f yaml |
1 |
|
Step6 - 預覽
此時就可以在 Local 執行, http://127.0.0.1:1313/hugo_blog/
1 | # -w watch filesystem for changes and recreate as needed |
Step7 - 移除 public
1 | # it will created by `hugo` command after we executed `deploy.sh` |
Step8 - 新增 .github.io public as submodule
1 | $ git submodule add git@github.com:mile3033/mile3033.github.io.git public |
Step8 - 发布
1 | #deploy.sh |
執行發佈shell後,內容會被推送到 blog-hugo
,而 public
會被推送到 mile3033.github.io
1 | $ deploy.sh 'your commit message' |
待 Github Page 編譯發佈後,訪問 http://mile3033.github.io 就會看到結果!