#hexo

本篇文章將說明:
4. 安裝 hexo 主題 minos
5. 客製化網域名稱設定
6. Cloudflare SSL 免費憑證設定

安裝 hexo 主題 minos

在自己的專案資料夾底下把主題包 git clone 下來並放置到主題資料夾底下

1
2
cd ~/github/elliesu_blog
git clone https://github.com/ppoffice/hexo-theme-minos.git themes/minos

使用 2.4.0 版本(安裝當時最新版),並把 minos 主題加為專案的子模組(也可以選擇不加)

1
2
git checkout 2.4.0
git submodule add https://github.com/ppoffice/hexo-theme-minos.git themes/minos

複製主題資料夾底下的 _config.yml.example 檔案,並把檔名更改為 _config.yml

1
cp themes/minos/_config.yml.example themes/minos/_config.yml

將此專案的 _config.yml 主題更新為 minos,注意!是此專案的 _config.yml,不是 minos 資料夾內的喔!

1
theme: minos

現在就可以試著預覽看看網站的新衣吧!

1
hexo server

遇到問題一:

ERROR Package hexo-renderer-sass is not installed.
ERROR Please install the missing dependencies in the root directory of your Hexo site.

解決: minos 有使用 hexo-renderer-sass 套件,需要另外安裝在主資料夾底下

1
npm install --save hexo-renderer-sass

遇到問題二:

ERROR Package cheerio is not installed.
ERROR Please install the missing dependencies in the root directory of your Hexo site.
解決: minos 有使用 cheerio 套件,需要另外安裝在主資料夾底下

1
npm install cheerio

主題相關設定可參考 Configuring Minos

minos 主題 _config.yml 調整

  • 設定 logo 名稱
  • 關閉分享功能
  • 關閉留言功能
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    logo:
    text: Ellie's Note

    # Share plugin settings.
    share:
    # type: sharethis
    # install_url:

    # Comment plugin settings.
    comment:
    # type: disqus
    # shortname:

客製化網域名稱設定

如果你的網域名稱不需要客製化的話,每個 GitHub 帳號都會有一個免費的 GitHub Pages 可以使用,但只能用於靜態網站,使用方式很簡單,只需要前往自己的 Git Repository -> Setting -> GitHub Pages 設定要發布的分支即可
GitHub Page branch setting
現在可以試著用 https://[your_account].github.io/[your_repository] 進入這個靜態網站

客製化網域名稱首先須先準備一個購買好的網域,這邊使用 Godaddy 購買

  1. 一樣是在 Git Repository -> Setting -> GitHub Pages -> Custom domain 填上自訂網域
    GitHub Page custom domain

  2. 使用 hexo 框架的話,需在專案的 source 資料夾下新增檔案 CNAME

    1
    2
    cd source
    touch CNAME

CNAME 檔案內容

1
elliesu.com
  1. 到自己的網域商(這邊使用 Godaddy)選擇 網域 DNS 管理,新增類型 A,名稱(主機) 填 @ 表示自己,指向 GitHub 主機 185.199.108.153,TTL 設為 600 秒
    Godaddy DNS A
    這邊 CNAME 可新增 www 也可不新增,www.elliesu.com 預設會指向 elliesu.com
    Godaddy DNS CNAME

可於終端機執行下列命令

1
2
3
dig www.elliesu.com +nostats +nocomments +nocmd

dig elliesu.com +nostats +nocomments +nocmd

未於 Godaddy 設定前顯示如下,此時進入 elliesu.com 會導向 Godaddy
dig no setting

於 Godaddy 設定後,後續又新增另外三個 GitHub 主機,顯示如下
Godaddy DNS A triple

使用 dig 指令檢視網域狀態,皆已成功連結
dig setting

檢視 www.elliesu.com 狀態
dig cname setting

Github 原先的 DNS Server IP: 192.30.252.153、192.30.252.154
後來可能是因為 Github 被微軟買走,主機跟著遷徙,導致主機的 ip 位置也跟著改
所以 ip 改為: 185.199.108.153、185.199.109.153、185.199.110.153、185.199.111.153

前面設定 DNS 時有看到一個名稱叫做 TTL,它是什麼呢?

存留時間 TTL 是 DNS 紀錄中用來定義 DNS 紀錄的後續變更生效前的秒數。在您的網域中,每個 DNS 紀錄(例如 MX 紀錄、CNAME 紀錄等)都具有 TTL 值,其決定了您對紀錄所做的變更需要多久才會生效。舉例來說,如果一個紀錄的 TTL 為 86400 秒,則變更將需要 24 小時才會生效

請注意,變更任一紀錄的 TTL 將影響「往後」任何變更生效所需要的時間。建議您將 TTL 值設定為 3600,告知網路上的伺服器每小時檢查更新紀錄。這意味著當您下次更新紀錄,您的變更將會在一小時後生效。如要縮短往後變更生效所需的時間(比如您想要儘快還原某個變更),您可以設定較短的 TTL,例如 300 秒(5 分鐘)

