轉(zhuǎn)載http://www.cnblogs.com/bxm0927/p/6927340.html
大概流程:
1. 搭建 Node.js 環(huán)境
2. 搭建 Git 環(huán)境
3. GitHub 注冊(cè)和配置
4. 安裝配置 Hexo
5. 關(guān)聯(lián) Hexo 與 GitHub Pages
6. GitHub Pages 地址解析到個(gè)人域名
7. Hexo 的常用操作
8. 結(jié)束語(yǔ)
為什么要搭建 Node.js 環(huán)境? - 因?yàn)?Hexo 博客系統(tǒng)是基于 Node.js 編寫(xiě)的
Node.js 是一個(gè)基于 Chrome V8 引擎的 JavaScript 運(yùn)行環(huán)境,可以在非瀏覽器環(huán)境下,解釋運(yùn)行 JS 代碼。
在 Node.js 官網(wǎng):https://nodejs.org/en/下載安裝包v6.10.3 LTS
保持默認(rèn)設(shè)置即可,一路Next,安裝很快就結(jié)束了。
然后打開(kāi)命令提示符,輸入node -v、npm -v,出現(xiàn)版本號(hào)則說(shuō)明 Node.js 環(huán)境配置成功,第一步完成?。?!

為什么要搭建 Git 環(huán)境? - 因?yàn)樾枰驯镜氐木W(wǎng)頁(yè)和文章等提交到 GitHub 上。
Git 是一款免費(fèi)、開(kāi)源的分布式版本控制系統(tǒng),用于敏捷高效地處理任何或小或大的項(xiàng)目。
在 Git 官網(wǎng):https://git-scm.com/下載安裝包Git-2.13.0-64-bit.exe

桌面右鍵,打開(kāi)Git Bush Here,輸入git --version,出現(xiàn)版本號(hào)則說(shuō)明 Git 環(huán)境配置成功,第二步完成?。?!

GitHub 是一個(gè)代碼托管平臺(tái),因?yàn)橹恢С?Git 作為唯一的版本庫(kù)格式進(jìn)行托管,故名 GitHub。
Github注冊(cè):https://github.com/
創(chuàng)建倉(cāng)庫(kù):Repository name 使用自己的用戶(hù)名,倉(cāng)庫(kù)名規(guī)則:
注意:yourname必須是你的用戶(hù)名。
yourname/yourname.github.io

訪問(wèn) yourname.github.io,如果可以正常訪問(wèn),那么 Github 的配置已經(jīng)結(jié)束了。
到此搭建 Hexo 博客的相關(guān)環(huán)境配置已經(jīng)完成,下面開(kāi)始講解 Hexo 的相關(guān)操作
Hexo 是一個(gè)快速、簡(jiǎn)潔且高效的博客框架,使用 Markdown(或其他渲染引擎)解析文章,在幾秒內(nèi),即可利用靚麗的主題生成靜態(tài)網(wǎng)頁(yè)。
強(qiáng)烈建議你花20分鐘區(qū)讀一讀 Hexo 的官方文檔:https://hexo.io/zh-cn/

使用 npm 安裝 Hexo:在命令行中輸入
npm install hexo-cli -g
然后你將會(huì)看到下圖,可能你會(huì)看到一個(gè)WARN,但是不用擔(dān)心,這不會(huì)影響你的正常使用。

查看Hexo的版本
hexo version

