Github personal Webpage

01 May 2020

這篇文章紀錄如何在github上建立一個個人網站並且能夠擁有自己的網址、使用https

Github.io

github.io能夠給予user架設一個personal website的地方。
理論上就是創建一個repo叫做<username>.github.io這個repo,把html,css,js等等push上去就行
這時個人網站網址就會是在<username>.github.io這個網址

有更多進階用法,像是repo好像不一定要遵守那個命名convention,但要另外設定,或者利用branch方式來做修改之類的。但沒用到就沒去深入瞭解了。

Jekyll template

爬網路上文章,感覺github webpage蠻多人用hexo或jekyll這兩個工具來render靜態網頁。後來因為在jekyll看到一個中意的template,所以決定用jekyll。github.io能夠用jekyll來產生靜態網頁。

jekyll跟hexo的一大優勢在於,他能夠把markdown的文件render成html,所以可以用markdown紀錄筆記,他會自動render成html。因此很多人用這兩個tool來建立一個自己筆記的網頁。
基本上就是上網找一個喜歡的template載下來

jekyll本身是用ruby on rails寫的工具,因此要利用gem來下載jekyll。

how jekyll works

Ruby on rails

基本上他就是一個web的framework,方便開發者快速弄出一個網站、template,也容易maintain,更新。能夠讓開發者用更少的程式碼來達到原本希望的需求。

簡介

Web Frame work

一個網站大概可以分成幾個部分

  • 前端網頁呈現
  • 後端伺服器
  • 資料庫

因此架設一個完整得網站會需要這些東西,在小型的網站中這個問題不大,反正就寫code,但當網站一但變得很大,那就需要一個好的方式來進行維護、更新。並且能夠用較少的程式碼來達到更多的東西、將上述三個部分分得更開而不是纏在一起。

例如常見的MVC架構、ORM就是試圖讓網站架設的每個步驟更簡單(更少code)、更容易維護。而架構也可以帶來更多的彈性,例如URL路由就不用像html,php render file的方式在網址欄還有一個about.html之類的。

Reference

jekyll github

custom domain

註冊、申請domain的服務最常見的就是godaddy, Gandi這些。但大多數都要錢,而且不太便宜,因此如果想要免費的話,我只知道可以用nctu.me或者github.io

Gandi doamin

這次是使用gandi來購買tw domain,基本上第一年費用是600-700,不確定第二年後會不會更貴QQ。
註冊方法非常簡單,就是照著指示註冊帳號、購買tw domain。

購買後要去域名的區域檔紀錄設定,新增以下的Resource Record

$ remove gandi parking record(去除原本就在裡面的A,CNAME紀錄)

@ 1800 IN A 185.199.108.153
@ 1800 IN A 185.199.109.153
@ 1800 IN A 185.199.110.153
@ 1800 IN A 185.199.111.153
<任何subdomain> 10800 IN CNAME [github-username].github.io.

基本上上面Resource Record設定的ip都是github的ip,可以不用全寫,可以只寫一個,其實沒什麼差

subdomain部分我是設定blog所以就會像是
blog 10800 IN CNAME [github-username].github.io.
到時候我的個人網站網址就會變成blog.licon.tw這樣

印象中這個設定完也是要一下子才會生效(數分鐘),不是馬上設定好就馬上有

nctu.me

交大nctu.me提供客制的subdomain服務,只要去nctu.me註冊後,就可以申請nctu.me以後的subdomain來用。
重點是免費!!

註冊完後去網域管理新增紀錄新增一個subdomain,以我而言我申請了licon.nctu.me
操作如下,然後要選擇CNAME(DNS的resource record)

$ 名稱: licon.nctu.me
$ 內容: <youraccount.github.io>
$ TTL: 這其實隨意沒有很重要

這代表以後query licon.nctu.me他會把它導向github.io

github setting

做完上面步驟後就是你新增的domain他會指向github。那這時用瀏覽器去瀏覽那個domain時,會發現它顯示github webpage的404 not found。那是因為我們在github端也要做custom domain的設定。

回到github personal webpage那個repository。
在設定地方把custom domain設定成上面用nctu或gandi新增的domain。接著再等一下就可以了(應該也是數分鐘,可能到10分鐘嗎(?)。

另一個方法是可以直接在repo push一個CNAME檔案,CNAME檔案內的內容就申請的domain,例如我的例子是

blog.licon.tw

就這樣

Enable https

個人認為https是現在網站一個非常重要的設定,不然中間傳的資料被看光、用很容易被各種攻擊(Man-in-the-middle)。其實蠻不好的,因此最好申請一個https,也比較讓人信任這是一個安全的網站(雖然也蠻不一定的…這又是另一個議題,https憑證發得太氾濫)

做法就是在custom domain那裏附近有一個setting叫做enable https,基本上就是把他打勾,github somehow就會幫忙申請一個Let’s Encrypt的憑證給個網站的樣子,這裡我不太確定細節怎麼work的,但基本上就是certificate看起來是Let’s encrypt簽的。