Mac上搭建基于GitHub的Hexo博客

原文 : 與佳期的個(gè)人博客(gonghonglou.com)

這是一篇詳細(xì)文章來講述用Mac搭建Hexo博客于Github上的完整歷程, 也是踩了無數(shù)的坑搭起來的,現(xiàn)在寫下些經(jīng)驗(yàn)來分享,希望能幫大家少踩些坑。

曾買過一款阿里的云虛擬主機(jī),后來才發(fā)現(xiàn)不能自己裝軟件只能上傳網(wǎng)站程序,除非另買ECS,對(duì)于第一個(gè)月的實(shí)習(xí)工資還沒拿到手的我想想還是算了,先用Wordpress搭起來玩玩吧。然而在上傳網(wǎng)站程序中幾次失敗,本就覺得沒勁,遂一怒轉(zhuǎn)向Github。好了,廢話少說,開始吧。

環(huán)境配置

Hexo官網(wǎng)上本就有對(duì)Hexo安裝及使用的詳細(xì)介紹,墻裂推薦。這里來講述自己安裝的親身步驟,或有區(qū)別。

1.Node.js

用來生成靜態(tài)頁面。移步Node.js官網(wǎng),下載v5.5.0 Stable 一路安裝即可。

2.Git

用來將本地Hexo內(nèi)容提交到Github上。Xcode自帶Git,這里不再贅述。如果沒有Xcode可以參考Hexo官網(wǎng)上的安裝方法。

安裝Hexo

當(dāng)Node.js和Git都安裝好后就可以正式安裝Hexo了,終端執(zhí)行如下命令:

$ sudo npm install -g hexo      

輸入管理員密碼(Mac登錄密碼)即開始安裝 (sudo:linux系統(tǒng)管理指令 -g:全局安裝)

注意坑一:Hexo官網(wǎng)上的安裝命令是$ npm install -g hexo-cli,安裝時(shí)不要忘記前面加上sudo,否則會(huì)因?yàn)闄?quán)限問題報(bào)錯(cuò)。

初始化

終端cd到一個(gè)你選定的目錄,執(zhí)行hexo init命令:

$ hexo init blog

blog是你建立的文件夾名稱。cd到blog文件夾下,執(zhí)行如下命令,安裝npm:

$ npm install

執(zhí)行如下命令,開啟hexo服務(wù)器:

$ hexo s

此時(shí),瀏覽器中打開網(wǎng)址http://localhost:4000,能看到如下頁面:

http://localhost:4000

本地設(shè)置好后,接下來開始關(guān)聯(lián)Github。

關(guān)聯(lián)Github

1.創(chuàng)建倉庫

登錄你的Github帳號(hào),新建倉庫,名為用戶名.github.io固定寫法,如gonghonglou.github.io即下圖中1所示:

本地的blog文件夾下內(nèi)容為:

_config.yml 
db.json 
node_modules 
package.json
scaffolds
source
themes

終端cd到blog文件夾下,vim打開_config.yml,命令如下:

$ vim _config.yml

打開后往下滑到最后,修改成下邊的樣子:

deploy:
  type: git
  repository: https://github.com/gonghonglou/gonghonglou.github.io.git
   branch: master     

你需要將repositorygonghonglou換成你自己的用戶名,地址在上圖2位置獲取。hexo 3.1.1版本后type:值為git

注意坑二:在配置所有的_config.yml文件時(shí)(包括theme中的),在所有的冒號(hào):后邊都要加一個(gè)空格,否則執(zhí)行hexo命令會(huì)報(bào)錯(cuò),切記 切記

blog文件夾目錄下執(zhí)行生成靜態(tài)頁面命令:

$ hexo generate     或者:hexo g  

此時(shí)若出現(xiàn)如下報(bào)錯(cuò):

ERROR Local hexo not found in ~/blog
ERROR Try runing: 'npm install hexo --save'

則執(zhí)行命令:

$ npm install hexo --save

若無報(bào)錯(cuò),自行忽略此步驟。

再執(zhí)行配置命令:

$ hexo deploy           或者:hexo d

注意坑三:若執(zhí)行命令hexo deploy仍然報(bào)錯(cuò):無法連接git或找不到git,則執(zhí)行如下命令來安裝hexo-deployer-git

  $ npm install hexo-deployer-git --save      

再次執(zhí)行hexo generatehexo deploy命令。

若你未關(guān)聯(lián)Github,則執(zhí)行hexo deploy命令時(shí)終端會(huì)提示你輸入Github的用戶名和密碼,即

Username for 'https://github.com':
Password for 'https://github.com':