安裝 Hexo 完成后,請(qǐng)執(zhí)行下列命令來(lái)初始化 Hexo,用戶(hù)名改成你的,Hexo 將會(huì)在指定文件夾中新建所需要的文件。
hexo init bxm0927.github.io
cd bxm0927.github.io
npm install
新建完成后,指定文件夾的目錄如下:
.
├── .deploy? ? ? ? #需要部署的文件
├── node_modules? ? #Hexo插件
├── public? ? ? ? ? #生成的靜態(tài)網(wǎng)頁(yè)文件
├── scaffolds? ? ? #模板
├── source? ? ? ? ? #博客正文和其他源文件,404、favicon、CNAME 都應(yīng)該放在這里
| ├── _drafts? ? ? #草稿
| └── _posts? ? ? ? #文章
├── themes? ? ? ? ? #主題
├── _config.yml? ? #全局配置文件
└── package.json? ? #npm 依賴(lài)等
運(yùn)行本地 Hexo 服務(wù)
hexo server
或者
hexo s
您的網(wǎng)站會(huì)在http://localhost:4000下啟動(dòng)。如果http://localhost:4000能夠正常訪問(wèn),則說(shuō)明 Hexo 本地博客已經(jīng)搭建起來(lái)了,只是本地哦,別人看不到的。下面,我們要部署到Github。

注意1:執(zhí)行hexo server提示找不到該指令
解決辦法:在Hexo 3.0 后server被單獨(dú)出來(lái)了,需要安裝server,安裝的命令如下:
sudo npm install hexo-server
或者
npm install hexo -server --save
關(guān)聯(lián) Hexo 與 GitHub Pages
我們?nèi)绾巫尡镜豨it項(xiàng)目與遠(yuǎn)程的github建立聯(lián)系呢?用 SSH keys
生成SSH keys
輸入你自己的郵箱地址
ssh-keygen -t rsa -C "80583600@qq.com"
在回車(chē)中會(huì)提示你輸入一個(gè)密碼,這個(gè)密碼會(huì)在你提交項(xiàng)目時(shí)使用,如果為空的話提交項(xiàng)目時(shí)則不用輸入,我們按回車(chē)不設(shè)置密碼。
添加 SSH Key 到 GitHub
打開(kāi)C:\Users\bxm09\.ssh\id_rsa.pub,此文件里面內(nèi)容為剛才生成的密鑰,準(zhǔn)確的復(fù)制這個(gè)文件的內(nèi)容,粘貼到https://github.com/settings/ssh的new SSH key中
測(cè)試
可以輸入下面的命令,看看設(shè)置是否成功,git@github.com的部分不要修改:
ssh -T git@github.com
如果是下面的反饋:
The authenticity of host ‘github.com (207.97.227.239)’ can’t be established.
RSA key fingerprint is 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48.
Are you sure you want to continue connecting (yes/no)?
不要緊張,輸入yes就好,然后會(huì)看到:
Hi aierui! You've successfully authenticated, but GitHub does not provide shell access.
配置Git個(gè)人信息
現(xiàn)在你已經(jīng)可以通過(guò) SSH 鏈接到 GitHub 了,還有一些個(gè)人信息需要完善的。
Git 會(huì)根據(jù)用戶(hù)的名字和郵箱來(lái)記錄提交。GitHub 也是用這些信息來(lái)做權(quán)限的處理,輸入下面的代碼進(jìn)行個(gè)人信息的設(shè)置,把名稱(chēng)和郵箱替換成你自己的。
git config --global user.name "bxm0927"
git config --global user.email "80583600@qq.com"
配置 Deployment
在_config.yml文件中,找到Deployment,然后按照如下修改,用戶(hù)名改成你的:
需要注意的是:冒號(hào)后面記得空一格!
# Deployment
## Docs: https://hexo.io/docs/deployment.html
deploy:
type: git
repo: git@github.com:bxm0927/bxm0927.github.io.git
branch: master
本地文件提交到 GitHub Pages
// 刪除舊的 public 文件
hexo clean
// 生成新的 public 文件
hexo generate
或者
hexo g
// 開(kāi)始部署
hexo deploye
或者
hexo d
在瀏覽器中輸入https://bxm0927.github.io(用戶(hù)名改成你的)看到了 Hexo 與 GitHub Pages 已經(jīng)成功關(guān)聯(lián)了,哇哇哇哇哇哇,開(kāi)心死你了,不要忘了回來(lái)給我點(diǎn)贊喲 ~
注意1:若上面操作失敗,則需要提前安裝一個(gè)擴(kuò)展:
npm install hexo-deployer-git --save
注意2:如果在執(zhí)行hexo d后,出現(xiàn)error deployer not found:github的錯(cuò)誤(如下),則是因?yàn)闆](méi)有設(shè)置好 public key 所致,重新詳細(xì)設(shè)置即可。
Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
注意3:怎么避免 .md 文件被解析?
Hexo原理就是hexo在執(zhí)行hexo generate時(shí)會(huì)在本地先把博客生成的一套靜態(tài)站點(diǎn)放到public文件夾中,在執(zhí)行hexo deploy時(shí)將其復(fù)制到.deploy文件夾中。Github的版本庫(kù)通常建議同時(shí)附上README.md說(shuō)明文件,但是hexo默認(rèn)情況下會(huì)把所有md文件解析成html文件,所以即使你在線生成了 README. md,它也會(huì)在你下一次部署時(shí)被刪去。怎么解決呢?
在執(zhí)行hexo deploy前把在本地寫(xiě)好的README.md文件復(fù)制到.deploy文件夾中,再去執(zhí)行hexo deploy。
Github Pages 是面向用戶(hù)、組織和項(xiàng)目開(kāi)放的公共靜態(tài)頁(yè)面搭建托管服 務(wù),站點(diǎn)可以被免費(fèi)托管在 Github 上,你可以選擇使用 Github Pages 默 認(rèn)提供的域名 github.io 或者自定義域名來(lái)發(fā)布站點(diǎn)。
看著博客的域名是二級(jí)域名,總有一種寄人籬下的感覺(jué),為了讓這個(gè)小窩看起來(lái)更加正式,我在阿里云上買(mǎi)了一個(gè)域名,打算將博客綁定自己的域名。
進(jìn)行該綁定過(guò)程,其實(shí)就是一個(gè)重定向的過(guò)程。
在 GitHub 倉(cāng)庫(kù)的根目錄下建立一個(gè)CNAME的文本文件(注意:沒(méi)有擴(kuò)展名),文件里面只能輸入一個(gè)你的域名,不能加http://
www.lovebxm.com
注意:CNAME 一定是在你 Github 項(xiàng)目的 master 根目錄下
進(jìn)入阿里云域名解析地址,添加解析:
記錄類(lèi)型選擇CNAME
主機(jī)記錄填www
解析線路選擇默認(rèn)
記錄值填yourname.github.io
TTL值為10分鐘
再添加一個(gè)解析,記錄類(lèi)型A
主機(jī)記錄填www
解析線路選擇默認(rèn)
記錄值填你GitHub 的ip地址(在cmd中ping:)
ping bxm0927.github.com

