Hexo + Github Pages:手把手教你打造免費個人部落格

前言

在使用 Hexo 這個網誌框架之前,曾經使用過非常受歡迎的 Wordpress 進行架站。

Wordpress 雖然是個很棒的內容管理系統(CMS),佈景主題很漂亮,但最大的缺點就是站體很容易過於龐大,如果是用免費的雲端伺服器的話網頁讀取速度可以說是非常慢,而且因為資料都在雲端伺服器,在備份和還原上稍微較麻煩。

而Hexo這個輕量級的網誌框架就解決了讀取速度這個對我來講最大的問題,而且剛好可以搭配Github Pages)這個免費服務來進行部落格的搭建。

以下的教學是針對使用 MacOS 的人所寫的,如果是使用Windows系統的話步驟基本上一樣,只是指令的部分可能會有點差異,還請見諒。

Hexo 介紹

Hexo是一個能夠產生靜態網站的網誌框架,相對於動態網站需要有一個資料庫,靜態網站的檔案存在電腦上,將來在轉移的時候也比較方便。

Hexo 的一些優點

  • 超快的檔案產生速度,在幾秒內即可完成網誌產檔
  • 近 300 個外掛插件
  • 有 200 多個免費主題
  • 支援 Markdown 語法
  • 中文社群的內容繁多

建立使用Hexo的環境

事前準備

在安裝 Hexo 前電腦需要先安裝下列兩套軟體。

在本地端安裝 Hexo

於終端機中透過 npm 安裝Hexo[1]
$ npm install -g hexo-cli

如在此步驟遇到 node.js 的 write access 問題可以參考備註1的解決方案。

建立部落格

輸入$ hexo init <部落格名稱>進行hexo的初始化,並在剛剛創建好的資料夾內安裝npm套件。

完整程式碼如下

$ hexo init blog #建立部落格
$ cd blog #載入資料夾
$ npm install #安裝npm套件

接著可以先啟動local端的server來看看一下自己的部落格長怎樣。

$ cd blog
$ hexo server #啟動本地端server

看到自己的部落格後先不要感動落淚,我們先來介紹幾個比較重要的檔案。
Hexo 網站初始介面
Hexo 網站初始介面

目錄結構

  • _config.yml:網站的配置檔案,可以設定網站標題、作者、作者大頭貼、網域...等,是非場重要的一個檔案。
  • source:原始檔案資料夾是放置內容的地方。裡面的_posts資料夾是存放文章的地方,之後要新產生的文章都會在這邊。
  • theme:放置主題的資料夾。

開始設定 Hexo 網誌

網站基本設定

建立完網誌後,我們可以先打開_config.yml這的檔案來設定一些基本的內容。

title: 網站標題
subtitle: 網站副標題
description: 網站描述
keywords: 網站關鍵字
author: 作者名稱
language: zh-TW
timezone: Asia/Taipei

語言預設是英文,也可以設定成zh-TW改成中文,時區預設是你電腦的時區,也可跟我一樣改成台灣的時區。

主題設置

本篇文章主要是以使用 NexT 這套簡潔且集合了許多第三方外掛的強大主題來做說明。

首先載入自己的網誌資料夾(本文章的教學範例是blog),並且將主題檔案從Github端上載下來到本地端。

$ cd blog
$ git clone https://github.com/theme-next/hexo-theme-next themes/next #將next的主題資料從github載下來放在next資料夾裡

打開網站設定檔config.yml,將theme:landscape改成theme:next,新的主題就套用成功了!

現在我們來輸入hexo generate讓 Hexo 產生靜態檔案[2],並且使用hexo server來啟動伺服器。

$ hexo generate #產生靜態檔案
$ hexo server

在瀏覽器中輸入 localhost:4000 ,可以看見新主題已經成功套用。

作者資訊設定

1 11 在 theme/next 這個資料夾中打開主題的設定檔 _config.yml 並在 blog/source/uploads/images 的資料夾中放入你想要的大頭照,並命名為 avatar.jpg

avatar:
	url: /uploads/images/avatar.jpg

加入社群連結

在主題設定檔_config.yml,設定各社群媒體的連結。
以下示範,把前面的#字號去掉就是開啟該社群連結的意思。

social:
  #Google: https://plus.google.com/yourname || google
  #Twitter: https://twitter.com/yourname || twitter
  FB Page: https://www.facebook.com/larrynote || facebook

