前言
Hexo 是一個快速、簡潔且高效的網誌框架。Hexo 使用 Markdown (或其他渲染引擎)解析文章,在幾秒內,即可利用靚麗的主題生成靜態網頁。即把使用者的markdown檔,按照指定的主題解析成靜態網頁。
前期環境準備
硬件部份:
軟件部份:
安裝hexo
輸入如下指令檢視hexo和npm是否安裝:
~ node -v && npm -v
v18.12.1
8.19.2
使用nodejs的npm安裝包管理工具安裝hexo,指令如下
~ npm install -g hexo-cli
檢視是否安裝成功
~ hexo -v
hexo-cli: 4.3.0
os: linux 5.15.61-v8+ Debian GNU/Linux 11 (bullseye) 11 (bullseye)
node: 18.12.1
v8: 10.2.154.15-node.12
uv: 1.43.0
zlib: 1.2.11
brotli: 1.0.9
ares: 1.18.1
modules: 108
nghttp2: 1.47.0
napi: 8
llhttp: 6.0.10
openssl: 3.0.7+quic
cldr: 41.0
icu: 71.1
tz: 2022b
unicode: 14.0
ngtcp2: 0.8.1
ngh
出現版本資訊說明安裝成功
Hexo生成網頁
兩個工具就緒後我們開始生成靜態網頁:
我們首先建立一個資料夾,用來存放網頁數據
~ mkdir /home/hexo
~ cd /home/hexo
~ hexo init
~ npm install
~ ls
_config.butterfly.yml _config.landscape.yml db.json node_modules package.json scaffolds themes
_config.butterfly.yml.save _config.yml hexo_run.js package-lock.json public source
然後資料夾就有了Hexo的源碼了
這個就是網站的跟目錄
使用hexo生成程式碼指令
hexo g
然後開啟本地埠存取
hexo server
在瀏覽器輸入如下內容,就可以本地存取Hexo生成的網頁程式碼了:
localhost:4000
hexo結構詳解
_config.yml
網站的配置資訊,您可以在此配置大部份的參數。 配置參數講解
package.json
應用程式的資訊,以及需要安裝的模組資訊。
scaffolds
模版資料夾。新建文章時,Hexo 會根據 scaffold 中的樣版檔來建立新的檔。 Hexo的樣版是指在新建的markdown檔中預設填充的內容 。例如,如果修改scaffold/post.md中的Front-matter內容,那麽每次新建一篇文章時都會包含這個修改。也就是說,透過hexo命令每新建一個文章,都會包含指定樣版檔中的內容。
官網樣版詳述
source
資源資料夾是存放使用者資源的地方,如markdown文章。
Markdown 和 HTML 檔會被解析並放到
public
資料夾
,而其他檔會被拷貝過去。
_posts
資料夾之外,開頭命名為
_
(底線)的檔 / 資料夾和隱藏的檔將會被忽略。
themes
主題資料夾。Hexo 會根據主題來解析source目錄中的markdown檔生成靜態頁面。 官網主題詳述
寫作
可以執行下列命令來建立一篇新文章。
$ hexo new [
layout]
<title>
可以在命令中指定文章的布局(layout),不指定預設為
post
,也可以透過修改
_config.yml
中的
default_layout
參數來指定預設布局。
建立的新文章會自動加上指定布局對應的樣版檔中的內容。
布局(Layout)
Hexo 有三種預設布局:
post
、
page
和
draft
,它們分別對應不同的路徑,而自訂的其他布局和
post
相同,都將儲存到
source/_posts
資料夾。
布局路徑
postsource/_postspagesourcedraftsource/_drafts
layout:
設為
false
。
模版(Scaffold)
在新建文章時,Hexo 會根據
scaffolds
資料夾內相對應的檔來建立檔,例如:
$ hexo new photo "My Gallery"
在執行這行指令時,Hexo 會嘗試在
scaffolds
資料夾中尋找
photo.md
,並根據其內容建立文章
,以下是您可以在模版中使用的變量:
變量描述
layout
布局
title
標題
date
檔建立日期
Front-matter
Front-matter是檔最上方以
---
分隔的區域,用於指定個別檔的變量,舉例來說:
---
title: Hello World
date: 2013/7/13 20:46:25
---
title: Hello World
冒號需要有一個空格,當然除YAML 外,你也可以使用 JSON 來編寫 Front-matter。
以下是預先定義的參數,您可在樣版中使用這些參數值並加以利用。
參數描述預設值layout布局title標題date建立日期檔建立日updatedTime更新日期檔更新日期comments開啟文章的評論功能truetags標簽(不適用於分頁)categories分類(不適用於分頁)permalink覆蓋文章網址
分類和標簽
只有文章支持分類和標簽,您可以在 Front-matter 中設定。在其他系統中,分類和標簽聽起來很接近,但是在 Hexo 中兩者有著明顯的差別: 分類具有順序性和層次性而標簽沒有順序和層次 。
categories:
- Diary
tags:
- PS3
- Games
會使分類
Life
成為
Diary
的子分類,而不是並列分類。因此,有必要為您的文章選擇盡可能準確的分類.
文章摘要
設定文章摘要,我們只需在想顯示為摘要的內容之後添
<!-- more -->
即可。像下面這樣:
---
title: hello hexo markdown
date: 2016-11-16 18:11:25
tags:
- hello
- hexo
- markdown
---
我是短小精悍的文章摘要(๑•̀ㅂ•́) ✧
<!-- more -->
緊接著文章摘要的正文內容
這樣,
<!-- more -->
之前、文件配置參數之後中的內容便會被渲染為站點中的文章摘要。
資源參照
寫個網誌,有時候會想添加個圖片或者其他形式的資源等等。有以下兩種方式進行解決:
- 使用絕對路徑參照資源,在 Web 世界中就是資源的 URL
- 使用相對路徑參照資源
對於使用相對路徑參照資源的,我們可以使用 Hexo 提供的 資源資料夾 功能。
使用文字編輯器開啟站點根目錄下的
_ config.yml
檔,將
post_asset_folder
值設定為
true
。
post_asset_folder: true
修改之後會開啟 Hexo 的文章資原始檔管理功能。Hexo 將會在我們每一次透過
hexo new <title>
命令建立新文章時自動建立一個同名資料夾,於是我們便可以將文章所參照的相關資源放到這個同名資料夾下,然後透過相對路徑參照。例如,你把一個
example.jpg
圖片放在了這個同名資料夾中,使用相對路徑的常規 markdown 語法
![](./example.jpg)
即可存取 。
網站釋出
首先執行下列命令生成相應的靜態網頁,生成的靜態網頁以及相關資源都會在
public
目錄下
$ hexo generate
用hexo-server
hexo-server模組的主要命令如下,輸入以下命令以啟動伺服器,您的網站會在
http://localhost:4000
下啟動。在伺服器啟動期間,Hexo 會監視檔變動並自動更新,您無須重新開機伺服器。
$ hexo server
如果您想要更改埠,或是在執行時遇到了
EADDRINUSE
錯誤,可以在執行時使用
-p
選項指定其他埠,如下:
$ hexo server -p 5000
編輯自己的網誌
如何添加自己的網誌
例如新建一篇名為:【my_blog】的網誌,輸入新建命令:
hexo new 'myblog'
執行完成後檢視source/_post資料夾會發現已經生成了myblog.md檔
最後重新開機hexo就可以看到啦!
~ hexo g
~ hexo s
網誌的部署
安裝 Nginx
sudo apt-get install nginx
啟動Nginx
sudo nginx start
啟動,停止和重新載入Nginx配置
要啟動nginx,請執行可執行檔。 當nginx啟動後,可以透過使用
-s
參數呼叫可執行檔來控制它。 使用以下語法:
nginx -s signal
訊號(
signal
)的值可能是以下之一:
stop
- 快速關閉服務
quit
- 正常關閉服務
reload
- 重新載入配置檔
reopen
- 重新開啟日誌檔
例如,要透過等待工作行程完成服務當前請求來停止
nginx
行程,可以執行以下命令:
nginx -s quit
在將重新配置命令的命令發送到nginx或重新啟動之前,配置檔中的更改將不會被套用。 要重新載入配置檔,請執行:
nginx -s reload
當主行程收到要重新載入配置的訊號,它將檢查新配置檔的語法有效性,並嘗試套用其中提供的配置。 如果這是成功的,主行程將啟動新的工作行程,並向舊的工作行程發送訊息,請求它們關閉。 否則,主行程回滾更改,並繼續使用舊配置。 老工作行程,接收關閉命令,停止接受新連線,並繼續維護當前請求,直到所有這些請求得到維護。 之後,舊的工作行程結束。
部署靜態頁面
安裝完成之後了解下nginx的安裝位置(每個版本都可能存在差異)
whereis nginx
其中/usr/sbin/nginx 為執行指令所在位置; /etc/nginx 為nginx配置檔所在位置; (1)如何部署頁面 進入/etc/nginx 資料夾,我們重點關註sites-available和sites-enabled 轉譯過來就是【可以啟用的站點】和【已經啟用的站點】
使用FTP工具登入到伺服器之後可以看到 sites-enabled 下面預設有一個default,但是上面有一個類似捷徑的圖示,實際上這是一個軟連結,連結的檔在 sites-available中
tips:當我們更改sites-available中的default檔後,會發現sites-enabled中的default檔也同步改變了
我們可以直接修改【sites-available】的default 來設定第一個站點,如下就是default 的設定使用vim指令開啟的情況(如果不熟悉vim指令可以透過FTP工具把這個檔下載下來修改之後再上傳)
其中:
1.listen 9999:表示監聽9999埠
2.root /var/www/html/bigDataweb :表示站點的目錄放在/var/www/html/bigDataweb資料夾下面
所以我們只需要把我們搭建網誌中的public資料夾的位置替換掉上面的就行了