建站神器:Hexo+Kaze+Gitee Pages 搭建靜態(tài)博客網(wǎng)站
時間:2023-07-08 20:42:01 | 來源:網(wǎng)站運營
時間:2023-07-08 20:42:01 來源:網(wǎng)站運營
建站神器:Hexo+Kaze+Gitee Pages 搭建靜態(tài)博客網(wǎng)站:
前言
建網(wǎng)站本身是一個很大的工程,涉及前端頁面的搭建,網(wǎng)站數(shù)據(jù)的存儲,還要購置服務(wù)器資源,甚至是后期的維護,過程相當(dāng)繁瑣。
不過如果僅僅是想搭建個人的網(wǎng)站,寫寫博客,想要美觀,又不想操心太多和寫博客無關(guān)的事情。那么,Hexo + Kaze + Gitee Pages 的方式就很適合你。
本文就講下如何借助這三樣免費的技術(shù)或服務(wù),來搭建一個可訪問的靜態(tài)博客網(wǎng)站。
Hexo 簡介
Hexo 是什么?
Hexo[1] 是一個快速,簡單且功能強大的博客框架。如果你用 Markdown 寫博客,Hexo 可以在幾秒內(nèi)生成帶有精美主題的靜態(tài)文件。
Hexo 安裝
前置要求
- Node.js(版本 10.13 以上,建議使用 12.0 以上版本)
- Git
安裝 Git
- Windows:下載并安裝 git[2]。
- Mac:使用 Homebrew[3] 安裝。
- Linux(Ubuntu,Debian):
sudo apt-get install git-core
- Linux(Fedora,Red Hat,CentOS):
sudo yum install git-core
安裝 Node.js
Node.js 為大多數(shù)平臺提供了
官方安裝程序[4]。
替代安裝方法:
- Windows:使用 nvs[5] 安裝它。
- Mac:使用 Homebrew[6] 安裝。
- Linux(基于DEB / RPM):與 NodeSource[7] 一起安裝。
- 其他:通過相應(yīng)的軟件包管理器進(jìn)行安裝。請參閱 Node.js 提供的指南[8]。
安裝 Hexo
用 npm 安裝 Hexo。
npm install -g hexo-cli
使用以下指令查看是否安裝成功。
hexo version
如果你想卸載 Hexo,使用以下指令:
npm uninstall -g hexo-cli
運行 hexo
安裝后,你可以通過
hexo <command>
運行 Hexo。比如通過
hexo help
指令來獲取使用幫助。
hexo help
幫助里提到
hexo init
命令可以創(chuàng)建一個新的 Hexo 文件夾,這個文件夾其實就是利用 Hexo 生成的站點信息了。接下來講下怎么建站。
Hexo 建站
初始化操作
使用
hexo init <folder>
指令就可以在指定文件夾下建立站點信息,我一般用域名做名稱,如下:
hexo init java4u.cn
站點初始化中:
站點初始化完成,會生出指定的文件夾:
目錄結(jié)構(gòu)
進(jìn)入該站點,我們看下目錄結(jié)構(gòu),如下:
這些文件有著各自的職責(zé):
- _config.landscape.yml:自定義的主題配置文件,此處的 landscape 是默認(rèn)主題。配置其他主題可以參考這種方式。
- _config.yml:站點全局的配置文件。
- node_modules:node 模塊文件夾。包含可執(zhí)行文件和依賴的資源。
- package-lock.json:node_modules 文件中所有模塊的版本信息,模塊來源。
- package.json:Hexo 框架的基本參數(shù)信息以及它所依賴的插件。
- scaffolds:scaffolds 原意是腳手架,這里可以理解為模板文件夾。當(dāng)你創(chuàng)建新的文章時,Hexo 會根據(jù)該文件夾下的對應(yīng)文件進(jìn)行初始化構(gòu)建。
- source:資源文件夾。這里是你放自己資源比如博文和圖片的地方。
_posts
文件夾下的 Markdown 和 HTML 文件會被解析并放到 public
文件夾下。其他文件或文件夾,如果開頭命名不是 _
(下劃線),也都會被拷貝過去。 - themes:主題文件夾。Hexo 會根據(jù)主題來生成靜態(tài)頁面。
基于這樣的結(jié)構(gòu),Hexo 就具備了生成靜態(tài)網(wǎng)站的能力。
本地啟動
我們先本地啟動,看下實際效果。輸入以下命令:
hexo server
Hexo 會啟動服務(wù),將默認(rèn)生成的網(wǎng)站運行在本機的 4000 端口上,可以直接訪問
http://localhost:4000
就能看到網(wǎng)站首頁,它基于默認(rèn)主題生成,同時有一篇默認(rèn)文章。
這個頁面只是官方提供的一個樣例,看到它就意味著你本地環(huán)境跑通了。我們可以通過修改配置的方式,對頁面相關(guān)元素做調(diào)整。
核心配置
以下是我們需要了解或者修改的配置信息。
package.json
這個文件列出了 Hexo 的基本參數(shù)信息以及它所依賴的插件。它幫助我們對 Hexo 整體有個基本的了解,無需修改??梢钥吹剑?b>EJS[9],
Stylus[10] 和
Markdown[11] 渲染器都是默認(rèn)安裝的。
{ "name": "hexo-site", "version": "0.0.0", "private": true, "scripts": { "build": "hexo generate", "clean": "hexo clean", "deploy": "hexo deploy", "server": "hexo server" }, "hexo": { "version": "" }, "dependencies": { "hexo": "^5.0.0", "hexo-generator-archive": "^1.0.0", "hexo-generator-category": "^1.0.0", "hexo-generator-index": "^2.0.0", "hexo-generator-tag": "^1.0.0", "hexo-renderer-ejs": "^1.0.0", "hexo-renderer-marked": "^3.0.0", "hexo-renderer-stylus": "^2.0.0", "hexo-server": "^2.0.0", "hexo-theme-landscape": "^0.0.3" }}
如果后邊要切換主題,記得把最后一個默認(rèn)的主題依賴刪除掉。
_config.yml
可設(shè)置網(wǎng)站、網(wǎng)址、目錄、文章、分類&標(biāo)簽、日期/時間格式、分頁和擴展等信息。
網(wǎng)址
URL
目錄
文章
分類 & 標(biāo)簽
日期/時間格式
Hexo 使用
Moment.js[18] 來解析和顯示時間。
分頁
擴展
【主題】
【部署】
配置如下:
deploy: type: git repo: <repository url> #https://bitbucket.org/JohnSmith/johnsmith.bitbucket.io branch: [branch] message: [message]
常用指令
創(chuàng)建文章
使用以下指令:
hexo new "test"
或者簡寫:
hexo n "test"
運行服務(wù)器
輸入以下命令以啟動服務(wù)器,您的網(wǎng)站會在
http://localhost:4000
下啟動。在服務(wù)器啟動期間,Hexo 會監(jiān)視文件變動并自動更新,您無須重啟服務(wù)器。
hexo server
或者簡寫:
hexo s
生成靜態(tài)文件
hexo generate
或者簡寫
hexo g
監(jiān)視文件變動立即重新生成。該操作會阻塞命令。
hexo g --watch
生成完畢后自動部署網(wǎng)站。
hexo generate --deploy
部署
Hexo 提供了快速方便的一鍵部署功能,讓你只需一條命令就能將網(wǎng)站部署到服務(wù)器上。
hexo deploy
或者簡寫為:
hexo d
Hexo 主題
為什么選擇 Kaze
Hexo 默認(rèn)主題為 landscape,但我覺得不夠美觀,這里推薦
kaze[21] ,它有以下特性:
- 響應(yīng)式設(shè)計,適配桌面端、平板、手機等各種設(shè)備
- 前端性能優(yōu)化,加載快速,眨眼之間即可加載完成
- 圖片懶加載,應(yīng)用懶加載技術(shù)加快頁面的生成速度
- 資源壓縮,提升本地資源請求速度
- 精簡設(shè)計,不包含 Jquery 等額外庫
- 支持側(cè)邊欄小組件,例如最近文章,作者卡片
- 暗黑模式,享受黑夜的魅力
- 代碼高亮,支持 prismjs
- 公式渲染,支持 katex 和 mathjax
- 評論系統(tǒng),集成 valine、gitalk 和 livere
- 訪問量統(tǒng)計和谷歌分析支持
安裝 Kaze
在
your site/themes
下輸入
cd themesgit clone https://github.com/theme-kaze/hexo-theme-Kaze.git
安裝成功后,會生出目錄:hexo-theme-Kaze。
修改站點配置文件
_config.yml
下的主題值為:hexo-theme-Kaze。
用
hexo server
啟動 Hexo 服務(wù)看下效果。
會看到已經(jīng)生成了默認(rèn)的主題,只是很多東西都沒有,需要改造一下。
主題配置
可在該主題目錄下的
_config.yml 文件里配置。
主題顏色
在
color 中進(jìn)行配置,以下是默認(rèn)值。
color: text-color: "#3c4858" text-strong-color: "#2f3d4e" text-light-color: "#909faf" divider-color: "#e6e8ee" title-color: "#475b6d" link-color: "#3273dc" link-hover-color: "#6596e5" info-text-color: "#909faf" widget-background-color: "#fff" body-background-color: "#f2f5f8" border-color: "#e1e4e9" pre-color: "#2d2d2d" code-color: "#50687c" code-background-color: "#e9eaf0"
字號與字體
在
font 中進(jìn)行配置,以下是默認(rèn)值。
font: font-size: 16px # global font-size font-family: '-apple-system,BlinkMacSystemFont,"Segoe UI","Helvetica Neue","PingFang SC","Microsoft YaHei",sans-serif' # global font-family
站點訪問量統(tǒng)計
訪問量統(tǒng)計目前僅支持不蒜子,默認(rèn)關(guān)閉,可統(tǒng)計站點總訪問量和總訪客數(shù)。
footer: #------------------------ # pv / uv statistics config #------------------------ statistics: enable: false type: busuanzi # now version only supports busuanzi pv: enable: true style: 本站總訪問量{}次 # the style will be shown as $1{pv}$2 uv: enable: true style: 本站總訪客數(shù){}次 # the style will be shown as $1{uv}$2
數(shù)據(jù)分析
analytics: enable: false type: google # google google: id:
enable
開啟分析支持(默認(rèn)關(guān)閉)
type` 目前僅支持 `google
google.id
有關(guān)谷歌分析的具體使用說明和
id
使用可以參考
谷歌文檔[22]首頁
文章頭圖
在文章
Front-matter
中
banner_img
可以設(shè)置首頁頭圖
小組件
widgets: showWidgetsMobiles: "none"
showWidgetsMobiles
: 在窄屏幕上是否顯示小組件,
none
關(guān)閉(默認(rèn)),
flex
開啟
關(guān)于
關(guān)于頁面需要自行創(chuàng)建,在站點
source
中新建
about
文件夾并在文件夾內(nèi)創(chuàng)建
index.md
,該文件至少需要包含
# at ${yoursite}/about/index.md---title: 關(guān)于layout: about---
社交鏈接
在 about 下的
social_links
中進(jìn)行配置,主題圖標(biāo)依賴于
iconfont[23],內(nèi)置了一部分社交圖標(biāo),你可以自定義其他icon文件或者解決方案來添加自定義圖標(biāo)。
about: description: description social_links: - { icon: icon-github, link: https://xxx} # - { icon: icon, link: your link }
友鏈
友鏈格式按如下填寫即可生成友鏈頁面
links: example-name-1: url: https://example.com avatar: https://example.com/avatar.jpg example-name-2: url: https://example.com avatar: https://example.com/avatar.jpg
文章頁
搜索功能
search: enable: true path: search.json field: posts searchContent: true
enable
開啟搜索功能(默認(rèn)開啟)path
文件名稱(暫無用處)field
需要搜索的范圍,支持 posts | pages | allsearchContent
搜索文件是否包含正文內(nèi)容(不建議開啟,包含所有文章內(nèi)容這樣會使得搜索文件異常巨大)替代方案是搜索分類標(biāo)簽或使用algolia等第三方搜索服務(wù)(Todo)
目錄
主題目錄通過Hexo原生函數(shù)生成,具體可參見
文檔[24]toc: showListNumber: false maxDepth: 6 minDepth: 1
showListNumber
是否生成編號
maxDepth
TOC最大深度
minDepth
TOC最小深度
代碼高亮
參見代碼
高亮文檔[25]數(shù)學(xué)公式
主題支持
mathjax
和
katex
兩種渲染引擎,具體參見
相關(guān)文檔[26]copyright
copyright: enable: true writer: # if writer is empty we will use config.author as writer declare: 本博客所有文章除特別聲明外,均采用<a target="_blank" rel="noopener" href="https://creativecommons.org/licenses/by-nc-sa/4.0/deed.zh">CC BY-NC-SA 4.0 協(xié)議</a>。轉(zhuǎn)載請注明出處! style: warning
enable
開起版權(quán)說明(默認(rèn)開啟)
writer` 作者id,如果不填則會使用主題配置`author`或站點配置`author
declare
版權(quán)聲明具體內(nèi)容,支持 html 語句
style
聲明內(nèi)容樣式,與 note 樣式相同
版權(quán)內(nèi)容有三部分:作者、文章鏈接、版權(quán)聲明
作者使用 writer 參數(shù),文章鏈接基于站點配置文件中
url
參數(shù)生成,版權(quán)聲明使用 declare 參數(shù)
Front-matter
banner_img
設(shè)置文章與首頁頭圖
banner_img_set
在圖片加載時預(yù)先加載的圖片,可以設(shè)置為 loading 圖或縮略圖等
excerpt
為文章設(shè)置在首頁顯示的簡介,還可以通過
<!--more-->
來控制顯示
評論
支持
valine
,
gitalk
和
livere
具體設(shè)置可參考主題配置文檔說明和相關(guān)評論插件文檔
字?jǐn)?shù)統(tǒng)計
主題集成
hexo-wordcount[27] 插件,在主題配置文件中設(shè)置
wordcount: enable: true
開啟(默認(rèn)開啟)
圖片畫廊
圖片畫廊功能基于
fslightbox[28],在主題配置文件中設(shè)置
fslightbox: enable: true
開啟(默認(rèn)開啟)
標(biāo)簽插件
主題集成了一些標(biāo)簽方便書寫
note
在
markdown
文件中如下書寫即可
{% note style %}...markdown content{% endnote %}
有五種樣式可以選擇,
primary
,
success
,
info
,
warning
,
danger
備案信息
您可以在主題配置文件內(nèi)增加您的備案信息。
footer: #------------------------ # 備案配置 # 請將公安備案的縮略圖置于 ${yoursite}/img/beian.png RecordInfo: "" # '某ICP備xxx號' govRecordInfo: "" # '某公網(wǎng)安備xxx號' govRecordUrl: "" # 公網(wǎng)安備案信息地址 #------------------------
站點托管
為什么選擇 Gitee Pages
GitHub 和 Gitee 都提供免費的靜態(tài)網(wǎng)頁托管服務(wù)。我們可以使用 GitHub Pages 或 Gitee Pages 托管博客、項目官網(wǎng)等靜態(tài)網(wǎng)頁,這樣就省去了購買服務(wù)器的錢,也不需要耗費太多精力維護。
GitHub Pages 使用很廣泛,我之前也用過,不過訪問不夠穩(wěn)定,會影響頁面加載速度。Gitee 是國內(nèi)版的 GitHub,訪問速度優(yōu)秀,并且國內(nèi)發(fā)展勢頭不錯,因此我選取 Gitee Pages 來托管我的網(wǎng)站。
建立倉庫
申請一個 Gitee 賬號,創(chuàng)建一個新的倉庫,倉庫名盡量和賬號名一致,這樣可以避免一些因為路徑引發(fā)的問題。
然后在倉庫首頁服務(wù)一欄開啟 Gitee Pages 服務(wù)。
開啟后,你就擁有了專屬的二級域名網(wǎng)址。
注意:倉庫內(nèi)容有變化,需要手動觸發(fā)更新,頁面才能真正生效。
連接倉庫
- 安裝 hexo-deployer-git[29]。
npm install hexo-deployer-git --save
- 修改配置。
deploy: type: git repo: git@gitee.com:java4u/java4u.git
注意上面的 repo 地址并不是倉庫的地址,而是你下載/克隆項目時彈出的那個地址,type 如果是 git 就選擇 SSH。
- 生成/添加 SSH 公鑰
Gitee 、GitHub 提供了基于 SSH 協(xié)議的 Git 服務(wù),在使用 SSH 協(xié)議訪問倉庫倉庫之前,需要先配置好賬戶/倉庫的 SSH 公鑰。
先看下自己有沒有配置過用戶名和郵箱:
git config --global user.name git config --global user.email
如果沒有就做下配置:
# 設(shè)置郵箱git config --global user.email *********@qq.com # 設(shè)置用戶名git config --global user.name '****'
然后本地生成 SSH 公鑰,郵箱為剛配置好的賬戶:
ssh-keygen -t rsa -C yong__1994@163.com
生成后可查看 SSH 公鑰:
cat ~/.ssh/id_rsa.pub
復(fù)制公鑰去 Gitee 粘貼,添加。
測試是否連接成功:
ssh -T git@gitee.com
上傳倉庫
執(zhí)行部署命令,即可將本地資源上傳遠(yuǎn)程倉庫。
hexo d
手動更新
遠(yuǎn)程倉庫雖然可以看到提交記錄,但靜態(tài)網(wǎng)站不會感知到實時變更,需要去 Gitee Pages 服務(wù)頁面做下更新。
稍等片刻,訪問
https://java4u.gitee.io/ 即可看到 Hexo 結(jié)合 kaze 主題搭建的靜態(tài)網(wǎng)站。
參考資料
[1]
Hexo:
https://hexo.io/docs/[2]
git:
https://git-scm.com/download/win[3]
Homebrew:
https://brew.sh/[4]
官方安裝程序:
https://nodejs.org/en/download/[5]
nvs:
https://github.com/jasongin/nvs/[6]
Homebrew:
https://brew.sh/[7]
NodeSource:
https://github.com/nodesource/distributions[8]
指南:
https://nodejs.org/en/download/package-manager/[9]
EJS:
https://ejs.co/[10]
Stylus:
http://learnboost.github.io/stylus/[11]
Markdown:
http://daringfireball.net/projects/markdown/[12]
時區(qū)列表:
https://en.wikipedia.org/wiki/List_of_tz_database_time_zones[13]
永久鏈接:
https://hexo.io/zh-cn/docs/permalinks[14]
permalink
:
https://hexo.io/zh-cn/docs/variables[15]
Asset 文件夾:
https://hexo.io/zh-cn/docs/asset-folders[16]
Highlight.js:
https://hexo.io/docs/syntax-highlight#Highlight-js[17]
PrismJS:
https://hexo.io/docs/syntax-highlight#PrismJS[18]
Moment.js:
http://momentjs.com/[19]
updated
:
https://hexo.io/zh-cn/docs/variables#頁面變量[20]
Meta generator:
https://developer.mozilla.org/zh-CN/docs/Web/HTML/Element/meta#屬性[21]
kaze:
https://demo.theme-kaze.top/[22]
谷歌文檔:
https://analytics.google.com/[23]
iconfont:
https://www.iconfont.cn/[24]
文檔:
https://hexo.io/docs/helpers#toc[25]
高亮文檔:
https://demo.theme-kaze.top/highlight/[26]
相關(guān)文檔:
https://demo.theme-kaze.top/latex/[27]
hexo-wordcount:
https://github.com/willin/hexo-wordcount[28]
fslightbox:
https://fslightbox.com/[29]
hexo-deployer-git:
https://github.com/hexojs/hexo-deployer-git