開始寫作

第一篇文章

前面講了這麼多終於要開始介紹怎麼寫文章囉!

首先一樣要透過終端機先進入自己的blog資料夾,再執行hexo new <文章名稱>,就會在路徑blog/source/_posts內創建一個文章名稱.md的檔案。

接下來就可以用文字編輯器打開文章名稱.md進行撰寫。[3]

另外這邊建議在網站設定檔config.yml的中可以將post_asset_folder: false改成post_asset_folder: true,這樣之後在用hexo new創建新文章的時候會建立一個該文章的對應資料夾,可以在該資料夾中放入該文章圖片,這樣比較好方便管理。

文章設定

當你在打開文章檔案時,預設可以做以下設定。

---
title: {{ title }} #文章標題,不用動它
date: {{ date }} #文章創建日期
tags: #標籤(多標籤寫法如下)
- tag1
- tag2
---

可以在上方區塊中為文章加入更多詳細設置,例如文章分類、SEO會用到的關鍵字和敘述設定。

categories: #文章分類
keywords: #關鍵字(SEO用)
decription: #文章敘述

這邊建議可以直接修改blog/scaffolds/post.md這個文章模板檔案,此檔案就是每次執行hexo new <文章名稱>指令時的會產生的文章模板。

加入「繼續閱讀」按鈕

在文章斷點處加入<!--more-->就可以囉!

例如以下程式碼就只會在首頁顯示”我是第一段”的文字,”我是第二段則是需要點「繼續閱讀」才會出現”

我是第一段
<!--more-->
我是第二段

新增網站頁面

我們先來創建一個分類頁面,於終端機中輸入hexo new page categories這個指令。

blog/source/categories/ 路徑中找到index.md這個檔案,打開檔案,並增加頁面的type屬性。建議可以關閉頁面的評論功能(預設是開啟)

---
title: categories
date: 2019-03-19 12:12:12
type: "categories"
comments: false
---

打開主題設定檔config.yml,找到以下程式碼,把前方的 categories 的註解#給刪掉。

menu:
  home: / || home
  #about: /about/ || user
  #tags: /tags/ || tags
  categories: /categories/ || th
  archives: /archives/ || archive
  #schedule: /schedule/ || calendar
  #sitemap: /sitemap.xml || sitemap
  #commonweal: /404/ || heartbeat

將網站佈署至GitHub Pages

終於來到了要讓大家能看到你的部落格的階段,我在這裡選擇了免費又穩定的GitHub Pages 這套服務。

GitHub Pages官方介紹

Websites for you and your projects, hosted directly from your GitHub repository. Just edit, push, and your changes are live.

使用Github創建一個名稱為<username>.github.io的專案,例如larryblog.github.io

執行npm install hexo-deployer-git —save這個外掛,讓Hexo可以執行指令部署至Github上。

在網站設定檔config.yml找到deploy並進行以下修改

deploy:
  type: git
  repo: https://github.com/skylovely2005/larrylai.github.io.git #新建專案的網址
  branch: master #Github Pages的是以master這個分支作為顯示頁面

另外找到url並進行以下設定

url: https://username.github.io/
root: /repo.github.io/

假設我Github的帳號名稱為larry,並且剛剛創建了larryblog.github.io這個專案,那程式碼修改如下:

url: https://larry.github.io/
root: /larryblog.github.io/

現在執行hexo deploy指令,將網站部署到Github Pages上。

接下來就可以輸入到你的網站https://username.github.io/reop.github.io來看到你的網站囉![4]

例如https://larry.github.io/larryblog.github.io

實用外掛推薦

現在要來介紹幾個實用的外掛,大家可以參考斟酌要不要用,或是可以自己到官方的外掛列表來找到適合自己的外掛。

設置好外掛後,都需要先執行hexo generate來產生新的靜態檔案,然後再執行hexo server於本地端進行測試。

為部落格增加搜索功能

執行 npm install hexo-generator-search安裝外掛,並在主題設定檔config.yml中找到 local_search 將 enable: false 改成 true

local_search:
  enable: true

使用 Disqus 為文章加入留言功能

  1. 首先要到Disqus網站去申請一個帳號,並且新增一個「網站」。
  2. 到 setting 的General中找到該網站的 Shortname 並複製起來
  3. 回到主題設定檔config.yml中找到以下程式碼,並把剛剛複製好的貼在shortname後面。
