本文是 記錄了 Ubuntu16.04 下 通過(guò) Hexo + GitHub 搭建的博客的完整記錄,希望大家可以耐心閱讀下。
最開始的時(shí)候,都是把自己的技術(shù)文檔、安裝攻略,整理到云筆記上,但是后來(lái),云筆記漸漸的不好用了 ,主要原因還是因?yàn)樗麄兌奸_始通過(guò)各種方式收費(fèi)或者限制了,我用過(guò) 印象、有道、為知 等等,當(dāng)我一次次的遷徙我的筆記的時(shí)候,就是我一次次的跳入一個(gè)坑。當(dāng)然,我是支持云筆記收費(fèi)的,只是他們還不到讓我買賬的程度,因?yàn)樗麄冊(cè)谑召M(fèi)后與之前相比,并沒(méi)有變的更好用。但是,我知道總有一天,我還是會(huì)為他們買單的,當(dāng)他們可以在Linux系統(tǒng)下運(yùn)行的時(shí)候,期待中吧:)
目錄流程:
搭建 Node.js 環(huán)境
搭建 Git 環(huán)境
GitHub 注冊(cè)和配置
安裝配置 Hexo
關(guān)聯(lián) Hexo 與 GitHub Pages
多個(gè)git賬號(hào),該如何設(shè)置
Hexo 的常用操作
結(jié)束語(yǔ)
[TOC]
1. 搭建 Node.js 環(huán)境
為什么要搭建 Node.js 環(huán)境? - 因?yàn)?Hexo 博客系統(tǒng)是基于 Node.js 編寫的
Node.js 是一個(gè)基于 Chrome V8 引擎的 JavaScript 運(yùn)行環(huán)境,可以在非瀏覽器環(huán)境下,解釋運(yùn)行 JS 代碼。
node.js官網(wǎng):下載安裝包 v6.10.3LTS(下載最新的即可)這是我下載的安裝包的地址
步驟:
Windows 安裝
保持默認(rèn)設(shè)置即可,一路Next,安裝很快就結(jié)束了,然后打開命令提示符win + R,輸入
node -v
npm -v
出現(xiàn)版本號(hào)則說(shuō)明 Node.js 環(huán)境配置成功,第一步完成?。?!

Ubuntu安裝
我是通過(guò)瀏覽器下載到 (/home/wy/下載),你們可以找到相應(yīng)的位置(如果位置與你們的有出入可以做相應(yīng)修改):

tar zxvf ~/下載/node-v6.10.3-linux-x64.tar.xz -C /opt
cd /opt/node-v6.10.3-linux-x64/
-
./node -v
ln -s /opt/node-v6.10.3-linux-x64/bin/node /usr/local/bin/node
ln -s /opt/node-v6.10.3-linux-x64/bin/npm /usr/local/bin/npm
意思就是創(chuàng)建軟鏈接,在/usr/local/bin里,就可以全局使用
還有一種就是shell提示的apt-get方式,我之前就被這種方式坑了。。。強(qiáng)烈不推薦啊
另一種:
sudo apt-get install nodejs
sudo apt-get install npm
node -v
npm -v
2. 搭建 Git 環(huán)境
為什么要搭建 Git 環(huán)境? - 因?yàn)樾枰驯镜氐木W(wǎng)頁(yè)和文章等提交到 GitHub 上。
Git 是一款免費(fèi)、開源的分布式版本控制系統(tǒng),用于敏捷高效地處理任何或小或大的項(xiàng)目。
在Ubuntu上安裝git
-
sudo apt-get update
sudo apt-get install git
git config --global user.name "your name"
git config --global user.email "your email"
git config --global push.default simple # 每次push僅push當(dāng)前分支
git config --global core.autocrlffalse # 忽略window/unix換行符
git config --global gui.encoding utf-8 # 避免亂碼
git config --global core.quotepath off # 避免git status顯示的中文文件名亂碼
git --version # 版本
git config--globalmerge.tool vimdiff # 差異分析工具
git config --list # 查看配置信息
ssh-keygen -t rsa -C "your email"
ssh-add ~/.ssh/id_rsa # github用的公鑰就在~/.ssh/id_rsa.pub
3. GitHub 注冊(cè)和配置
GitHub 是一個(gè)代碼托管平臺(tái),因?yàn)橹恢С?Git 作為唯一的版本庫(kù)格式進(jìn)行托管,故名 GitHub。
Github注冊(cè):https://github.com/

