使用 Hexo & GitPage 搭建博客

概述

GitPage 是個(gè)什么東西豌注?它和 GitHub 是什么關(guān)系志衣?Hexo 又是什么窿吩?它和 GitPage 又是什么關(guān)系或链?為什么我要用 Hexo + GitPage 搭建博客?這些問題在我不了解 GitPage 之前都是一堆問號(hào)罕邀,想必大多數(shù)小白都和我一樣很懵畅形,現(xiàn)在網(wǎng)上關(guān)于搭建博客的教程一大堆,但是當(dāng)初我在搭建的時(shí)候照著步驟一步一步搞感覺很不爽诉探,直到最后博客搭完了才明白以上幾個(gè)問題,所以這里我想先給大家回答一下上面幾個(gè)問題棍厌,然后再逐步教大家使用 Hexo + GitPage 搭建屬于你自己的博客肾胯。

Hexo 簡(jiǎn)述

Hexo 是一個(gè)快速、簡(jiǎn)潔且高效的博客框架耘纱。Hexo 使用 Markdown(或其他渲染引擎)解析文章敬肚,使用 Node.js 渲染頁面,通常在很短的時(shí)間內(nèi)即可利用靚麗的主題生成靜態(tài)網(wǎng)頁束析。同時(shí) Hexo 也擁有強(qiáng)大的插件系統(tǒng)艳馒,支持 Jade, CoffeeScript 等諸多強(qiáng)大插件。

GitPage 簡(jiǎn)述

GitPage 與 GitHub 同屬一個(gè)組織 GitHub Inc.,可以說 GitPage 出生的目的就是為了服務(wù)于 GitHub弄慰,我們知道 GitHub 上有眾多非常優(yōu)秀的開源項(xiàng)目第美,有些項(xiàng)目比較大,涉及到框架級(jí)別的項(xiàng)目它的說明文檔就不是寫幾個(gè) Readme 就能講清楚的事了陆爽,所以這種情況下這些項(xiàng)目的維護(hù)者就急需一個(gè)站點(diǎn)來詳盡展示此項(xiàng)目的功能什往、用法、及更新動(dòng)態(tài)等等慌闭,比如大名鼎鼎的 ReactiveX 的 GitPage 地址為 http://reactivex.github.io 你在瀏覽器訪問這個(gè) URL 會(huì)自動(dòng)跳轉(zhuǎn)到 reactivex.io别威,這是其自定義域名(這是 GitPage 又一個(gè)很贊的功能,后面詳細(xì)介紹)驴剔,那么問題來了省古,程序猿們雖然看起來比較萬能,但實(shí)際上并不是萬能的丧失,所以可能一些研究底層架構(gòu)衫樊,程序開發(fā)很 NB 的程序員卻真的是 HTML、CSS利花、Linux 小白科侈,畢竟術(shù)業(yè)有專攻啊,所以這時(shí)候讓他們自己去搭個(gè)站點(diǎn)就真的頭疼了炒事,畢竟是有時(shí)間成本的臀栈。

于是 GitPage 誕生了,GitPage 允許你將你的博客創(chuàng)建為一個(gè) GitHub Project挠乳,通過 your-account.github.io 這樣的特殊項(xiàng)目名稱與 GitPage 進(jìn)行關(guān)聯(lián)权薯,然后,你只需要像平時(shí)一樣 commit 你的博文到 GitHub 上就 OK 了睡扬,GitPage 會(huì)自動(dòng)將你的更新部署出去盟蚣,完全不需要考慮服務(wù)器、數(shù)據(jù)庫卖怜、運(yùn)維屎开、甚至 HTML 等這些發(fā)布站點(diǎn)的必備技能,所以 GitPage 誕生的目的就是要把你的專注點(diǎn)拉回到寫文章上而不需要花時(shí)間去考慮其它事情马靠。

這時(shí)你可能會(huì)注意到奄抽,我要如何去個(gè)性化我的站點(diǎn)?我真的僅僅需要 commit 一個(gè)文件上去就 OK 嗎甩鳄?當(dāng)然不是的逞度,想要個(gè)性化自己的站點(diǎn)還需要一個(gè)博客框架以及一款可自由配置的主題,接著 Hexo 閃亮登場(chǎng)[手動(dòng)撒花]妙啃,Hexo 簡(jiǎn)述在上面档泽,詳細(xì)介紹請(qǐng)看 Hexo 中文官網(wǎng),Hexo 很好的支持了 Markdown 語法的解析,炫酷的博客主題也很多馆匿,大家可以去 Hexo Themes 慢慢挑選抑胎,我目前用的是 NexT 這個(gè)主題。