disqus:
  enable: true #開啟功能
  shortname: https-username-web
  count: true #在文章中顯示評論數量
  lazyload: false #延遲載入功能

加入Google Analytics紀錄網站流量

取得追蹤碼

Google Analytics中建立新帳戶,並至資源設定 > 追蹤資訊 > 追蹤程式碼,找到追 IDUA-123456789-1,並把他複製起來。


2. 完成GA設置:於主題的設定檔config.yml中加入自己的tracking_id,建議將本地端的流量忽略掉,這樣在計算上比較準確
3.

# Google Analytics
google_analytics:
  tracking_id: UA-123456789-1
  localhost_ignored: true

Google SEO優化

申請帳號,並使用GA驗證:先至Google Search Console將你的網站網址新增至資源中,由於剛剛加了Google Analytics至你的部落格中,所以驗證方法可以用Google Analytics帳戶來進行驗證。

提交sitemap

執行hexo-sitemap-generator安裝外掛。

在網站設置的config.yml中,新增路徑,讓sitemap可以順利提交。

sitemap:
  path: sitemap.xml

執行指令提交sitemap

hexo generate
hexo deploy

回到Google Search Console內的索引 -> Sitemap中提交sitemap的網址。

接下來就等Google解析你的網址啦!通常過幾天後就能夠搜尋到自己的網站了。

全站訪客及文章閱讀人數統計

使用集合在NexT主題中的不蒜子 計數套件即可。

打開主題的配置檔案config.yml,並且找到busuanzi_count,並輸入以下指令。

busuanzi_count:
  enable: true
  total_visitors: true 
  total_visitors_icon: user
  total_views: true
  total_views_icon: eye
  post_views: true
  post_views_icon: eye

接下來一樣執行hexo generate後就可以看到部落格中已經添加了全站瀏覽數統計以及文章閱讀數統計了。

結論

在自媒體當道的時代,有自己的一個流量池是很重要的,不論是寫文章記錄自己的生活側寫,或是分享自己的一些感想心得都可以。

以上的教學希望能夠幫助你順利使用 Hexo 這套框架來架設自己的部落格,如果有任何關於 Hexo 的問題或是更進階的使用技巧想要知道的話,歡迎在下方留言與我討論。如果喜歡我的文章,也歡迎訂閱我的網站。

參考資料


  1. 遇到node.js的write access問題,可以嘗試以下解決方法。

    1. 利用 —unsafe-perm 指令繞過系統限制,完整指令如下
    2. 透過指令更新npmsudo npm install —unsafe-perm —verbose -g npm
    3. 安裝hexo所需檔案 sudo npm install —unsafe-perm hexo-cli -g
    ↩︎
  2. 之後每次更新網站或文章都需要透過這個指令來產生新的靜態檔案唷! ↩︎

  3. hexo的文章內容可使用Markdown語法進行撰寫。想對Markdwon語法更了解可至《Markdown入門參考|易讀好寫的標記式語言》此篇文章參考。 ↩︎

  4. 部署到Github Pages前別忘了執行hexo generate來產生靜態檔案,另外Github Pages因為會需要約30秒~1分鐘來更新檔案,且因為有網站緩存的問題,所以如果本地端測試時看網站都是有修改,但在Github Pages上看起來還沒修改的話,建議可以多等一下或是使用無痕模式看看。 ↩︎

Read more

Aer Go Pack 2 超方便的旅行/筆電後背包

Aer Go Pack 2 超方便的旅行/筆電後背包

由於我在 2020 買的 incase ICON lite II 在用了 4 年後拉鏈脫軌了,然後去找修理包包的店維修他說換拉鏈要 $1000 元,就讓我想說也是該物色一顆新包包了。 incase 的這顆包包拿來當上班放筆電用或是外出時的一日包其實沒太多毛病,就只是因為維修費不便宜,加上用了太久了想說可以換個新風格。 我這次在挑選包包的時候預算大概抓在 $5000 內,並且除了看得順眼(這是必須的吧!)之外,遵循了幾個原則下去找 1. 需要可以放我的 MacBook Pro 13 吋筆電 2. 包包頂部有收納可以讓我放一些小物方便我快速拿取(AirPods Pro, 騎車時放手機) 3. YKK 拉鍊(因為這次包包壞掉是從拉鍊開始壞) 於是我就開始在網路上爬文尋找符合以上條件的包包。但不論在 PTT 或是 Mobile01,大家推的牌子不外乎就是 Incase、Targus、Samsonite 等這些常見品牌,