選擇 New repository
-
Repository name 必須選擇 相應(yīng)的格式 "yourname.github.io"
點(diǎn)擊綠色按鈕 Create repository 創(chuàng)建
-
點(diǎn)擊 Settings 完成相應(yīng)配置
-
選擇 Deploy keys 選項(xiàng),配置ssh秘鑰
-
點(diǎn)擊 Add deploy key,添加相應(yīng)秘鑰
-
添加內(nèi)容 ,title 隨便寫,key 需要在你的本地查看
打開終端,輸入:
vim ~/.ssh/id_rsa.pub
鼠標(biāo)右鍵復(fù)制所有內(nèi)容,到 github剛才配置秘鑰頁(yè)面的 key 里
完成內(nèi)容如下,并點(diǎn)擊 Add key
-
最后測(cè)試: 輸入 ssh git@github.com
如果最后出現(xiàn),
ERROR: Hi tekkub! You’ve successfully authenticated, but GitHub does not provide shell access
Connection to github.com closed.
說(shuō)明配置成功
4. 安裝配置 Hexo
Hexo 是一個(gè)快速、簡(jiǎn)潔且高效的博客框架,使用 Markdown(或其他渲染引擎)解析文章,在幾秒內(nèi),即可利用靚麗的主題生成靜態(tài)網(wǎng)頁(yè)。
強(qiáng)烈建議你花20分鐘區(qū)讀一讀 Hexo 的官方文檔:https://hexo.io/zh-cn/
-
如果之前node.js 安裝配置正確的話,可以運(yùn)行如下命令:
當(dāng)然命令需要變通一下,不能完全按照下邊的執(zhí)行
在Linux終端 輸入 cd ~
進(jìn)入你的Home目錄
-
npm install hexo-cli -g # 這一步是通過(guò)必備的node.js安裝成功后,既可以用npm安裝
安裝成功后,會(huì)裝在 /opt/node-v6.10.3-linux-x64/bin 這個(gè)目錄
下邊的命令,需要hexo全局使用,這里創(chuàng)建軟鏈接 :
ln -s /opt/node-v6.10.3-linux-x64/bin/hexo /usr/local/bin/hexo
這里完成才可以執(zhí)行第三部
-
hexo init bigjeffwang.github.io
我這里是在 Home目錄執(zhí)行安裝初始化 先 cd ~ 進(jìn)入Home目錄,在執(zhí)行
cd bigjeffwang.github.io
npm install
hexo server
5. 關(guān)聯(lián)Hexo與GitHub Pages
基本到這里,完成第5部,算是安裝完成,因?yàn)橹暗膅ithub的配置,會(huì)關(guān)聯(lián)github
可能需要注意的幾點(diǎn):
在使用npm 安裝 Hexo:在命令行中輸入npm install hexo-cli -g
然后你將會(huì)看到下圖,可能你會(huì)看到一個(gè)
WARN
,但是不用擔(dān)心,這不會(huì)影響你的正常使用。
查看Hexo的版本hexo version
最后在進(jìn)行hexo相關(guān)配置:
打開 你本地項(xiàng)目里的 vim _config.yml

_config.yml配置參考

需要改一下 你的 標(biāo)題 author作者 等等,按照你的意愿,下邊有許多可以改的地方,請(qǐng)參考hexo的 官方文檔

最后在文檔的最后, deploy 需要改一下,一定要注意 文檔格式 所有的: 后邊都必須有空格!!!
type 設(shè)置 git
repository 設(shè)置 你github上的項(xiàng)目的 克隆地址 這里一定不要用https:// 開頭的地址,因?yàn)檫@樣還是需要賬戶密碼登錄,后期維護(hù)麻煩,之前設(shè)置github秘鑰,也是為了方便這里,用ssh的地址方式 git@github.com:后邊接你的名字+/項(xiàng)目地址
branch 分支就設(shè)置master就可以

安裝一個(gè)擴(kuò)展 這個(gè)很有用 如下:
npm install hexo-deployer-git --save # 它可以讓你代替git, push你的博客項(xiàng)目
hexo new "hello world" 這樣可以創(chuàng)建你的一篇博客 安裝擴(kuò)展后
hexo g # 執(zhí)行這個(gè),就可以編譯你的項(xiàng)目,當(dāng)然這是簡(jiǎn)寫,完整是 hexo generate
hexo d # 同樣 執(zhí)行這個(gè),就可以部署你的項(xiàng)目,并推送到github上了
項(xiàng)目里的source/_post 這個(gè)目錄,就是你生成和存放文檔的目錄
在瀏覽器中輸入 https://bigjeffwang.github.io (用戶名當(dāng)然改成你的)看到了 Hexo 與 GitHub Pages 已經(jīng)成功關(guān)聯(lián)了,哇哇哇哇哇哇,開心死你了,不要忘了回來(lái)給我點(diǎn)贊喲 ~
下邊設(shè)置,修改hexo主題
在 _config.yml 里邊有一項(xiàng)是 theme: 它后邊接的就是你的主題
這里需要如下步驟:
-
進(jìn)入你的博客項(xiàng)目的themes
cd ~/bigjeffwang.github.io/themes
-
從github上克隆一個(gè) 別人的主題 這里提供一下別人的主題鏈接,以供參考 hexo主題
git clone https://github.com/wuchong/jacman.git ./jacman
cd ./jacman
git pull
jacman 里邊 也是有 _config.yml ,里邊怎么修改,需要你自己琢磨,大同小異.請(qǐng)參考 官方文檔
當(dāng)然,你也可以自己優(yōu)化,相當(dāng)于一個(gè)簡(jiǎn)單的web項(xiàng)目,里邊也有JS CSS IMG 目錄,可以替換相應(yīng)你喜歡的圖片
最后別忘了,修改你項(xiàng)目里的_config.yml,替換你的主題的文件夾名字
我這里是 jacman

