使用hexo+github搭建免費(fèi)個(gè)人博客詳細(xì)教程

github+hexo.png

前言

使用github pages服務(wù)搭建博客的好處有:

  1. 全是靜態(tài)文件,訪問速度快;
  2. 免費(fèi)方便,不用花一分錢就可以搭建一個(gè)自由的個(gè)人博客,不需要服務(wù)器不需要后臺(tái);
  3. 可以隨意綁定自己的域名,不仔細(xì)看的話根本看不出來(lái)你的網(wǎng)站是基于github的;
  4. 數(shù)據(jù)絕對(duì)安全,基于github的版本管理,想恢復(fù)到哪個(gè)歷史版本都行;
  5. 博客內(nèi)容可以輕松打包、轉(zhuǎn)移、發(fā)布到其它平臺(tái),等等。

準(zhǔn)備工作

  • 在開始一切之前,你必須已經(jīng):
  • 有一個(gè)github賬號(hào),沒有的話去注冊(cè)一個(gè);
  • 安裝了node.js、npm,并了解相關(guān)基礎(chǔ)知識(shí);
  • 安裝了git for windows(或者其它git客戶端)

搭建github博客

創(chuàng)建倉(cāng)庫(kù)

新建一個(gè)名為你的 用戶名.github.io 的倉(cāng)庫(kù),比如說,如果你的github用戶名是test,那么你就新建test.github.io的倉(cāng)庫(kù)(必須是你的用戶名,其它名稱無(wú)效)將來(lái)你的網(wǎng)站訪問地址就是 http://test.github.io 了,是不是很方便?

由此可見,每一個(gè)github賬戶最多只能創(chuàng)建一個(gè)這樣可以直接使用域名訪問的倉(cāng)庫(kù)。

幾個(gè)注意的地方:

  1. 注冊(cè)的郵箱一定要驗(yàn)證,否則不會(huì)成功;
  2. 倉(cāng)庫(kù)名字必須是:username.github.io,其中username是你的用戶名;
  3. 倉(cāng)庫(kù)創(chuàng)建成功不會(huì)立即生效,需要過一段時(shí)間,大概10-30分鐘,或者更久,我的等了半個(gè)小時(shí)才生效;

創(chuàng)建成功后,默認(rèn)會(huì)在你這個(gè)倉(cāng)庫(kù)里生成一些示例頁(yè)面,以后你的網(wǎng)站所有代碼都是放在這個(gè)倉(cāng)庫(kù)里啦。

綁定域名

當(dāng)然,你不綁定域名肯定也是可以的,就用默認(rèn)的 xxx.github.io 來(lái)訪問,如果你想更個(gè)性一點(diǎn),想擁有一個(gè)屬于自己的域名,那也是OK的。

首先你要注冊(cè)一個(gè)域名,域名注冊(cè)以前總是推薦去godaddy,現(xiàn)在覺得其實(shí)國(guó)內(nèi)的阿里云也挺不錯(cuò)的,價(jià)格也不貴,畢竟是大公司,放心!

綁定域名分2種情況:帶www和不帶www的。

域名配置最常見有2種方式,CNAME和A記錄,CNAME填寫域名,A記錄填寫IP,由于不帶www方式只能采用A記錄,所以必須先ping一下你的用戶名.github.io的IP,然后到你的域名DNS設(shè)置頁(yè),將A記錄指向你ping出來(lái)的IP,將CNAME指向你的用戶名.github.io,這樣可以保證無(wú)論是否添加www都可以訪問,如下:

20160823_191336_238_8683.png

然后到你的github項(xiàng)目根目錄新建一個(gè)名為CNAME的文件(無(wú)后綴),里面填寫你的域名,加不加www看你自己喜好,因?yàn)榻?jīng)測(cè)試:

另外說一句,在你綁定了新域名之后,原來(lái)的你的用戶名.github.io
并沒有失效,而是會(huì)自動(dòng)跳轉(zhuǎn)到你的新域名。

配置SSH key