OK 甜熔,接下來正式開始著手搭建吧圆恤。

搭建步驟

環(huán)境準(zhǔn)備

  • 安裝 Node.js(我們要用它來安裝博客框架、渲染主題等)腔稀。
  • 安裝 Git(我們要用它來下載主題盆昙、提交、部署文章等)焊虏。

安裝 Hexo

以上兩個(gè)必備程序安裝完成后淡喜,只需要用 git-bash 執(zhí)行如下命令即可安裝 Hexo。

$ npm install -g hexo-cli

建站

安裝 Hexo 完成后诵闭,請(qǐng)執(zhí)行下列命令炼团,Hexo 將會(huì)在指定文件夾 <folder> 中新建所需要的文件。

$ hexo init <folder>
$ cd <folder>
$ npm install

新建完成后疏尿,指定文件夾 <folder> 的目錄如下:

.
├── _config.yml
├── package.json
├── scaffolds
├── source
|   ├── _drafts
|   └── _posts
└── themes
文件/文件夾 作用
_config.yml 網(wǎng)站的配置文件
package.json 應(yīng)用程序的信息
scaffolds 模版文件夾瘟芝。當(dāng)您新建文章時(shí),Hexo 會(huì)根據(jù) scaffold 來建立文件
source 資源文件夾是存放用戶資源的地方褥琐。除 _posts 文件夾之外锌俱,開頭命名為 _ (下劃線)的文件 / 文件夾和隱藏的文件將會(huì)被忽略。Markdown 和 HTML 文件會(huì)被解析并放到 public 文件夾敌呈,而其他文件會(huì)被拷貝過去
themes 主題文件夾贸宏。Hexo 會(huì)根據(jù)主題來生成靜態(tài)頁面

創(chuàng)建主題

使用如下命令下載主題:

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

你也可以下載多個(gè)主題,然后修改 _config.yml(注意是網(wǎng)站的配置文件而非主題的配置文件) 內(nèi)的 theme 設(shè)定磕洪,即可切換主題吭练。一個(gè)主題通常有以下結(jié)構(gòu):

.
├── _config.yml
├── languages
├── layout
├── scripts
└── source
文件/文件夾 作用
_config.yml 主題的配置文件
languages 語言文件夾,請(qǐng)參見國際化 (i18n)
layout 布局文件夾析显。用于存放主題的模板文件鲫咽,決定了網(wǎng)站內(nèi)容的呈現(xiàn)方式,您可參考模板以獲得更多信息
scripts 腳本文件夾叫榕。在啟動(dòng)時(shí)浑侥,Hexo 會(huì)載入此文件夾內(nèi)的 JavaScript 文件,參見插件獲取更多信息
source 資源文件夾晰绎,除了模板以外的 Asset,例如 CSS括丁、JavaScript 文件等荞下,都應(yīng)該放在這個(gè)文件夾中。文件或文件夾開頭名稱為 _(下劃線線)或隱藏的文件會(huì)被忽略

主題配置

每個(gè)主題的配置文件 _config.yml 內(nèi)容可能都不太一樣,但是大致都包括了菜單欄尖昏、側(cè)邊欄仰税、站點(diǎn)圖標(biāo)、頭像等常用項(xiàng)抽诉,如下是 NexT 主題的部分配置細(xì)節(jié)展示陨簇,其它主題可以去主題官網(wǎng)詳細(xì)了解。

站點(diǎn)圖標(biāo)設(shè)置:

favicon:
  small: /images/skyrin-16.png
  medium: /images/skyrin-32.png
  apple_touch_icon: /images/skyrin-180.png
  safari_pinned_tab: /images/logo.svg
  #android_manifest: /images/manifest.json
  #ms_browserconfig: /images/browserconfig.xml

頁腳設(shè)置:

footer:
  # Specify the date when the site was setup.
  # If not defined, current year will be used.
  #since: 2015

  # Icon between year and copyright info.
  icon: heart

  # If not defined, will be used `author` from Hexo main config.
  copyright:
  # -------------------------------------------------------------
  # Hexo link (Powered by Hexo).
  powered: false

  theme:
    # Theme & scheme info link (Theme - NexT.scheme).
    enable: false
    # Version info of NexT after scheme info (vX.X.X).
    version: true
  custom_text : Hosted by <a target="_blank"  style="font-weight:bold">Coding Pages</a>