點(diǎn)擊保存,等 1 分鐘,訪問(wèn)下你自己的域名,一切就ok了。
域名綁定成功,域名解析成功,因此你在瀏覽中輸入www.lovebxm.com,或 lovebxm.com 就可以訪問(wèn)到博客了,輸入 bxm0927.github.io 會(huì)重定向到www.lovebxm.com。過(guò)程:www 的方式,會(huì)先解析成http://xxxx.github.io,然后根據(jù) CNAME 再變成 www
注意:CNAME文件在下次hexo deploy的時(shí)候就消失了,需要重新創(chuàng)建,這樣就很繁瑣
方法一:每次hexo d之后,就去 GitHub 倉(cāng)庫(kù)根目錄新建 CNAME文件
方法二:在hexo g之后,hexo d之前,把CNAME文件復(fù)制到 “\public" 目錄下面,里面寫(xiě)入你要綁定的域名。
方法三(推薦):將需要上傳至github的內(nèi)容放在source文件夾,例如CNAME、favicon.ico、images等,這樣在 hexo d 之后就不會(huì)被刪除了。
方法四:通過(guò)安裝插件實(shí)現(xiàn)永久保留
$ npm install hexo-generator-cname --save
之后在_config.yml中添加一條
plugins:
- hexo-generator-cname
需要注意的是:如果是在github上建立的CNAME文件,需要先clone到本地,然后安裝插件,在deploy上去即可。CNAME只允許一個(gè)域名地址。
注意1:每次生成的 CNAME 都是 yoursite.com 怎么解決?
修改 _config.yml
url: http://www.lovebxm.com
root: /
permalink: :year/:month/:day/:title/
permalink_defaults:
hexo new "文章標(biāo)題"
D:\GitHub\Hexo\test>hexo new "文章標(biāo)題"
INFO? Created: D:\GitHub\Hexo\test\source\_posts\文章標(biāo)題.md
在本地博客文件夾source\_posts文件夾下看到我們新建的 markdown 文件。
當(dāng)然,我們也可以手動(dòng)添加Markdown文件在source->_deploy文件夾下,其效果同樣可以媲美hexo new
文章編輯好之后,運(yùn)行生成、部署命令:
hexo clean
hexo g
hexo d
當(dāng)然你也可以執(zhí)行下面的命令,相當(dāng)于上面兩條命令的效果
hexo clean
hexo d -g
hexo new page folder
有兩種多標(biāo)簽格式
tags: [a, b, c]
或
tags:
- a
- b
- c
如果在博客文章列表中,不想全文顯示,可以增加, 后面的內(nèi)容就不會(huì)顯示在列表。
官方主題庫(kù):https://hexo.io/themes/
Hexo主題非常,推薦使用Next為主題,請(qǐng)閱讀 Next 的官方文檔(http://theme-next.iissnan.com/),5 分鐘快速安裝。
再提示一點(diǎn),大家可以hexo主題修改一步就hexo s看下變化,初次接觸對(duì)參數(shù)不清楚。只有hexo s后在可以在本地瀏覽到效果,Ctrl+C 停止服務(wù)器。
添加 sitemap 和 feed 插件
切換到你本地的 hexo 目 CIA ,在命令行窗口,輸入以下命令
npm install hexo-generator-feed -save
npm install hexo-generator-sitemap -save
修改_config.yml,增加以下內(nèi)容
# Extensions
Plugins:
- hexo-generator-feed
- hexo-generator-sitemap
#Feed Atom
feed:
type: atom
path: atom.xml
limit: 20
#sitemap
sitemap:
path: sitemap.xml
再執(zhí)行以下命令,部署服務(wù)端
hexo d -g
配完之后,就可以訪問(wèn)https://bxm0927.github.io/atom.xml和https://bxm0927.github.io/sitemap.xml,發(fā)現(xiàn)這兩個(gè)文件已經(jīng)成功生成了。
GitHub Pages 自定義404頁(yè)面非常容易,直接在根目錄下創(chuàng)建自己的404.html就可以。但是自定義404頁(yè)面僅對(duì)綁定頂級(jí)域名的項(xiàng)目才起作用,GitHub默認(rèn)分配的二級(jí)域名是不起作用的,使用hexo server在本機(jī)調(diào)試也是不起作用的。

其實(shí),404頁(yè)面可以做更多有意義的事,來(lái)做個(gè)404公益項(xiàng)目吧。
推薦使用騰訊公益404http://www.qq.com/404/:
src="http://qzonestyle.gtimg.cn/qzone/hybrid/app/404/search_children.js"
charset="utf-8"
homePageUrl="http://www.lovebxm.com/"
homePageName="回到我的主頁(yè)">
復(fù)制上面代碼,貼粘到目錄下新建的404.html即可!
很多人可能家里一臺(tái)筆記本,公司一個(gè)臺(tái)式機(jī),想兩個(gè)同時(shí)管理博客,同時(shí)達(dá)到備份的博客主題、文章、配置的目的。下面就介紹一下用github來(lái)備份博客并同步博客。
A電腦備份博客內(nèi)容到github
配置.gitignore文件。進(jìn)入博客目錄文件夾下,找到此文件,用sublime text 打開(kāi),在最后增加兩行內(nèi)容/.deploy_git和/public
初始化倉(cāng)庫(kù)。
在博客根目錄下,在git bash下依次執(zhí)行g(shù)it init和git remote add origin 為遠(yuǎn)程倉(cāng)庫(kù)地址。
同步到遠(yuǎn)程倉(cāng)庫(kù)。
gitbash下依次執(zhí)行以下命令
git add . #添加目錄下所有文件
git commit -m "更新說(shuō)明" #提交并添加更新說(shuō)明
git push -u origin master #推送更新到遠(yuǎn)程倉(cāng)庫(kù)
B電腦拉下遠(yuǎn)程倉(cāng)庫(kù)文件
在B電腦上同樣先安裝好node、git、ssh、hexo,然后建好hexo文件夾,安裝好插件,(然后選做:將備份到遠(yuǎn)程倉(cāng)庫(kù)的文件及文件夾刪除),然后執(zhí)行以下命令:
git init
git remote add origin
git fetch --all
git reset --hard origin/master
發(fā)布博客后同步
在B電腦發(fā)布完博客之后,記得將博客備份同步到遠(yuǎn)程倉(cāng)庫(kù)
執(zhí)行以下命令:
git add .
#可以用git master 查看更改內(nèi)容
git commit -m "更新信息"
git push -u origin master? #以后每次提交可以直接git push
平時(shí)同步管理
每次想寫(xiě)博客時(shí),先執(zhí)行:git pull進(jìn)行同步更新。發(fā)布完文章后同樣按照上面的 發(fā)布博客后同步 同步到遠(yuǎn)程倉(cāng)庫(kù)。
在 md 文件中寫(xiě)中文內(nèi)容,發(fā)布出來(lái)后為亂碼,原因是 md 的編碼不對(duì),將 md 文件另存為UTF-8編碼的文件即可解決問(wèn)題。
建站的系統(tǒng)有很多,如:
- …
使用 Hexo + GitHub Pages 建站,有優(yōu)點(diǎn)也有缺點(diǎn):
- GitHub Pages 不支持?jǐn)?shù)據(jù)庫(kù)管理,所以你只能做靜態(tài)頁(yè)面的博客,不能像其他博客(如 WordPress)那樣通過(guò)數(shù)據(jù)庫(kù)管理自己的博客內(nèi)容。
- 但是,GitHub Pages 無(wú)需購(gòu)置服務(wù)器,免服務(wù)器費(fèi)的同時(shí)還能做負(fù)載均衡,github pages有300M免費(fèi)空間。
- 個(gè)人博客真的有必要用數(shù)據(jù)庫(kù)嗎?答案是否定的。博客靜態(tài)化,評(píng)論記錄使用第三方的網(wǎng)易云跟帖就可以了。靜態(tài)的博客更有利于搜索引擎蜘蛛爬取,輕量化的感覺(jué)真的很好。
- 通過(guò) Hexo 你可以輕松地使用 Markdown 編寫(xiě)文章,非常符合我的口味。Markdown 真的是專(zhuān)門(mén)針對(duì)程序員開(kāi)發(fā)的語(yǔ)言啊,現(xiàn)在感覺(jué)沒(méi)有 Markdown什么都不想寫(xiě)。什么富文本編輯器,什么word,太麻煩了!而且樣式都好丑!效率太低!
推薦幾個(gè)很好用的在線 Markdown 編輯器:
- 作業(yè)部落:https://www.zybuluo.com/mdeditor
- 馬克飛象:https://maxiang.io
推薦圖床:
-極簡(jiǎn)圖床 + chrome 插件 + 七??臻g,七牛云儲(chǔ)存提供10G的免費(fèi)空間,以及每月10G的流量,存放個(gè)人博客外鏈圖片最好不過(guò)了,七牛云儲(chǔ)存還有各種圖形處理功能、縮略圖、視頻存放速度也給力。