部落格搭建
準備環境
Node.js 下載,並安裝。詳細步驟:www.simon96.online/2018/11/10/…
Git 下載,並安裝。詳細步驟:www.simon96.online/2018/11/10/…
安裝Hexo,在命令列(即Git Bash)執行以下命令:
npm install -g hexo-cli
初始化Hexo,在命令列(即Git Bash)依次執行以下命令即可:
以下,即存放Hexo初始化檔案的路徑, 即站點目錄。
1 2 3 複製程式碼
$ hexo init <folder> $ cd <folder> $ npm install 複製程式碼
新建完成後,在路徑下,會產生這些檔案和資料夾:
1 2 3 4 5 6 7 8 複製程式碼
. ├── _config.yml ├── package.json ├── scaffolds ├── source | ├── _drafts | └── _posts └── themes 複製程式碼
注:
hexo相關命令均在站點目錄下,用Git Bash執行。
站點配置檔案:站點目錄下的
_config.yml
。 路徑為
<folder>\_config.yml
主題配置檔案:站點目錄下的
themes
資料夾下的,主題資料夾下的_config.yml
。 路徑為
<folder>\themes\<主題資料夾>\_config.yml
啟動伺服器。在路徑下,命令列(即Git Bash)輸入以下命令,執行即可:
hexo server
瀏覽器訪問網址:
http://localhost:4000/
至此,您的Hexo部落格已經搭建在本地。
實施方案
方案一:GithubPages
建立Github賬號
建立倉庫, 倉庫名為:<Github賬號名稱>.github.io
將本地Hexo部落格推送到GithubPages
3.1. 安裝
hexo-deployer-git
外掛。在命令列(即Git Bash)執行以下命令即可:1 複製程式碼
$ npm install hexo-deployer-git --save 複製程式碼
3.2. 新增SSH key。
建立一個 SSH key 。在命令列(即Git Bash)輸入以下命令, 回車三下即可:
1 複製程式碼
$ ssh-keygen -t rsa -C "郵箱地址" 複製程式碼
新增到 github。 複製金鑰檔案內容(路徑形如
C:\Users\Administrator\.ssh\id_rsa.pub
),貼上到New SSH Key即可。測試是否新增成功。在命令列(即Git Bash)依次輸入以下命令,返回“You’ve successfully authenticated”即成功:
1 2 複製程式碼
$ ssh -T git@github.com $ yes 複製程式碼
3.3. 修改
_config.yml
(在站點目錄下)。檔案末尾修改為:1 2 3 4 5 6 複製程式碼
# Deployment ## Docs: https://hexo.io/docs/deployment.html deploy: type: git repo: git@github.com:<Github賬號名稱>/<Github賬號名稱>.github.io.git branch: master 複製程式碼
注意:上面倉庫地址寫ssh地址,不寫http地址。
3.4. 推送到GithubPages。在命令列(即Git Bash)依次輸入以下命令, 返回
INFO Deploy done: git
即成功推送:1 2 複製程式碼
$ hexo g $ hexo d 複製程式碼
等待1分鐘左右,瀏覽器訪問網址:
https://<Github賬號名稱>.github.io
至此,您的Hexo部落格已經搭建在GithubPages, 域名為https://<Github賬號名稱>.github.io
。
方案二:GithubPages + 域名
在方案一的基礎上,新增自定義域名(您購買的域名)。
域名解析。
型別選擇為 CNAME;
主機記錄即域名字首,填寫為www;
記錄值填寫為<Github賬號名稱>.github.io;
解析線路,TTL 預設即可。
倉庫設定。
2.1. 開啟部落格倉庫設定:
https://github.com/<Github賬號名稱>/<Github賬號名稱>.github.io/settings
2.2. 在Custom domain下,填寫自定義域名,點選
save
。2.3. 在站點目錄的
source
資料夾下,建立並開啟CNAME.txt
,寫入你的域名(如www.simon96.online
),儲存,並重新命名為CNAME
。等待10分鐘左右。
瀏覽器訪問自定義域名。
至此,您的Hexo部落格已經解析到自定義域名,
https://<Github賬號名稱>.github.io
依然可用。
方案三:GithubPages + CodingPages + 域名
GithubPages 在國內較慢,百度不收錄,而CodingPages 在國外較快。所以在方案二的基礎上,新增CodingPages 。
建立Coding賬號
建立倉庫, 倉庫名為:<Coding賬號名稱>
進入專案裡『程式碼』頁面,點選『一鍵開啟靜態 Pages』,稍等片刻CodingPages即可部署成功。
將本地Hexo部落格推送到CodingPages
4.1. 鑑於建立GithubPages 時,已經生成過公鑰。可直接複製金鑰檔案內容(路徑形如
C:\Users\Administrator\.ssh\id_rsa.pub
), 貼上到新增公鑰。4.2. 測試是否新增成功。在命令列(即Git Bash)依次輸入以下命令,返回“You’ve successfully authenticated”即成功:
1 2 複製程式碼
$ ssh -T git@git.coding.net $ yes 複製程式碼
4.3. 修改
_config.yml
(在存放Hexo初始化檔案的路徑下)。檔案末尾修改為:1 2 3 4 5 6 7 8 9 複製程式碼
# Deployment ## Docs: https://hexo.io/docs/deployment.html deploy: - type: git repo: git@github.com:<Github賬號名稱>/<Github賬號名稱>.github.io.git branch: master - type: git repo: git@git.dev.tencent.com:<Coding賬號名稱>/<Coding賬號名稱>.git branch: master 複製程式碼
4.4. 推送到GithubPages。在命令列(即Git Bash)依次輸入以下命令, 返回
INFO Deploy done: git
即成功推送:1 2 複製程式碼
$ hexo g $ hexo d 複製程式碼
域名解析
新增 CNAME 記錄指向 <Coding賬號名稱>.coding.me
型別選擇為 CNAME;
主機記錄即域名字首,填寫為www;
記錄值填寫為<Github賬號名稱>.coding.me;
解析線路,TTL 預設即可。
新增 兩條A 記錄指向 192.30.252.153和192.30.252.154
型別選擇為 A;
主機記錄即域名字首,填寫為@;
記錄值填寫為192.30.252.153和192.30.252.154;
解析線路,境外或谷歌。
在『Pages 服務』設定頁(
https://dev.tencent.com/u/<Coding賬號名稱>/p/<Coding賬號名稱>/git/pages/settings
)中繫結自定義域名。
至此,您的Hexo部落格已經解析到自定義域名,https://<Github賬號名稱>.github.io
和https://<Coding賬號名稱>.coding.me
依然可用。
主題優化
選擇主題
Hexo預設的主題是landscape,推薦以下主題:
應用主題
- 下載主題
- 將下載好的主題資料夾,貼上到站點目錄的
themes
下。 - 更改站點配置檔案
_config.yml
的theme欄位,為主題資料夾的名稱:
|
|
主題優化
以上主題都有比較詳細的說明文件,本節主要解決主題優化的常見問題。
主題優化一般包括:
設定「RSS」
新增「標籤」頁面
新增「分類」頁面
設定「字型」
問題:引用國外字型映象較慢。
解決:可以改用國內的。將\themes\*\layout_partials\head external-fonts.swig檔案中fonts.google.com改成fonts.lug.ustc.edu.cn。
設定「程式碼高亮主題」
側邊欄社交連結
問題:圖示哪裡找?
解決:Font Awesome
開啟打賞功能
問題:微信支付寶二維碼不美觀,規格不一。
解決:線上生成二維碼
設定友情連結
騰訊公益404頁面
站點建立時間
訂閱微信公眾號
設定「動畫效果」
問題:慢,需要等待 JavaScript 指令碼完全載入完畢後才會顯示內容。
解決:將主題配置檔案_config.yml
中,use_motion欄位的值設為false
來關閉動畫。設定「背景動畫」
主題優化還包括:
新增背景圖
在 themes/*/source/css/_custom/custom.styl 中新增如下程式碼:
|
|
修改Logo字型
在 themes/*/source/css/_custom/custom.styl
中新增如下程式碼:
|
|
其中字型檔案在 themes/next/source/fonts
目錄下,裡面有個 .gitkeep
的隱藏檔案,開啟寫入你要保留的字型檔案,比如我的是就是寫入 Zitiming.ttf
,具體字型檔自己從網上下載即可。
修改內容區域的寬度
編輯主題的 source/css/_variables/custom.styl
檔案,新增變數:
|
|
網站標題欄背景顏色
開啟 themes/*/source/css/_custom/custom.styl
,在裡面寫下如下程式碼:
|
|
自定義滑鼠樣式
開啟 themes/*/source/css/_custom/custom.styl
,在裡面寫下如下程式碼:
|
|
文章加密訪問
開啟 themes/*/layout/_partials/head.swig
檔案,在 之前插入程式碼:
|
|
寫文章時加上password: *
:
|
|
實現點選出現桃心效果
- 在
/themes/*/source/js/src
下新建檔案click.js
,接著把以下貼上到click.js
檔案中。
程式碼如下:
|
|
- 在
\themes\*\layout\_layout.swig
檔案末尾新增:
|
|
靜態資源壓縮
在站點目錄下:
|
|
安裝gulp外掛:
|
|
在 Hexo
站點下新建 gulpfile.js
檔案,檔案內容如下:
|
|
只需要每次在執行 generate
命令後執行 gulp
就可以實現對靜態資源的壓縮,壓縮完成後執行 deploy
命令同步到伺服器:
|
|
修改訪問URL路徑
預設情況下訪問URL路徑為:domain/2018/10/18/關於本站
,修改為 domain/About/關於本站
。 編輯 Hexo
站點下的 _config.yml
檔案,修改其中的 permalink
欄位:
|
|
博文置頂
安裝外掛
$ npm uninstall hexo-generator-index --save
$ npm install hexo-generator-index-pin-top --save
然後在需要置頂的文章的Front-matter中加上top即可:
|
|
- 設定置頂標誌
開啟:/themes/*/layout/_macro/post.swig,定位到
|
|
在右上角或者左上角實現fork me on github
- 選擇樣式GitHub Ribbons,
- 修改圖片跳轉連結,將
<a href="https://github.com/you">
中的連結換為自己Github連結: - 開啟
themes/next/layout/_layout.swig
檔案,把程式碼複製到<div class="headband"></div>
下面。
主頁文章新增邊框陰影效果
開啟 themes/*/source/css/_custom/custom.styl
,向裡面加程式碼:
|
|
顯示當前瀏覽進度
修改themes/*/_config.yml
,把 false
改為 true
:
|
|
建立分類頁
在終端視窗下,定位到 Hexo
站點目錄下,新建:
|
|
加入 廣告
註冊,複製廣告程式碼
部署到網站。
2.1. 新建
theme/*/layout/_custom/google_ad.swig
,將 AdSense 上的程式碼貼上進去2.2. 頭部。在
theme/*/layout/_custom/head.swig
中也貼上一份2.3. 每篇部落格。在
theme/*/layout/post.swig
裡中在希望看到的地方加上:1 複製程式碼
{% include '_custom/google_ad.swig' %} 複製程式碼
例如:在
<div id="posts" class="posts-expand"> </div>
中間插入,總程式碼如下:1 2 3 4 5 6 複製程式碼
{% block content %} <div id="posts" class="posts-expand"> {{ post_template.render(page) }} {% include '_custom/google_ad.swig' %} </div> {% endblock %} 複製程式碼
等待稽核通過。如果失敗,可再次申請。
新增萌萌噠
安裝外掛
1 複製程式碼
npm install --save hexo-helper-live2d 複製程式碼
複製你喜歡的模型名字: Epsilon2.1
Gantzert_Felixander
haru
miku
ni-j
nico
nietzche
nipsilon
nito
shizuku
tsumiki
wanko
z16
hibiki
koharu
haruto
Unitychan
tororo
hijiki
將以下程式碼新增到主題配置檔案
_config.yml
,修改<你喜歡的模型名字>:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 複製程式碼
live2d: enable: true scriptFrom: local pluginRootPath: live2dw/ pluginJsPath: lib/ pluginModelPath: assets/ tagMode: false log: false model: use: live2d-widget-model-<你喜歡的模型名字> display: position: right width: 150 height: 300 mobile: show: true 複製程式碼
建配置檔案
4.1. 在站點目錄下建資料夾
live2d_models
,4.2. 再在
live2d_models
下建資料夾<你喜歡的模型名字>
,4.3. 再在
<你喜歡的模型名字>
下建json檔案:<你喜歡的模型名字>.model.json安裝模型。在命令列(即Git Bash)執行以下命令即可:
npm install --save live2d-widget-model-<你喜歡的模型名字>
在命令列(即Git Bash)執行以下命令, 在
http://127.0.0.1:4000/
檢視測試結果:hexo clean && hexo g && hexo s
外掛配置
以下外掛(評論系統、資料統計與分析、內容分享服務、搜尋服務)各選一個即可。
評論系統
推薦指數 | 優點 | 缺點 | |
---|---|---|---|
Valine | 4 | 每天30000條評論,10GB的儲存 | 作者評論無標識 |
來必力/livere | 4 | 多種賬號登入 | 評論無法匯出 |
暢言 | 3 | 美觀 | 必須備案域名 |
gitment | 3 | 簡潔 | 只能登陸github評論 |
Disqus | 1 | 需要翻*牆 |
Valine
1.1. 獲取APP ID 和 APP Key
請先登入或註冊 LeanCloud, 進入控制檯後點選左下角建立應用,
進入剛剛建立的應用,選擇左下角的設定
>應用Key
,然後就能看到你的APP ID
和APP Key
了。
1.2. 填寫APP ID 和 APP Key到主題配置檔案_config.yml
1.3. 執行hexo g&&hexo d
推送到部落格。
來必力/livere
2.1. 登陸 來必力 獲取你的 LiveRe UID。
2.2. 填寫LiveRe UID到主題配置檔案_config.yml
暢言
3.1.獲取APP ID 和 APP Key
請先登入或註冊 暢言, 點選“立即免費獲取暢言”,
新建站點,點選管理,點選評論外掛>評論管理,
點選後臺總覽,然後就能看到你的APP ID
和APP Key
了。
3.2. 填寫APP ID 和 APP Key到主題配置檔案_config.yml
3.3. 執行hexo g&&hexo d
推送到部落格。
gitment
4.1. 安裝外掛:
npm i --save gitment
4.2. 申請應用
在New OAuth App為你的部落格應用一個金鑰:
|
|
4.3. 配置
編輯主題配置檔案themes/*/_config.yml
:
|
|
Disqus
編輯 主題配置檔案themes/*/_config.yml
, 將 disqus 下的 enable 設定為 true,同時提供您的 shortname。count 用於指定是否顯示評論數量。
|
|
資料統計與分析
推薦指數 | 優點 | 缺點 | |
---|---|---|---|
不蒜子 | 4 | 可直接將訪問次數顯示在您在網頁上(也可不顯示) | 只計數 |
百度統計 | 3 | 收錄慢 |
不蒜子
編輯 主題配置檔案 themes/*/_config.yml
中的busuanzi_count
的配置項即可。
- 當
enable: true
時,代表開啟全域性開關。 - 若
site_uv
(本站訪客數)、site_pv
(本站訪客數)、page_pv
(本文總閱讀量)的值均為false
時,不蒜子僅作記錄而不會在頁面上顯示。
注意:
|
|
解決辦法:
找到主題呼叫不蒜子的swig檔案。一般在”\themes*\layout_third-party\analytics\busuanzi-counter.swig”
更改域名
1 2 3 4 複製程式碼
把原有的: <script async src="//dn-lbstatics.qbox.me/busuanzi/2.3/busuanzi.pure.mini.js"></script> 域名改一下即可: <script async src="//busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js"></script> 複製程式碼
百度統計
- 登入 百度統計,定位到站點的程式碼獲取頁面
- 複製統計指令碼 id,如圖:
- 編輯 主題配置檔案
themes/*/_config.yml
,修改欄位google_analytics
,值設定成你的統計指令碼 id。
內容分享服務
推薦指數 | 優點 | 缺點 | |
---|---|---|---|
百度分享 | 4 | 穩定 | 不太美觀 |
need-more-share2 | 4 | 美觀 | 更新不及時(比如微信分享API) |
百度分享
編輯 主題配置檔案,新增/修改欄位 baidushare
,值為 true
即可。
|
|
need-more-share2
編輯 主題配置檔案,新增/修改欄位 needmoreshare2
,值為 true
即可。
|
|
搜尋服務
推薦指數 | 優點 | 缺點 | |
---|---|---|---|
Local Search | 4 | 配置方便 | |
Swiftype | 2 | 需註冊 | |
Algolia | 2 | 需註冊 |
Local Search
新增百度/谷歌/本地 自定義站點內容搜尋
安裝
hexo-generator-searchdb
,在站點的根目錄下執行以下命令:1 複製程式碼
$ npm install hexo-generator-searchdb --save 複製程式碼
編輯 站點配置檔案,新增以下內容到任意位置:
1 2 3 4 5 複製程式碼
search: path: search.xml field: post format: html limit: 10000 複製程式碼
編輯 主題配置檔案,啟用本地搜尋功能:
1 2 3 複製程式碼
# Local search local_search: enable: true 複製程式碼
錯誤分析
如果你使用Hexo遇到同樣的問題,這裡有一些常見問題的解決方案。
YAML Parsing Error
|
|
- 引數中包含冒號,請用加引號,如
Last updated: %s
|
|
- 欄位後面的冒號必須為英文冒號,如:last_updated:
- 欄位冒號後面必須跟一個空格,如:last_updated: “Last updated: %s”
EMFILE Error
|
|
生成大量的檔案時,可能遇到EMFILE錯誤。
可以執行以下命令來增加允許同步I / O操作的數量。
|
|
Process Out of Memory
當hexo g
時,遇到以下錯誤:
|
|
如下,更改hexo-cli
檔案的第一行,來增大nodejs堆記憶體.該bug已在新版本修復。
|
|
Git Deployment Problems
- RPC failed
|
|
確保你有你的電腦上設定git正確或嘗試使用HTTPS儲存庫URL。
- Error: ENOENT: no such file or directory
這個需要有一定的git的知識,因為可能是由於寫錯了標籤,類別,或檔名,導致本地和github衝突了,Git不能自動合併這一變化所以它打破了自動分支。
解決辦法:
- 檢查文章的標籤和類別,確保本地和github上是相同的。
- 合併分支(Commit)。
- 清除,重構。在站點目錄下,命令列(即Git Bash)執行
hexo clean
和hexo g
- 手動將站點目錄下的
public
資料夾複製到您的桌面 - 從你的master分支切換到部署在本地分支。
- 從桌面複製
public
資料夾到本地分支。 - 合併分支到github(Commit)。
- 切回master分支。
Server Problems
|
|
你可能使用相同的埠,同時開啟了兩個Hexo伺服器。如果需要同時開啟,可以嘗試修改埠設定:
|
|
Plugin Installation Problems
|
|
這個錯誤可能發生在試圖安裝一個用Cc++或另一個javascript語言編寫的外掛。確保您已經安裝了正確的編譯器在您的計算機上。
Error with DTrace (Mac OS X)
|
|
DTrace安裝可能有問題,重灌:
|
|
詳見 #1326
Iterate Data Model on Jade or Swig
Hexo使用倉庫的資料模型。這不是一個陣列,所以你可能需要將物件轉換為iterable。
|
|
Data Not Updated
一些資料不能更新或新生成的檔案的最後一個版本完全相同。清理快取,再試一次:
|
|
No command is executed
那個不能使用除help
、init
和version
以外的命令列(即Git Bash)時, 有可能時站點目錄下的 package.json
檔案,缺少hexo
,如下:
|
|
Escape Contents
Hexo使用Nunjucks渲染的頁面. { { } }
或{ % % }
將解析和可能會引起麻煩, 如果要在博文中出現,必須使用三引號:
|
|
|
|
Error: watch ENOSPC …
|
|
$ echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p
|
|
Error: watch /path/to/hexo/theme/ EMPERM
|
|
$ hexo generate
$ hexo server -s
|
|
FATAL Something’s wrong. Maybe you can find the solution here: hexo.io/docs/troubl…
Template render error: (unknown path)
|
|
plugins:
hexo-generator-feed
hexo-generator-sitemap`
常用操作
建立文章
命令:
$ hexo new [layout] <title>
複製程式碼
引數說明:
- [layout]可以為以下三種:
引數名 | 功能 | 文章路徑 |
---|---|---|
post | 新建博文 | source/_posts |
page | 新建頁面(如404,分類) | source |
draft | 草稿 | source/_drafts |
草稿可通過一下命令釋出:
$ hexo publish [layout] <title>
複製程式碼
title注意:
不是博文標題,
是博文markdown檔案的名字,
也是博文連結的字尾(如
https://www.simon96.online/2018/10/12/hexo-tutorial/
中的hexo-tutorial)
文章模版
建立模版
在新建文章時,Hexo 會根據
scaffolds
資料夾內相對應的檔案來建立檔案,例如:
$ hexo new blog “simon”
在執行這行指令時,Hexo 會嘗試在 scaffolds
資料夾中尋找 blog.md
,並根據其內容建立文章。
修改引數
以下是您可以在模版中使用的變數:
變數 | 描述 |
---|---|
layout | 佈局 |
title | 標題 |
date | 檔案建立日期 |
Front-matter
就是博文最上方以 ---
分隔的那部分。
預設可以使用的Front-matter:
引數 | 描述 | 預設值 |
---|---|---|
layout | 佈局 | |
title | 標題 | |
date | 建立日期 | 檔案建立日期 |
updated | 更新日期 | 檔案更新日期 |
comments | 開啟文章的評論功能 | true |
tags | 標籤(不適用於分頁) | |
categories | 分類(不適用於分頁) | |
permalink | 覆蓋文章網址 |