hexo deploy命令執(zhí)行成功后,瀏覽器中打開網(wǎng)址http://gonghonglou.github.io(將gonghonglou換成你的用戶名)能看到和打開http://localhost:4000時(shí)一樣的頁面。

為避免每次輸入Github用戶名和密碼的麻煩,可參照第二節(jié)方法

2.添加ssh key到Github

#1.1.檢查SSH keys是否存在Github

執(zhí)行如下命令,檢查SSH keys是否存在。如果有文件id_rsa.pubid_dsa.pub,則直接進(jìn)入步驟1.3將SSH key添加到Github中,否則進(jìn)入下一步生成SSH key。

$ ls -al ~/.ssh

1.2.生成新的ssh key

執(zhí)行如下命令生成public/private rsa key pair,注意將your_email@example.com換成你自己注冊Github的郵箱地址。

$ ssh-keygen -t rsa -C "your_email@example.com"

默認(rèn)會(huì)在相應(yīng)路徑下(~/.ssh/id_rsa.pub)生成id_rsaid_rsa.pub兩個(gè)文件。

1.3.將ssh key添加到Github中

Find前往文件夾~/.ssh/id_rsa.pub打開id_rsa.pub文件,里面的信息即為SSH key,將這些信息復(fù)制到Github的Add SSH key頁面即可。

進(jìn)入Github --> Settings --> SSH keys --> add SSH key:

Title里任意添一個(gè)標(biāo)題,將復(fù)制的內(nèi)容粘貼到Key里,點(diǎn)擊下方Add key綠色按鈕即可。

3.發(fā)布文章

終端cd到blog文件夾下,執(zhí)行如下命令新建文章:

hexo new "postName" 

名為postName.md的文件會(huì)建在目錄/blog/source/_posts下。你當(dāng)然可以用vim來編輯文章。我在用Mou編輯器,支持預(yù)覽,雖然其預(yù)覽主題并非我喜歡,如果你有好用的markdown編輯器請推薦給我,感激不盡!

文章編輯完成后,終端cd到blog文件夾下,執(zhí)行如下命令來發(fā)布:

hexo generate                 //生成靜態(tài)頁面

hexo deploy                   //將文章部署到Github

至此,Mac上搭建基于Github的Hexo博客就完成了。下面的內(nèi)容是介紹安裝theme,添加評(píng)論功能和綁定個(gè)人域名,如果有興趣且還有耐心的話,請繼續(xù)吧。

安裝theme

你可以到Hexo官網(wǎng)主題頁去搜尋自己喜歡的theme。這里以hexo-theme-next為例

終端cd到 blog 目錄下執(zhí)行如下命令:

$ git clone https://github.com/iissnan/hexo-theme-next themes/next

blog目錄下_config.ymltheme的名稱landscape修改為next

終端cd到blog目錄下執(zhí)行如下命令(每次部署文章的步驟):

$ hexo clean           //清除緩存文件 (db.json) 和已生成的靜態(tài)文件 (public)

$ hexo g             //生成緩存和靜態(tài)文件
 
$ hexo d             //重新部署到服務(wù)器

至于更改theme內(nèi)容,比如名稱,描述,頭像等去修改blog/_config.yml文件和blog/themes/next/_config.yml文件中對(duì)應(yīng)的屬性名稱即可, 不要忘記冒號(hào):后加空格。 NexT 使用文檔里有極詳細(xì)的介紹。

綁定個(gè)人域名

現(xiàn)在使用的域名是Github提供的二級(jí)域名,也可以綁定為自己的個(gè)性域名。購買域名,可以到GoDaddy官網(wǎng),網(wǎng)友親切稱呼為:狗爹,也可以到阿里萬網(wǎng)購買。我是在萬網(wǎng)買的,可直接在其網(wǎng)站做域名解析。

1.Github端

/blog/themes/landscape/source目錄下新建文件名為:CNAME文件,注意沒有后綴名!直接將自己的域名如:gonghonglou.com寫入。

終端cd到blog目錄下執(zhí)行如下命令重新部署:

$ hexo clean

$ hexo g

$ hexo d

注意坑四:網(wǎng)上許多都是說在Github上直接新建CNAME文件,如果這樣的話,在你下一次執(zhí)行hexo d部署命令后CNAME文件就消失了,因?yàn)楸镜貨]有此文件嘛。

2.域名解析

如果將域名指向一個(gè)域名,實(shí)現(xiàn)與被指向域名相同的訪問效果,需要增加CNAME記錄。登錄萬網(wǎng),在你購買的域名后邊點(diǎn)擊:解析 --> 添加解析

記錄類型:CNAME

主機(jī)記錄:將域名解析為example.com(不帶www),填寫@或者不填寫