6. 多個(gè)git賬號(hào),該如何設(shè)置
這里懶得寫,借用一下,別人總結(jié)好的 原作者文檔
場(chǎng)景:使用github的時(shí)候,大家都知道需要給該賬號(hào)添加一個(gè)SSH key才能訪問(wèn),參考 具體設(shè)置。當(dāng)然如果你在多臺(tái)機(jī)器使用一個(gè)賬戶,你可以為該賬戶添加多個(gè)SSH key。由于github是使用SSH key的fingerprint來(lái)判定你是哪個(gè)賬戶,而不是通過(guò)用戶名,這樣你就可以在設(shè)置完之后,在本地直接執(zhí)行下面的語(yǔ)句,它就會(huì)自動(dòng)使用你的.ssh/id_rsa.pub所對(duì)應(yīng)的賬戶進(jìn)行登陸,然后執(zhí)行相關(guān)命令。
本地建庫(kù)
git init
git commit -am"first commit'
push到github上去
git remote add origin git@github.com:xxxx/test.git
git push origin master
但是如果你想在一臺(tái)機(jī)器使用兩個(gè)github賬號(hào)(比如私人賬號(hào)和工作用賬號(hào))。這個(gè)時(shí)候怎么指定push到哪個(gè)賬號(hào)的test倉(cāng)庫(kù)上去呢?
解決方案(假設(shè)你已經(jīng)擁有私有賬號(hào)且已經(jīng)OK,現(xiàn)在想使用另一個(gè)工作用賬號(hào)):
-
為工作賬號(hào)生成SSH Key
ssh-keygen -t rsa -C"your-email-address"#存儲(chǔ)key的時(shí)候,不要覆蓋現(xiàn)有的id_rsa,使用一個(gè)新的名字,比如id_rsa_work
把id_rsa_work.pub加到你的work賬號(hào)上
-
把該key加到ssh agent上。由于不是使用默認(rèn)的.ssh/id_rsa,所以你需要顯示告訴ssh agent你的新key的位置
ssh-add ~/.ssh/id_rsa_work#可以通過(guò)ssh-add -l來(lái)確認(rèn)結(jié)果
-
配置.ssh/config
vi .ssh/config#加上以下內(nèi)容#default githubHost github.com
HostName github.com
IdentityFile~/.ssh/id_rsa
Host github_work
HostName github.com
IdentityFile~/.ssh/id_rsa_work
-
這樣的話,你就可以通過(guò)使用github.com別名github_work來(lái)明確說(shuō)你要是使用id_rsa_work的SSH key來(lái)連接github,即使用工作賬號(hào)進(jìn)行操作。
本地建庫(kù):
git init
git commit-am"first commit'#push到github上去$ git remote add origin git@github_work:xxxx/test.git
git push origin master
7. Hexo 的常用操作
官方文檔建議看看
你可以執(zhí)行下列命令來(lái)創(chuàng)建一篇新文章。
hexo new [文章名]
您可以在命令中指定文章的布局(layout),默認(rèn)為post,可以通過(guò)修改_config.yml中的default_layout參數(shù)來(lái)指定默認(rèn)布局。
布局(Layout)
Hexo 有三種默認(rèn)布局:post、page和draft,它們分別對(duì)應(yīng)不同的路徑,而您自定義的其他布局和post相同,都將儲(chǔ)存到source/_posts文件夾。
布局路徑
postsource/_posts
pagesource
draftsource/_drafts
不要處理我的文章
如果你不想你的文章被處理,你可以將 Front-Matter 中的layout:設(shè)為false。
Hexo 默認(rèn)以標(biāo)題做為文件名稱,但您可編輯new_post_name參數(shù)來(lái)改變默認(rèn)的文件名稱,舉例來(lái)說(shuō),設(shè)為:year-:month-:day-:title.md可讓您更方便的通過(guò)日期來(lái)管理文章。
變量描述
:title標(biāo)題(小寫,空格將會(huì)被替換為短杠)
:year建立的年份,比如,2015
:month建立的月份(有前導(dǎo)零),比如,04
:i_month建立的月份(無(wú)前導(dǎo)零),比如,4
:day建立的日期(有前導(dǎo)零),比如,07
:i_day建立的日期(無(wú)前導(dǎo)零),比如,7
剛剛提到了 Hexo 的一種特殊布局:draft,這種布局在建立時(shí)會(huì)被保存到source/_drafts文件夾,您可通過(guò)publish命令將草稿移動(dòng)到source/_posts文件夾,該命令的使用方式與new十分類似,您也可在命令中指定layout來(lái)指定布局。
$ hexo publish [layout]
草稿默認(rèn)不會(huì)顯示在頁(yè)面中,您可在執(zhí)行時(shí)加上--draft參數(shù),或是把render_drafts參數(shù)設(shè)為true來(lái)預(yù)覽草稿。
在新建文章時(shí),Hexo 會(huì)根據(jù)scaffolds文件夾內(nèi)相對(duì)應(yīng)的文件來(lái)建立文件,例如:
$ hexo new photo"My Gallery"
在執(zhí)行這行指令時(shí),Hexo 會(huì)嘗試在scaffolds文件夾中尋找photo.md,并根據(jù)其內(nèi)容建立文章,以下是您可以在模版中使用的變量:
變量描述
layout布局
title標(biāo)題
date文件建立日期
Markdown 11種基本語(yǔ)法
引用自http://www.cnblogs.com/hnrainll/p/3514637.html
- 標(biāo)題設(shè)置(讓字體變大,和word的標(biāo)題意思一樣)
在Markdown當(dāng)中設(shè)置標(biāo)題,有兩種方式:
第一種:通過(guò)在文字下方添加“=”和“-”,他們分別表示一級(jí)標(biāo)題和二級(jí)標(biāo)題。
第二種:在文字開頭加上 “#”,通過(guò)“#”數(shù)量表示幾級(jí)標(biāo)題。(一共只有1~6級(jí)標(biāo)題,1級(jí)標(biāo)題字體最大)
- 塊注釋(blockquote)
通過(guò)在文字開頭添加“>”表示塊注釋。(當(dāng)>和文字之間添加五個(gè)blank時(shí),塊注釋的文字會(huì)有變化。)
- 斜體
將需要設(shè)置為斜體的文字兩端使用1個(gè)“*”或者“_”夾起來(lái)
- 粗體
將需要設(shè)置為斜體的文字兩端使用2個(gè)“*”或者“_”夾起來(lái)
- 無(wú)序列表
在文字開頭添加(,+, and-)實(shí)現(xiàn)無(wú)序列表。但是要注意在(,+, and-)和文字之間需要添加空格。(建議:一個(gè)文檔中只是用一種無(wú)序列表的表示方式)
- 有序列表
使用數(shù)字后面跟上句號(hào)。(還要有空格)
- 鏈接(Links)
Markdown中有兩種方式,實(shí)現(xiàn)鏈接,分別為內(nèi)聯(lián)方式和引用方式。
內(nèi)聯(lián)方式:This is an example link.
引用方式:
I get 10 times more traffic from Google than from Yahoo or MSN.
- 圖片(Images)
圖片的處理方式和鏈接的處理方式,非常的類似。
內(nèi)聯(lián)方式:
引用方式:

