Hexo:獨(dú)立博客新玩法 | 周良博客
- 環(huán)境準(zhǔn)備
- Github
- 安裝
- 初始化
- 生成靜態(tài)頁(yè)面
- 本地啟動(dòng)
- 寫(xiě)文章
- 主題安裝
- 評(píng)論框
- 自定義頁(yè)面
- 404頁(yè)面
- 圖床
- 申請(qǐng)域名(可選)
- 命令
Hexo,這個(gè)逼格極高的程序猿寫(xiě)作方式,我喜歡。就連 Hexo 的發(fā)音都像是黑客哦!如果你跟我一樣糾結(jié)哪里寫(xiě)博,那就來(lái)到GitHub吧,讓我們一起hexo!H人希絕對(duì)不會(huì)讓你失望,相信很快hexo就會(huì)流行起來(lái)。
Hexo出自臺(tái)灣大學(xué)生?tommy351?之手,是一個(gè)基于 Node.js 的靜態(tài)博客程序,其編譯上百篇文字只需要幾秒。hexo生成的靜態(tài)網(wǎng)頁(yè)可以直接放到GitHub Pages,BAE,SAE等平臺(tái)上。先看看tommy是如何吐槽Octopress的——《Hexo颯爽登場(chǎng)》。
搭建過(guò)程你或許覺(jué)得有那么點(diǎn)小繁瑣,但一旦搭建完成,寫(xiě)文章是極簡(jiǎn)單,極舒服的。
只需要幾個(gè)簡(jiǎn)單命令,你就可以完成一切。
hexo n http://www.aips.me寫(xiě)文章
hexo g http://www.aips.me生成
hexo d http://www.aips.me部署 http://www.aips.me 可與hexo g合并為 hexo d -g
下面逐步介紹,進(jìn)入正題。
環(huán)境準(zhǔn)備
安裝Node
到Node.js官網(wǎng)下載相應(yīng)平臺(tái)的最新版本,一路安裝即可。我用的是node-v0.10.22-x86.msi
安裝Git
Git的客戶端很多,詳細(xì)的可以看一些這篇文章的安裝教程:《使用 Github Pages 建獨(dú)立博客》
安裝Sublime(可選)
Sublime Text 2在這里僅僅作為一個(gè)文本編輯器使用,支持各種編程語(yǔ)言和文件格式,當(dāng)然也支持Markdown語(yǔ)法,實(shí)在是個(gè)不可多得的練碼奇才。喜歡追鮮的也可以嘗試處于beta版本的Sublime Text 3。
Github
- 首先注冊(cè)一個(gè)『GitHub』帳號(hào),已有的默認(rèn)默認(rèn)請(qǐng)忽略
- 建立與你用戶名對(duì)應(yīng)的倉(cāng)庫(kù),倉(cāng)庫(kù)名必須為『your_user_name.github.com』
- 添加SSH公鑰到『Account settings -> SSH Keys -> Add SSH Key』
前兩步忽略,只說(shuō)第三步,添加SSH-Key。
首先設(shè)置你的用戶名密碼:
1 2 | git config --global user.email "你的郵箱" git config --global user.name "你的用戶名" |
生成密鑰:
1 | ssh-keygen -t rsa -C "你的郵箱" |
輸入文件路徑:
1 2 3 4 5 6 7 8 9 | H:\hexo\blog>ssh-keygen -t rsa -C "xiaowu@aips.me(你的郵箱)" Generating public/private rsa key pair. Enter file in which to save the key (//.ssh/id_rsa): H:\git\myssh\ssh Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in H:\git\myssh\ssh. Your public key has been saved in H:\git\myssh\ssh.pub. The key fingerprint is: b0:0c:2e:67:33:ab:c1:50:10:40:0a:ba:c1:80:59:22 xiaowu@aips.me |
上面有個(gè)bug,文件路徑中的盤(pán)符H必須大寫(xiě),否則會(huì)報(bào)錯(cuò)。
上述命令若執(zhí)行成功,會(huì)在H:\git\myssh目錄下生成兩個(gè)文件id_rsa和id_rsa.pub,最后兩步:
- 用文本編輯器打開(kāi)ssh.pub文件,拷貝其中的內(nèi)容,將其添加到Add SSH Key
- 將id_rsa和id_rsa.pub拷貝至你Git安裝目錄下的.ssh目錄,如H:\PortableGit-1.8.4\.ssh
可以驗(yàn)證一下:
1 | ssh -T git@github.com |
若有問(wèn)題,請(qǐng)重新設(shè)置。常見(jiàn)錯(cuò)誤請(qǐng)參考:
GitHub Help &http://www.aips.me8211; Generating SSH Keys
GitHub Help &http://www.aips.me8211; Error Permission denied (publickey)
安裝
Node和Git都安裝好后,可執(zhí)行如下命令安裝hexo:
1 | npm install -g hexo |
初始化
然后,執(zhí)行init命令初始化hexo到你指定的目錄:
1 | hexo init |
也可以cd到目標(biāo)目錄,執(zhí)行hexo init。
好啦,至此,全部安裝工作已經(jīng)完成!
生成靜態(tài)頁(yè)面
cd 到你的init目錄,執(zhí)行如下命令,生成靜態(tài)頁(yè)面至hexo\public\目錄。
1 | hexo generate |
【注】命令必須在init目錄下執(zhí)行,否則不成功,但是也不報(bào)錯(cuò)。
當(dāng)你修改文章Tag或內(nèi)容,不能正確重新生成內(nèi)容,可以刪除hexo\db.json后重試,還不行就到public目錄刪除對(duì)應(yīng)的文件,重新生成。
本地啟動(dòng)
執(zhí)行如下命令,啟動(dòng)本地服務(wù),進(jìn)行文章預(yù)覽調(diào)試。
1 | hexo server |
瀏覽器輸入?http://localhost:4000?就可以看到效果。
請(qǐng)使用高級(jí)瀏覽器,否則可能…你懂的!
寫(xiě)文章
執(zhí)行new命令,生成指定名稱的文章至hexo\source\_posts\postName.md。
1 | hexo new [layout] "postName" http://www.aips.me新建文章 |
其中l(wèi)ayout是可選參數(shù),默認(rèn)值為post。有哪些layout呢,請(qǐng)到scaffolds目錄下查看,這些文件名稱就是layout名稱。當(dāng)然你可以添加自己的layout,方法就是添加一個(gè)文件即可,同時(shí)你也可以編輯現(xiàn)有的layout,比如post的layout默認(rèn)是hexo\scaffolds\post.md
1 2 3 4 | title: {{ title }} date: {{ date }} tags: --- |
我想添加categories,以免每次手工輸入,只需要修改這個(gè)文件添加一行,如下:
1 2 3 4 5 | title: {{ title }} date: {{ date }} categories: tags: --- |
postName是md文件的名字,同時(shí)也出現(xiàn)在你文章的URL中,postName如果包含空格,必須用&http://www.aips.me8221;將其包圍,postName可以為中文。
【注】所有文件:后面都必須有個(gè)空格,不然會(huì)報(bào)錯(cuò)。
看一下剛才生成的文件hexo\source\_posts\postName.md,內(nèi)容如下:
1 2 3 4 5 6 | title: postName http://www.aips.me文章頁(yè)面上的顯示名稱,可以任意修改,不會(huì)出現(xiàn)在URL中 date: 2014-05-16 15:30:16 http://www.aips.me文章生成時(shí)間,一般不改,當(dāng)然也可以任意修改 categories: http://www.aips.me文章分類目錄,可以為空,注意:后面有個(gè)空格 tags: http://www.aips.me文章標(biāo)簽,可空,多標(biāo)簽請(qǐng)用格式[tag1,tag2,tag3],注意:后面有個(gè)空格 --- 這里開(kāi)始使用markdown格式輸入你的正文。 |
接下來(lái),你就可以用喜愛(ài)的編輯器盡情書(shū)寫(xiě)你的文章。關(guān)于markdown語(yǔ)法,可以參考《Markdown 語(yǔ)法說(shuō)明》
fancybox
可能有人對(duì)這個(gè) Reading 頁(yè)面中圖片的 fancybox 效果感興趣,這個(gè)是怎么做的呢。
很簡(jiǎn)單,只需要在你的文章*.md文件的頭上添加photos項(xiàng)即可,然后一行行添加你要展示的照片:
1 2 3 4 5 6 7 | layout: photo title: 我的閱歷 date: 2085-01-16 07:33:44 tags: &http://www.aips.me91;hexo&http://www.aips.me93; photos: - http://aipsme.qiniudn.com/2013/11/27/reading/photos-0.jpg - http://aipsme.qiniudn.com/2013/11/27/reading/photos-1.jpg |
【注】經(jīng)過(guò)測(cè)試,文件頭上的layout: photo可以省略。
不想每次都手動(dòng)添加怎么辦?同樣的,打開(kāi)您的hexo\scaffolds\photo.md
1 2 3 4 5 6 7 | layout: &http://www.aips.me123; &http://www.aips.me123; layout &http://www.aips.me125; &http://www.aips.me125; title: &http://www.aips.me123; &http://www.aips.me123; title &http://www.aips.me125; &http://www.aips.me125; date: &http://www.aips.me123; &http://www.aips.me123; date &http://www.aips.me125; &http://www.aips.me125; tags: photos: - --- |
然后每次可以執(zhí)行帶layout的new命令生成照片文章:
1 | hexo new photo "photoPostName" http://www.aips.me新建照片文章 |
description
markdown文件頭中也可以添加description,以覆蓋全局配置文件中的description內(nèi)容,請(qǐng)參考下文_config.yml的介紹。
1 2 3 4 5 6 | title: hexo你的博客 date: 2013-11-22 17:11:54 categories: default tags: &http://www.aips.me91;hexo&http://www.aips.me93; description: 你對(duì)本頁(yè)的描述 --- |
hexo默認(rèn)會(huì)處理全部markdown和html文件,如果不想讓hexo處理你的文件,可以在文件頭中加入layout: false。
文章摘要
在需要顯示摘要的地方添加如下代碼即可:
1 2 | 以上是摘要 <!--more-->以下是余下全文 |
more以上內(nèi)容即是文章摘要,在主頁(yè)顯示,more以下內(nèi)容點(diǎn)擊『> Read More』鏈接打開(kāi)全文才顯示。
【注】hexo中所有文件的編碼格式均是UTF-8。
主題安裝
蘿卜白菜各有所愛(ài),玩博客換主題是必不可少的,hexo的主題列表 Hexo Themes。
我比較喜歡?pacman,modernist、ishgo,raytaylorism。Pacman最為優(yōu)秀,簡(jiǎn)潔大方小清新,同時(shí)移動(dòng)版本支持的也很好,但作者并沒(méi)有把很多參數(shù)分離出來(lái)給出可配置項(xiàng),我最終選擇了modernist。
安裝主題的方法就是一句git命令:
1 | git clone https://github.com/heroicyang/hexo-theme-modernist.git themes/modernist |
目錄是否是modernist無(wú)所謂,只要與_config.yml文件一致即可。
安裝完成后,打開(kāi)hexo\_config.yml,修改主題為modernist
1 | theme: modernist |
打開(kāi)hexo\themes\modernist目錄,編輯主題配置文件_config.yml:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | menu: http://www.aips.me配置頁(yè)頭顯示哪些菜單 http://www.aips.me Home: / Archives: /archives Reading: /reading About: /about http://www.aips.me Guestbook: /about excerpt_link: Read More http://www.aips.me摘要鏈接文字 archive_yearly: false http://www.aips.me按年存檔 widgets: http://www.aips.me配置頁(yè)腳顯示哪些小掛件 - category http://www.aips.me - tag - tagcloud - recent_posts http://www.aips.me - blogroll blogrolls: http://www.aips.me友情鏈接 - bruce sha - bruce sha's javaeye: http://buru.iteye.com - bruce sha - bruce sha's baidu space: http://hi.baidu.com/iburu fancybox: true http://www.aips.me是否開(kāi)啟fancybox效果 duoshuo_shortname: buru http://www.aips.me多說(shuō)賬號(hào) google_analytics: rss: |
更新主題
1 2 | cd themes/modernist git pull |
評(píng)論框
靜態(tài)博客要使用第三方評(píng)論系統(tǒng),hexo默認(rèn)集成的是Disqus,因?yàn)槟愣模試?guó)內(nèi)的話還是建議用多說(shuō)。
直接用你的微博/豆瓣/人人/百度/開(kāi)心網(wǎng)帳號(hào)登錄多說(shuō),做一下基本設(shè)置。如果使用modernist主題,在modernist_config.yml中配置duoshuo_shortname為多說(shuō)的基本設(shè)置->域名中的shortname即可。你也可以在多說(shuō)后臺(tái)自定義一下多說(shuō)評(píng)論框的格式,比如評(píng)論框的位置,對(duì)于css設(shè)置,可以參考這里,我是在 HeroicYang 的基礎(chǔ)上修改的。
如果你是有的其他第三方評(píng)論系統(tǒng),將通用代碼粘貼到 hexo\themes\modernist\layout\_partial\comment.ejs 里面,如下:
1 2 3 4 | <% if &http://www.aips.me40;config.disqus_shortname && page.comments&http://www.aips.me41;&http://www.aips.me123; %> <section id="comment">http://www.aips.me你的通用代碼 <% &http://www.aips.me125; %> |
自定義頁(yè)面
執(zhí)行new page命令
1 | hexo new page "about" |
在hexo\source\下會(huì)生成about目錄,里面有個(gè)index.md,直接編輯就可以了,然后在主題的_config.yml中將其配置顯示出來(lái)。
上述步驟,也可以手工生成,在hexo\source\下手工新建about和index.md也是完全等價(jià)的。
因?yàn)閙arkdown對(duì)table的支持不好,我是在about中直接建立index.html,里面書(shū)寫(xiě)頁(yè)面內(nèi)容,hexo會(huì)幫你加上頭和尾。
404頁(yè)面
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)目吧。
目前有如下幾個(gè)公益404接入地址,我選擇了騰訊的。404頁(yè)面,每個(gè)人可以做的更多。
騰訊公益404
404公益_益云(公益互聯(lián)網(wǎng))社會(huì)創(chuàng)新中心
失蹤兒童少年資料管理中心404
圖床
考慮到博客的速度,同時(shí)也為了便于博客的遷移,圖床是必須的。我強(qiáng)烈推薦七牛云存儲(chǔ),訪問(wèn)速度極快,支持日志、防盜鏈和水印。
免費(fèi)用戶有每月10GB流量+總空間10GB+PUT/DELETE 10萬(wàn)次請(qǐng)求+GET 100萬(wàn)次請(qǐng)求,這對(duì)個(gè)人博客來(lái)說(shuō)足夠,不夠的話點(diǎn)這個(gè)活動(dòng)頁(yè)面,也可通過(guò)邀請(qǐng)好友獲得獎(jiǎng)勵(lì),我也求一下七牛邀請(qǐng)。有一點(diǎn)要說(shuō)明的是,七牛沒(méi)有目錄的概念,但是文件名可以包含/,比如2013/11/27/reading/photos-0.jpg,參考這里關(guān)于key-value存儲(chǔ)系統(tǒng)。
如果你對(duì)七牛web版的文件管理界面不滿意,可以用官方的七牛云存儲(chǔ)工具。
申請(qǐng)域名(可選)
GitHubPages 默認(rèn)為每個(gè)用戶分配了一個(gè)二級(jí)域名『your_user_name.github.com』或『your_user_name.github.io』(具體可以看這里)。
如果你對(duì)上述域名不滿意,可以自己去申請(qǐng)一個(gè)自己的域名(周良常年代理注冊(cè),價(jià)格比官網(wǎng)便宜許多),然后綁定到GitHub Pages。綁定方法很簡(jiǎn)單,在repo根目錄下建立一個(gè)CNAME文件,里面寫(xiě)上域名即可。
命令
常用命令:
1 2 3 4 5 | hexo new "postName" http://www.aips.me新建文章 hexo new page "pageName" http://www.aips.me新建頁(yè)面 hexo generate http://www.aips.me生成靜態(tài)頁(yè)面至public目錄 hexo server http://www.aips.me開(kāi)啟預(yù)覽訪問(wèn)端口(默認(rèn)端口4000,'ctrl + c'關(guān)閉server) hexo deploy http://www.aips.me將.deploy目錄部署到GitHub |
常用復(fù)合命令:
1 2 | hexo deploy -g hexo server -g |
簡(jiǎn)寫(xiě):
1 2 3 4 | hexo n == hexo new hexo g == hexo generate hexo s == hexo server hexo d == hexo deploy |
至此,基本操作介紹完畢,如果你對(duì)Hexo這種博客方式有興趣,可以移步到我的代碼博客查看相關(guān)的教程:
http://www.aips.me/code/category/hexo