菜單設(shè)置:

menu:
  home: / || home
  #about: /about/ || user
  tags: /tags/ || tags
  categories: /categories/ || th
  archives: /archives/ || archive
  #schedule: /schedule/ || calendar
  #sitemap: /sitemap.xml || sitemap
  #commonweal: /404/ || heartbeat

# Enable/Disable menu icons.
menu_icons:
  enable: true

方案設(shè)置:

#scheme: Muse
scheme: Mist
#scheme: Pisces
#scheme: Gemini

社交:

social:
  GitHub: https://github.com/ || github   #‘||’右側(cè)為小圖標(biāo)名稱迹淌,圖標(biāo)來源 https://fontawesome.com/河绽,可自定義
  E-Mail: mailto:cnskyrin@163.com || envelope
  簡(jiǎn)書: http://www.reibang.com/u/32f1afa17c58 || 
  音樂: http://www.xiami.com/collect/360454952 || music
  #Twitter: https://twitter.com/yourname || twitter
  #FB Page: https://www.facebook.com/yourname || facebook
  #VK Group: https://vk.com/yourname || vk
  #StackOverflow: https://stackoverflow.com/yourname || stack-overflow
  #YouTube: https://youtube.com/yourname || youtube
  #Instagram: https://instagram.com/yourname || instagram
  #Skype: skype:yourname?call|chat || skype

social_icons:
  enable: true
  icons_only: false
  transition: false

側(cè)欄頭像:

# Sidebar Avatar
# in theme directory(source/images): /images/avatar.gif
# in site  directory(source/uploads): /uploads/avatar.gif
avatar: /images/avatar.gif

測(cè)試及部署站點(diǎn)

如果在/themes目錄下包含多個(gè)主題樣式的話,請(qǐng)先在網(wǎng)站配置文件_config.yml中指定你需要使用樣式

theme: next # 參數(shù)必須與 /themes 目錄下主題目錄名相同

在站點(diǎn)根目錄打開命令行唉窃,執(zhí)行hexo s耙饰,如下圖所示狀態(tài)

image.png

在瀏覽器中訪問http://localhost:4000/即可預(yù)覽網(wǎng)站全貌,在命令行 Ctrl+C 即可停止預(yù)覽纹份。

如果樣式符合預(yù)期的話即可部署到 GitHub 或者其它提供 Page 托管的服務(wù)站點(diǎn)了苟跪,下面將以部署到 GitHub 為例進(jìn)行操作:

1、安裝 deploy git 插件

npm install hexo-deployer-git --save

2蔓涧、在 GitHub 創(chuàng)建一個(gè)名為<username>.github.io.git的倉庫
3件已、在主題配置文件_config.yml中修改倉庫地址

deploy:
  type: git
  repo: 
    github: git@github.com:<username>/<username>.github.io.git

4、執(zhí)行hexo d即可發(fā)布到 GitHub 倉庫
5元暴、新增或修改主題后請(qǐng)執(zhí)行hexo clean && hexo d清理緩存文件并部署

注:這里使用 ssh 協(xié)議而非 http篷扩,所以請(qǐng)先確保您已經(jīng)在 GitHub 添加了公鑰。

自定義域名

1昨寞、首先你需要去域名注冊(cè)商(阿里云騰訊云等)買一個(gè)域名
2瞻惋、在根站點(diǎn)下source目錄中添加CNAME文件,文件內(nèi)容為您購買的域名xxx.com援岩,不要添加www歼狼、mail等子域例如www.xxx.commail.xxx.com
3、前往域名控制臺(tái)解析此域名到github.io享怀,根據(jù) gitpage 的自定義域名要求羽峰,他們建議解析到github.io的數(shù)字 ip 地址,即151.101.129.147

image.png

在控制臺(tái)設(shè)置域名解析添瓷,添加 A 記錄指向 151.101.129.147 即可

image.png