- 代碼(HTML中所謂的Code)
實(shí)現(xiàn)方式有兩種:
第一種:簡(jiǎn)單文字出現(xiàn)一個(gè)代碼框。使用`
。(不是單引號(hào)而是左上角的ESC下面~中的`)
第二種:大片文字需要實(shí)現(xiàn)代碼框。使用Tab和四個(gè)空格。
- 腳注(footnote)
實(shí)現(xiàn)方式如下:
hello[1]
- 下劃線
在空白行下方添加三條“-”橫線。(前面講過(guò)在文字下方添加“-”,實(shí)現(xiàn)的2級(jí)標(biāo)題)
8. 結(jié)束語(yǔ)
深夜倉(cāng)促總結(jié)的,因?yàn)橹耙呀?jīng)安裝過(guò),所以過(guò)程,有些,就不方便截圖,實(shí)在懶得從新裝了,但是基本保證沒(méi)漏洞,少了部分截圖,也絕對(duì)可以順利安裝.文章里少部分摘抄了別人的總結(jié),基本我全都放出了原文的鏈接.對(duì)于我轉(zhuǎn)載的原作者,而沒(méi)有署名的,本著以分享的目的,請(qǐng)多多見諒,哈哈.
最后的最后,我啰里啰嗦的寫了一大堆,如果你仔細(xì)看完了,并且安裝成功了,那么恭喜你加入了這個(gè)集體.
愿大家都能寫出有質(zhì)量的技術(shù)博客,分享于眾吧!
-
hi ?