工作與生活之間的抉擇,自我探索中...

工作與生活之間的抉擇,自我探索中...

興趣能夠當飯吃嗎?工作可以變成興趣嗎?這一直是個大哉問,永遠可以拿來思辨的問題。 在 [[2024-10-10]] 聽了《曼報 Manny's Newsletter》的《EP83|心理摩擦力:不是你不好,是他不要》前面的閒聊在談論說 2 年前有讀者問曼尼「興趣和工作怎麼選擇」後,就對這件事有感而發。 由於自己從今年 6 月開始自己轉變爲自由工作者,跟在職場上班時的生活樣態比起來變得非常不一樣,就一直在思考工作和生活對於我的意義是什麼。 這四個月來我歷經了接案收入不如預期加上股市同期間崩跌、颱風假(第一次颱風假時心裡有點不平衡)、有人試著找我回職場上班(讓我更認真思考了現狀是不是我要的)等事件,總覺得自己好像有漸漸地找到了一個讓身心靈相對平衡的狀態。 興趣和工作,我該選哪個? 興趣可以當飯吃嗎? 以我的人生經驗來說,我認為興趣就是「你會想要主動鑽研的事情」。 當你能從某件事情中取得成就感,不論這個成就感的來源是金錢、他人稱讚、解決難題或是把清單完結等,你就會想要把這件事情持續鑽研下去。興趣就是一個這麼正向循環的存在。 所以興趣不見得能夠當飯吃,還是要取決於這個興趣有沒

Follow,不只是 RSS 閱讀器,還是目前做強大的訊息訂閱管理工具

Follow,不只是 RSS 閱讀器,還是目前做強大的訊息訂閱管理工具

不知道現在還有多少人在用 RSS 閱讀器?或是大家對於 RSS 的了解有多少? 在這個社群媒體「演算法」無所不在的年代中,RSS 閱讀器 (1) 如實的依照你的訂閱源(新聞媒體、Blog 等)發佈的所有文章按照時間順序做排序,不會因為今天我點了狗狗的貼文讚,隔天我就看到很多狗狗出現在我的動態牆上;(2) 它也不會像社群媒體一樣永遠滑不完,因為你所能看到的資訊總數跟你的訂閱源發佈的文章數量有關。 我覺得「突破同溫層」以及「數量有限」這兩個 RSS 閱讀器的優點讓我覺得非常難能可貴,這也是我持續一直在使用的問題。(在 Follow 出現前我是使用 Silvio Rizzi 開發的 Reeder Classic,也是一套非常棒的 RSS 閱讀器) 然而現在 RSS 閱讀器遇到一個很大的問題,就是很大多數的網站不再提供官方的 RSS 訂閱源,因為如果大家都透過 RSS 閱讀器瀏覽他們發佈的文章,

漢方保養品「肌本職」使用心得

漢方保養品「肌本職」使用心得

先說本篇文有一點點半葉配?因為「肌本職」這個品牌是我目前服務的客戶之一,但因為自己使用這個品牌覺得真的體驗蠻好的,加上使用了將近 2 個多月,最近跟前同事吃飯的時候他們看到我竟然說「你最近皮膚變好了耶!」雖然不確定皮膚變好是因為離開了之前壓力比較大的工作還是因為抹保養品,但我先把它當作後者的功勞吧!因為現在的工作型態也還是有壓力,所以想說可以來推薦「肌本職」這個保養品牌給大家。 初次看到肌本職的印象 第一次看到這個品牌的印象是用中草材當作保養品的基底好像蠻厲害的,尤其是產品是跟中醫師共同研發的,好像真的可以從「根本」來解決肌膚問題,因為中醫最有名的就是調理。 痘痘肌困擾選擇三黃精華 因為我自己長期有痘痘肌的困擾,所以我第一次入手的就是「三黃無酸煥膚精華」、「三黃無酸淨痘精華乳」,在這之前我都是買 Bffect 的保養品。 關於無酸類抹痘痘的保養品,依照我的認知就是可以早、晚都抹而已。使用了兩個月來,說真的早晚都有抹,痘痘感覺有好比較快,如果是比較淺的痘痘(還是粉刺?)的話通常隔天或兩天後就不見了,比想像中還厲害:但如果是深層的痘痘就真的要用比較久,也是有到現在還尚未完全好