注意上圖的解析線路選項(xiàng)梅屉,我是同時(shí)將站點(diǎn)托管在 GitHub 和 Coding.net 的,所以會(huì)有兩條解析記錄鳞贷,本來打算用 Coding 作為國內(nèi)線路 GitHub 作為國外線路坯汤,但最后經(jīng)過測(cè)試境內(nèi) GitHub 的 ping 值雖然高于 Coding ,但訪問速度還是比 Coding 快搀愧,所以我將 Coding 的解析停掉了惰聂;這也許是我的網(wǎng)絡(luò)情況導(dǎo)致疆偿,大家可以隨便試試自由分配解析線路擇優(yōu)選擇不必參照我的來。

4搓幌、命令行執(zhí)行hexo d發(fā)布站點(diǎn)到 GitHub 庫杆故,這時(shí)在 Git 庫應(yīng)該就能看到 CNAME 文件,至此自定義域名設(shè)置完畢溉愁,現(xiàn)在使用xxx.com即可訪問站點(diǎn)

image.png

插件

評(píng)論插件

來必力(LiveRe)处铛,國內(nèi)眾多評(píng)論系統(tǒng)由于各種原因紛紛停服,這個(gè)評(píng)論系統(tǒng)是韓國的拐揭,在國內(nèi)也有中文官網(wǎng) http://www.laibili.com.cn/ 撤蟆,詳細(xì)介紹請(qǐng)看 livere introduce,這個(gè)系統(tǒng)的集成也很簡(jiǎn)單速度還算可以投队、支持后臺(tái)評(píng)論管理枫疆,在如今國內(nèi)沒有選擇的情況下也算是個(gè)不錯(cuò)的選擇。

如果你是 NexT5.0+ 主題的話敷鸦,直接在主題的配置文件中找到 livere_uid 項(xiàng)填入自己申請(qǐng)的來必力 uid 即可自動(dòng)激活此插件息楔,uid 申請(qǐng)只需注冊(cè)賬號(hào),然后在 apply 頁面選擇版本進(jìn)行設(shè)置扒披,完成后在如下頁面就能看到 uid值依,一般網(wǎng)站可以直接將這段代碼塊插入頁面即可生效。

image.png

分享插件

我的博客用的是百度分享碟案,無需注冊(cè)愿险,如果你需要更多自定義設(shè)置就去要登陸官網(wǎng)去仔細(xì)設(shè)置了,主要樣式有如下兩種:

button 樣式如下价说,就是我當(dāng)前使用的:

<div class="bdsharebuttonbox">
  <a href="#" class="bds_tsina" data-cmd="tsina" title="分享到新浪微博"></a>
  <a href="#" class="bds_douban" data-cmd="douban" title="分享到豆瓣網(wǎng)"></a>
  <a href="#" class="bds_sqq" data-cmd="sqq" title="分享到QQ好友"></a>
  <a href="#" class="bds_qzone" data-cmd="qzone" title="分享到QQ空間"></a>
  <a href="#" class="bds_weixin" data-cmd="weixin" title="分享到微信"></a>
  <a href="#" class="bds_tieba" data-cmd="tieba" title="分享到百度貼吧"></a>
  <a href="#" class="bds_twi" data-cmd="twi" title="分享到Twitter"></a>
  <a href="#" class="bds_fbook" data-cmd="fbook" title="分享到Facebook"></a>
  <a href="#" class="bds_more" data-cmd="more"></a>
  <a class="bds_count" data-cmd="count"></a>
</div>
<script>
  window._bd_share_config = {
    "common": {
      "bdText": "",
      "bdMini": "2",
      "bdMiniList": false,
      "bdPic": ""
    },
    "share": {
      "bdSize": "16",
      "bdStyle": "0"
    }
  }
</script>

slide 樣式:

<div class="bdsharebuttonbox">
  <a href="#" class="bds_tsina" data-cmd="tsina" title="分享到新浪微博"></a>
  <a href="#" class="bds_douban" data-cmd="douban" title="分享到豆瓣網(wǎng)"></a>
  <a href="#" class="bds_sqq" data-cmd="sqq" title="分享到QQ好友"></a>
  <a href="#" class="bds_qzone" data-cmd="qzone" title="分享到QQ空間"></a>
  <a href="#" class="bds_weixin" data-cmd="weixin" title="分享到微信"></a>
  <a href="#" class="bds_tieba" data-cmd="tieba" title="分享到百度貼吧"></a>
  <a href="#" class="bds_twi" data-cmd="twi" title="分享到Twitter"></a>
  <a href="#" class="bds_fbook" data-cmd="fbook" title="分享到Facebook"></a>
  <a href="#" class="bds_more" data-cmd="more"></a>
  <a class="bds_count" data-cmd="count"></a>