DNS 記錄類型

Godaddy DNS description

Cloudflare SSL 免費憑證設定

目前我們已經成功客製化網域名稱了,如果你需要將你的網站更改為 https,則需要使用 SSL 憑證,以下使用 Cloudflare

  1. 註冊 Cloudflare
  2. 輸入網域名稱,Cloudflare 會偵測到目前的設定,點選左下角 Continue -> 選擇 Default method,按照 Cloudflare 步驟修改
    Cloudflare enter domain
    Cloudflare setting
  3. 進入 Godaddy 網域管理頁面,變更網域名稱伺服器 -> 輸入我自己的名稱伺服器(進階),將步驟 2 中 Cloudflare 提供的伺服器名稱貼入,設定完成後,Godaddy 會顯示下列畫面
    Cloudflare Godaddy setting
    Cloudflare Godaddy setting 2
    Cloudflare Godaddy setting 3
  4. 回到 Cloudflare,點選 re-checked,等待 Cloudflare 成功偵測到網域伺服器名稱已變更,約需三至五分鐘
    Cloudflare rechecked
  5. 設定 Cloudflare SSL,上排選單選擇 SSL/TLS,選擇 Full
    Cloudflare SSL
  6. 設定網域名稱強制導向 HTTPS,上排選單選擇 Page Rules -> Create Page Rules,這邊可以免費設定三個網域,設定 elliesu.com 即可,因為 CNAME www.elliesu.com 有設定導向 @,也就是自己這個網域,所以從 http://www.elliesu.com 進入網站,會導向 elliesu.com,而 elliesu.com 有強制導向 HTTPS,所以只需要設定一個網域即可
    Cloudflare SSL force

Reference

Minos 主題
Managing a custom domain for your GitHub Pages site
Troubleshooting custom domains and GitHub Pages
Google DNS 基本資訊
Godaddy 官方網域說明
How do I redirect all visitors to HTTPS/SSL?

本篇文章將說明:

  1. 如何安裝 hexo
  2. hexo 專案建置
  3. 將 hexo 加入 Git 版本控管

如何安裝 hexo

需安裝:

  • Node.js (建議使用 Node.js 10.0 及以上版本)
    目前安裝 node.js 版本為 LTS 12.13.1
  • Git
  • hexo
    1
    npm install hexo-cli -g

若安裝 hexo 時顯示以下訊息,表示有權限問題

npm WARN checkPermissions Missing write access to /usr/local/lib/node_modules

使用 sudo 即可,因為 cli 指令會使用到命令列,必須授與權限才可使用
-g 表示 global 全域安裝

1
sudo npm install hexo-cli -g

安裝 hexo git 一鍵部署,若操作過程顯示下列錯誤訊息可能也表示未安裝此套件

ERROR Deployer not found: git

1
npm install hexo-deployer-git --save

hexo 專案建置

安裝完成後即可切換到自己慣用的工作區,像我的話是 github 資料夾底下

1
cd ~/github

使用 hexo 方便的內建指令就可一鍵產生專案

1
2
3
hexo init elliesu_blog
cd elliesu_blog
npm install

Git repository

在自己的 github 建立一個新的 repository: elliesu_blog,repository 的名稱要與資料夾名稱相同

回到 hexo 專案內,開啟 _config.yml,設定產生靜態網站並部署時要推送到遠端的 git 位置,也就是剛剛在 github 新開的 repository,repository 路徑規則為 http://github.com/[github_name]/[repository_name].git,要推送的分支設定為 master

1
2
3
4
deploy:
type: git
repository: http://github.com/EllieSu/elliesu_blog.git
branch: master

一鍵部署,d 表示 deploy,-g 表示產生靜態網站

1
hexo d -g

推送完成後,到自己的 github 頁面會看到 master 分支的檔案怎麼只剩下靜態的部分?
原因是因為 hexo 部署時只會把靜態網站推送至遠端 master,所以遠端的 master 分支只會有專案中靜態網站的資料
那要怎麼把專案中其他的資料夾與檔案也加入追蹤呢?很簡單
首先,為了不混淆靜態網站與我們平常的編輯模式,我們必須要新增一個分支 hexo

新增並切換分支 hexo,推送編輯模式至遠端 git,這樣就可以成功把編輯模式與部署分離囉

1
2
3
4
5
git checkout -b hexo
git add .
git commit -m "first commit"
git remote add origin https://github.com/EllieSu/elliesu_blog.git
git push -u origin hexo

下一章會介紹如何更換 hexo 主題、自訂網域名稱、SSL 免費憑證設定

Reference

Hexo 文件

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×