記錄值:gonghonglou.github.io. (不要忘記最后的.gonghonglou改為你自己的用戶名),點(diǎn)擊保存即可,如下圖:

域名解析

此時(shí),點(diǎn)擊訪問http://gonghonglou.com和訪問http://gonghonglou.github.io效果一致,大功告成!

------11.10更新 以下------------------------------------------------

1、解決 deploy 后博客空白問題

昨晚更新了一下 blog 做了個(gè)部署,結(jié)果blog就掛了,打開 gonghonglou.com 頁面顯示一片空白。然而 hexo s 開啟本地服務(wù)器 localhost:4000 訪問是沒問題的。
上網(wǎng)查了一下,原來是 GitHub Pages 禁止了 source/vendors 目錄的訪問。Github 在 11 月 3 日更新了版本。其中包括升級(jí)了 Jekyll 到 3.3。Jekyll 為了加快構(gòu)建速度,忽略 vendornode_modules 文件夾。所以部署到 GitHub 后,識(shí)別不到本地下的的這個(gè)文件夾 blog/themes/next/source/vendor,你只需要給這個(gè)文件夾換個(gè)名字再重新部署一次就 OK 了。nexT 在 GitHub 上的 isusses 已經(jīng)給出了解決方案:#1214

#1214

還有另一種解決方案就是升級(jí) nexT 主題,cd 到 blog/themes/next/ 下執(zhí)行命令 git pull 更新。
然而,有可能升級(jí)后多說評(píng)論等第三方工具會(huì)失效,慎用。

2、將個(gè)人博客同時(shí)部署到 GitHub 和 Coding

1、首先到 Coding 上注冊并開一個(gè)項(xiàng)目,項(xiàng)目名稱和用戶個(gè)性后綴相同(方便二級(jí)域名訪問博客),拿到項(xiàng)目的 https 地址

2、打開本地 blog 目錄下的 _config.yml 文件,修改如下

deploy:
  type: git
  repository: 
            github: https://github.com/gonghonglou/gonghonglou.github.io.git
            coding: https://git.coding.net/gonghonglou/gonghonglou.git
  branch: master

3、cd 到本地 blog/source 目錄下執(zhí)行如下命令新建 Staticfile 文件

$ touch Staticfile  #名字必須是Staticfile

原因是 coding.net 需要以這個(gè)文件來作為靜態(tài)文件部署的標(biāo)志,就是說看到這個(gè) Staticfile 就知道按照靜態(tài)文件來發(fā)布。

4、執(zhí)行發(fā)布命令 hexo ghexo d

5、個(gè)人域名添加兩條 CNAME 解析。將 gonghonglou.github.io. 解析為 [海外] ,將 gonghonglou.coding.me. 解析為 [默認(rèn)]

這樣就是為了從國內(nèi)訪問 gonghonglou.com 就是訪問 Coding 上的博客項(xiàng)目,從國外訪問 gonghonglou.com 就是訪問 GitHub 上的博客項(xiàng)目。

6、到 Coding 上的博客項(xiàng)目主頁,點(diǎn)擊 Pages服務(wù) 輸入部署分支 master 立即開啟

這樣就可以訪問自己在 Coding 上的個(gè)人博客了 gonghonglou.coding.me/gonghonglou 如果像這樣你的用戶后綴名與博客項(xiàng)目名稱相同你還可以省略項(xiàng)目名稱直接訪問 gonghonglou.coding.me

7、添加域名綁定,輸入個(gè)人域名就 OK 了,可能需要耐心等待幾分鐘,這樣在國內(nèi)訪問自己的博客就快得多了。

試了一下在國內(nèi)訪問 gonghonglou.com 攔不住 要飛起來了??

------11.10更新 以上------------------------------------------------

后記

以上便是我搭建與佳期的個(gè)人博客(gonghonglou.com)的全過程,希望對(duì)大家有所幫助,歡迎吐槽~

轉(zhuǎn)載請保留原文地址:http://gonghonglou.com/2016/02/03/firstblog

參考鏈接

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,739評(píng)論 6 534
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,634評(píng)論 3 419
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,653評(píng)論 0 377
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,063評(píng)論 1 314
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 71,835評(píng)論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,235評(píng)論 1 324
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,315評(píng)論 3 442
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,459評(píng)論 0 289
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,000評(píng)論 1 335
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,819評(píng)論 3 355
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 43,004評(píng)論 1 370
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,560評(píng)論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,257評(píng)論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,676評(píng)論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,937評(píng)論 1 288
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 51,717評(píng)論 3 393
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 48,003評(píng)論 2 374

推薦閱讀更多精彩內(nèi)容