</div>
<script>
  window._bd_share_config = {
    "common": {
      "bdText": "",
      "bdMini": "1",
      "bdMiniList": false,
      "bdPic": ""
    },
    "slide": {
      "bdImg": "5",
      "bdPos": "left",
      "bdTop": "100"
    }
  }
</script>

文章字?jǐn)?shù)辆亏、閱讀時(shí)長(zhǎng)統(tǒng)計(jì)

NexT5.0+ 主題內(nèi)置了統(tǒng)計(jì)全站字?jǐn)?shù)、單篇文章字?jǐn)?shù)鳖目、閱讀時(shí)長(zhǎng)的插件扮叨,該插件開源地址點(diǎn)這里,要啟用此功能只需在主題配置文件 _config.yml 中如下部分開啟即可领迈。

# Post wordcount display settings
# Dependencies: https://github.com/willin/hexo-wordcount
post_wordcount:
  item_text: true
  wordcount: true
  min2read: true
  totalcount: false
  separated_meta: true

注意彻磁,如果出現(xiàn)統(tǒng)計(jì)字?jǐn)?shù)或時(shí)間沒有出現(xiàn)的話,檢查網(wǎng)站的 package.json 文件查看是否安裝了 hexo-wordcount 插件狸捅。

image.png

沒有安裝的話用 npm 如下安裝就行了衷蜓。

npm install hexo-wordcount --save

Ok,以上就是本文全部?jī)?nèi)容尘喝,有任何問題歡迎下方留言磁浇。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市朽褪,隨后出現(xiàn)的幾起案子扯夭,更是在濱河造成了極大的恐慌鳍贾,老刑警劉巖鞍匾,帶你破解...
    沈念sama閱讀 218,284評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件交洗,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡橡淑,警方通過查閱死者的電腦和手機(jī)构拳,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來梁棠,“玉大人置森,你說我怎么就攤上這事》” “怎么了凫海?”我有些...
    開封第一講書人閱讀 164,614評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)男娄。 經(jīng)常有香客問我行贪,道長(zhǎng),這世上最難降的妖魔是什么模闲? 我笑而不...
    開封第一講書人閱讀 58,671評(píng)論 1 293
  • 正文 為了忘掉前任建瘫,我火速辦了婚禮,結(jié)果婚禮上尸折,老公的妹妹穿的比我還像新娘啰脚。我一直安慰自己,他們只是感情好实夹,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,699評(píng)論 6 392
  • 文/花漫 我一把揭開白布橄浓。 她就那樣靜靜地躺著,像睡著了一般亮航。 火紅的嫁衣襯著肌膚如雪荸实。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,562評(píng)論 1 305
  • 那天塞赂,我揣著相機(jī)與錄音泪勒,去河邊找鬼。 笑死宴猾,一個(gè)胖子當(dāng)著我的面吹牛圆存,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播仇哆,決...
    沈念sama閱讀 40,309評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼沦辙,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了讹剔?” 一聲冷哼從身側(cè)響起油讯,我...
    開封第一講書人閱讀 39,223評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤详民,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后陌兑,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體沈跨,經(jīng)...
    沈念sama閱讀 45,668評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,859評(píng)論 3 336
  • 正文 我和宋清朗相戀三年兔综,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了饿凛。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,981評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡软驰,死狀恐怖涧窒,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情锭亏,我是刑警寧澤纠吴,帶...
    沈念sama閱讀 35,705評(píng)論 5 347
  • 正文 年R本政府宣布,位于F島的核電站慧瘤,受9級(jí)特大地震影響戴已,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜碑隆,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,310評(píng)論 3 330
  • 文/蒙蒙 一恭陡、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧上煤,春花似錦休玩、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至独泞,卻和暖如春呐矾,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背懦砂。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評(píng)論 1 270
  • 我被黑心中介騙來泰國打工蜒犯, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人荞膘。 一個(gè)月前我還...
    沈念sama閱讀 48,146評(píng)論 3 370
  • 正文 我出身青樓罚随,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國和親羽资。 傳聞我的和親對(duì)象是個(gè)殘疾皇子淘菩,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,933評(píng)論 2 355

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