為什么要配置這個(gè)呢?因?yàn)槟闾峤淮a肯定要擁有你的github權(quán)限才可以,但是直接使用用戶名和密碼太不安全了,所以我們使用ssh key來(lái)解決本地和服務(wù)器的連接問題。

用git bash執(zhí)行如下命令:

$ cd ~/. ssh #檢查本機(jī)已存在的ssh密鑰

如果提示:No such file or directory 說明你是第一次使用git。

  • $ ssh-keygen -t rsa -C "郵件地址"

然后連續(xù)3次回車,最終會(huì)生成一個(gè)文件在用戶目錄下,打開用戶目錄,找到.ssh\id_rsa.pub文件,記事本打開并復(fù)制里面的內(nèi)容,打開你的github主頁(yè),進(jìn)入個(gè)人設(shè)置 -> SSH and GPG keys -> New SSH key:

20160818_143914_495_9084.png

將剛復(fù)制的內(nèi)容粘貼到key那里,title隨便填,保存。

測(cè)試是否成功

$ ssh -T [git@github.com](mailto:git@github.com) # 注意郵箱地址不用改

如果提示Are you sure you want to continue connecting (yes/no)?,輸入yes,然后會(huì)看到:

  • Hi liuxianan! You’ve successfully authenticated, but GitHub does not provide shell access.

看到這個(gè)信息說明SSH已配置成功!

此時(shí)你還需要配置:

 $ git config --global user.name "liuxianan"http:// 你的github用戶名,非昵稱
 $ git config --global user.email "[xxx@qq.com](mailto:xxx@qq.com)"http:// 填寫你的github注冊(cè)郵箱

具體這個(gè)配置是干嘛的我沒仔細(xì)深究。

使用hexo寫博客

hexo簡(jiǎn)介


Hexo是一個(gè)簡(jiǎn)單、快速、強(qiáng)大的基于 Github Pages 的博客發(fā)布工具,支持Markdown格式,有眾多優(yōu)秀插件和主題。
官網(wǎng): http://hexo.io
github: https://github.com/hexojs/hexo

原理


由于github pages存放的都是靜態(tài)文件,博客存放的不只是文章內(nèi)容,還有文章列表、分類、標(biāo)簽、翻頁(yè)等動(dòng)態(tài)內(nèi)容,假如每次寫完一篇文章都要手動(dòng)更新博文目錄和相關(guān)鏈接信息,相信誰(shuí)都會(huì)瘋掉,所以hexo所做的就是將這些md文件都放在本地,每次寫完文章后調(diào)用寫好的命令來(lái)批量完成相關(guān)頁(yè)面的生成,然后再將有改動(dòng)的頁(yè)面提交到github。

注意事項(xiàng)


安裝之前先來(lái)說幾個(gè)注意事項(xiàng):

  1. 很多命令既可以用Windows的cmd來(lái)完成,也可以使用git bash來(lái)完成,但是部分命令會(huì)有一些問題,為避免不必要的問題,建議全部使用git bash來(lái)執(zhí)行;
  2. hexo不同版本差別比較大,網(wǎng)上很多文章的配置信息都是基于2.x的,所以注意不要被誤導(dǎo);
    3.hexo有2種_config.yml文件,一個(gè)是根目錄下的全局的_config.yml,一個(gè)是各個(gè)theme下的;

安裝


$ npm install -g hexo

初始化


在電腦的某個(gè)地方新建一個(gè)名為hexo的文件夾(名字可以隨便取),比如我的是F:\Workspaces\hexo,由于這個(gè)文件夾將來(lái)就作為你存放代碼的地方,所以最好不要隨便放。

$ cd /f/Workspaces/hexo/
$ hexo init

hexo會(huì)自動(dòng)下載一些文件到這個(gè)目錄,包括node_modules,目錄結(jié)構(gòu)如下圖:


20160818_115922_773_1148.png

$ hexo g # 生成
$ hexo s # 啟動(dòng)服務(wù)

執(zhí)行以上命令之后,hexo就會(huì)在public文件夾生成相關(guān)html文件,這些文件將來(lái)都是要提交到github去的:


20160818_120700_028_2426.png

** hexo s **是開啟本地預(yù)覽服務(wù),打開瀏覽器訪問 http://localhost:4000 即可看到內(nèi)容,很多人會(huì)碰到瀏覽器一直在轉(zhuǎn)圈但是就是加載不出來(lái)的問題,一般情況下是因?yàn)槎丝谡加玫木壒剩驗(yàn)?000這個(gè)端口太常見了,解決端口沖突問題請(qǐng)參考這篇文章:

http://blog.liuxianan.com/windows-port-bind.html

第一次初始化的時(shí)候hexo已經(jīng)幫我們寫了一篇名為 Hello World 的文章,默認(rèn)的主題比較丑,打開時(shí)就是這個(gè)樣子:

timg.jpg

修改主題


既然默認(rèn)主題很丑,那我們別的不做,首先來(lái)替換一個(gè)好看點(diǎn)的主題。這是 官方主題

個(gè)人比較喜歡的2個(gè)主題:hexo-theme-jekyllhexo-theme-yilia

首先下載這個(gè)主題:

 $ cd /f/Workspaces/hexo/
 $ git clone https://github.com/litten/hexo-theme-yilia.git themes/yilia

下載后的主題都在這里:


20160818_134500_245_0912.png

修改_config.yml中的theme: landscape改為theme: yilia,然后重新執(zhí)行hexo g來(lái)重新生成。

如果出現(xiàn)一些莫名其妙的問題,可以先執(zhí)行hexo clean來(lái)清理一下public的內(nèi)容,然后再來(lái)重新生成和發(fā)布。

上傳之前


在上傳代碼到github之前,一定要記得先把你以前所有代碼下載下來(lái)(雖然github有版本管理,但備份一下總是好的),因?yàn)閺膆exo提交代碼時(shí)會(huì)把你以前的所有代碼都刪掉。

上傳到github


如果你一切都配置好了,發(fā)布上傳很容易,一句hexo d就搞定,當(dāng)然關(guān)鍵還是你要把所有東西配置好。

首先,ssh key肯定要配置好。

其次,配置_config.yml中有關(guān)deploy的部分:

正確寫法:

deploy:
   type: git
   repository: [git@github.com](mailto:git@github.com):liuxianan/liuxianan.github.io.git 
   branch: master

錯(cuò)誤寫法:

deploy:
   type: github
   repository: [https://github.com/liuxianan/liuxianan.github.io.git](https://github.com/liuxianan/liuxianan.github.io.git)
   branch: master

后面一種寫法是hexo2.x的寫法,現(xiàn)在已經(jīng)不行了,無(wú)論是哪種寫法,此時(shí)直接執(zhí)行hexo d的話一般會(huì)報(bào)如下錯(cuò)誤:

Deployer not found: github 或者 Deployer not found: git

原因是還需要安裝一個(gè)插件:

npm install hexo-deployer-git --save

其它命令不確定,部署這個(gè)命令一定要用git bash,否則會(huì)提示Permission denied (publickey).

打開你的git bash,輸入hexo d就會(huì)將本次有改動(dòng)的代碼全部提交,沒有改動(dòng)的不會(huì):

20160818_140441_769_5024.png

保留CNAME、README.md等文件


提交之后網(wǎng)頁(yè)上一看,發(fā)現(xiàn)以前其它代碼都沒了,此時(shí)不要慌,一些非md文件可以把他們放到source文件夾下,這里的所有文件都會(huì)原樣復(fù)制(除了md文件)到public目錄的:

20160818_141037_580_8035.png

由于hexo默認(rèn)會(huì)把所有md文件都轉(zhuǎn)換成html,包括README.md,所有需要每次生成之后、上傳之前,手動(dòng)將README.md復(fù)制到public目錄,并刪除README.html。

常用hexo命令


常見命令:

hexo new "postName" #新建文章
hexo new page "pageName" #新建頁(yè)面
hexo generate #生成靜態(tài)頁(yè)面至public目錄
hexo server #開啟預(yù)覽訪問端口(默認(rèn)端口4000,'ctrl + c'關(guān)閉server)
hexo deploy #部署到GitHub
hexo help  # 查看幫助
hexo version  #查看Hexo的版本

縮寫:

hexo n == hexo new
hexo g == hexo generate
hexo s == hexo server
hexo d == hexo deploy

組合命令:

hexo s -g #生成并本地預(yù)覽
hexo d -g #生成并上傳

_config.yml


這里面都是一些全局配置,每個(gè)參數(shù)的意思都比較簡(jiǎn)單明了,所以就不作詳細(xì)介紹了。

需要特別注意的地方是,冒號(hào)后面必須有一個(gè)空格,否則可能會(huì)出問題。

寫博客

定位到我們的hexo根目錄,執(zhí)行命令:
hexo new 'my-first-blog'
hexo會(huì)幫我們?cè)?strong>_posts下生成相關(guān)md文件:

20160823_183047_352_1475.png

我們只需要打開這個(gè)文件就可以開始寫博客了,默認(rèn)生成如下內(nèi)容:


20160823_183325_470_9306.png

當(dāng)然你也可以直接自己新建md文件,用這個(gè)命令的好處是幫我們自動(dòng)生成了時(shí)間。

一般完整格式如下:

---
title: postName #文章頁(yè)面上的顯示名稱,一般是中文
date: 2013-12-02 15:30:16 #文章生成時(shí)間,一般不改,當(dāng)然也可以任意修改
categories: 默認(rèn)分類 #分類
tags: [tag1,tag2,tag3] #文章標(biāo)簽,可空,多標(biāo)簽請(qǐng)用格式,注意:后面有個(gè)空格
description: 附加一段文章摘要,字?jǐn)?shù)最好在140字以內(nèi),會(huì)出現(xiàn)在meta的description里面
---

以下是正文

那么hexo new page 'postName'命令和hexo new 'postName'有什么區(qū)別呢?
hexo new page "my-second-blog"
生成如下:

20160823_184852_854_6502.png

最終部署時(shí)生成:hexo\public\my-second-blog\index.html,但是它不會(huì)作為文章出現(xiàn)在博文目錄.

寫博客工具


那么用什么工具寫博客呢?這個(gè)我還沒去找,以前自己使用editor.md簡(jiǎn)單弄了個(gè),大家有好用的hexo寫博客工具可以推薦個(gè)。

如何讓博文列表不顯示全部?jī)?nèi)容

默認(rèn)情況下,生成的博文目錄會(huì)顯示全部的文章內(nèi)容,如何設(shè)置文章摘要的長(zhǎng)度呢?
答案是在合適的位置加上****即可,例如:

# 前言

使用github pages服務(wù)搭建博客的好處有:

1. 全是靜態(tài)文件,訪問速度快;
2. 免費(fèi)方便,不用花一分錢就可以搭建一個(gè)自由的個(gè)人博客,不需要服務(wù)器不需要后臺(tái);
3. 可以隨意綁定自己的域名,不仔細(xì)看的話根本看不出來(lái)你的網(wǎng)站是基于github的;

<!--more-->

4. 數(shù)據(jù)絕對(duì)安全,基于github的版本管理,想恢復(fù)到哪個(gè)歷史版本都行;
5. 博客內(nèi)容可以輕松打包、轉(zhuǎn)移、發(fā)布到其它平臺(tái);
6. 等等;

最終效果:

20160823_184633_653_1893.png

最終效果

可以訪問我的git博客來(lái)查看效果: http://mygit.me

不過呢,其實(shí)這個(gè)博客我只是拿來(lái)玩一玩的,沒打算真的把它當(dāng)博客,因?yàn)槲乙呀?jīng)有一個(gè)自己的博客了,哈哈!正因如此,本文僅限入門學(xué)習(xí),關(guān)于hexo搭建個(gè)人博客的更高級(jí)玩法大家可以另找教程。

參考

http://www.cnblogs.com/zhcncn/p/4097881.html
http://www.lxweimin.com/p/05289a4bc8b2

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

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