如何快速搭建一個有域名且持續集成的hexo博客(2.0版)

前言: 由于本人最近在學習vue,想把做出來的網頁放到一個有自己域名的網站上來供大家學習交流(裝B)。首先考慮的是租用云主機,無奈云主機貴的一逼,千幸萬苦終于找到一個便宜點的20塊錢一個月的國內主機。結果剛把新鮮買的域名綁定上去,過了一會就無法訪問了。一臉懵逼好嗎!居然需要備案,百度了一下備案周期差不多要一個月。。。玩毛!咨詢了一下,原來所有的國內的主機必須備案才能通過綁定的域名進行訪問。怪不得我的github上面的hexo博客域名能夠訪問,原來因為github用的是國外的主機。。。我以前一直以為只有cn域名才需要備案來著?前端時間全部域名都要備案了,我還特意看了下我的hexo博客(top域名),還能正常訪問,然后就導致我一直有這個認知誤區。。。

后來通過github上面的gh-pages終于將vue網頁展示了出來并綁定了自己的域名(重要的是沒有備案也沒有被封- -)。于是我就開始思考,能否將用于對vue網頁進行持續集成的Travis CI 用在hexo博客上,于從而大大減少博客更新的繁瑣步驟呢?結果發現真的大大減少了每次更新博客的命令數量(感興趣的同學可以和我之前寫的1.0版進行對比),而且!!!hexo博客的安裝與遷移過程也得到了最大的簡化,于是就有了這篇文章!

我的hexo博客:Marathoner | 倉庫地址
使用的主題:Material

1. 安裝hexo

注: 由于本人的電腦是windows系統,之前一直是用的虛擬機上的linux,覺得多此一舉,所以改換了windows上的github客戶端。所以本文的下列步驟全都是用windows系統進行的。

在安裝hexo之前,請確保你的系統安裝了GitNode.js,不多做贅述。

用Git Shell輸出下列命令,進行hexo腳手架的全局安裝

npm install hexo-cli -g

2. 初始化hexo

讓我們新建一個hexo文件夾然后用Git Shell cd 到該目錄下,然后輸入下列命令進行hexo的初始化

hexo init 

3. 創建github倉庫

直接在官網操作即可,本人是創建了一個以賬號名命名的zytx121.github.io的倉庫,因為貌似以前看到說只有以用戶名作為倉庫名才能展示網頁。后來發現是完全是謠言,你github下面任意一個倉庫都可以生成有自己獨一無二域名的展示網頁(感興趣的童鞋可以點擊這篇文章),并不是說一個github賬號下只有一個倉庫才能有展示頁面,也不是說每個賬號的多個展示頁面只能有一個統一的域名。

3. 將github倉庫clone到本地

4. 將之前初始化的hexo文件里面的所有東西拷貝到github倉庫本地目錄下

到這里,hexo博客的準備工作就做的差不多了,下面該輪到Travis-CI登場了!

5. 使用Travis-CI對hexo進行持續集成

(1) 用github賬號登陸

這樣就將github與travis-ci進行了綁定,使其能都讀取你github中的倉庫信息

(2) 開啟指定倉庫并進行相關設置


Build only if .travis.yml is present:是只有在.travis.yml文件中配置的分支改變了才構建

Build pushes:當推送完這個分支后開始構建

然后到github的setting頁面中完成Access Token的申請,將其作為環境變量GH_TOKEN的值存在這里。


只需要repo這一項權限即可。

(3) 創建travis設置文件

最后,讓我們回到倉庫本地目錄,在該目錄下新建一個.travis.yml文件

文件內容如下:

language: node_js
node_js: stable

# Travis-CI Caching
cache:
  directories:
    - node_modules


# S: Build Lifecycle
install:
  - npm install

before_script:
 # - npm install -g gulp


script:
  - hexo g


after_script:
  - cd ./public
  - git init
  - git config --global user.name "8888"
  - git config --global user.email "88888888@qq.com"
  - git add .
  - git commit -m "Update docs"
  - git push --force --quiet "https://${GH_TOKEN}@${GH_REF}" master:master
# E: Build LifeCycle

branches:
  only:
    - hexo
env:
 global:
   - GH_REF: github.com/zytx121/zytx121.github.io.git

看到這里,我們就會發現travis其實就是一個幫你跑腳本的云主機命令行!

他按照我們指定的腳本順序執行,先是install,再是before_scriptscript,最后是after_script.

branches指定了執行腳本的分支。

全局變量GH_REF指定了你的倉庫地址。

我們首先用npm install在 travis 這臺全新的主機上進行相關依賴的安裝,這里就不需要重新再安裝一遍 hexo 然后進行初始化了。安裝完所需依賴之后,我們就可以直接使用 hexo 命令。

然后我們用hexo g命令來生成靜態文件,生成的靜態文件默認會被放在 public 目錄下。

我們cd到public目錄,用git init初始化倉庫,進行相關信息的設置。

最后,travis-ci會將public目錄下的文件全部 push 到你所創建倉庫的 master 分支上去。

詳細內容可以參考這篇文章 手把手教你使用Travis CI自動部署你的Hexo博客到Github上

6. 將github倉庫本地目錄pull到hexo分支上去

這里我使用的是PC客戶端,目錄下文件變動會顯示,輸入Summary備注,點擊Commit,然后點右上角的Publish即可。(注意,我們的博客源代碼存放在hexo分支上,hexo生成的靜態網頁文件存放在master分支。因為gh-pages的默認分支為master,但其實這是可以設置的。)

綁定域名

如果需要綁定自己的域名,只需要在根目錄下的/source/文件夾內新建一個CNAME文件(需要大寫),然后在里面寫上你的域名。保存后一起push上去即可

然后,在倉庫設置中填入你的域名。


同時在你購買域名的服務器管理控制臺中,添加如下2個解析:

主機記錄:@    記錄類型: A    記錄值:192.30.252.153     TTL: 10分鐘
主機記錄:www  記錄類型: A    記錄值:192.30.252.154     TTL: 10分鐘

這樣就完成了你的域名綁定。

關于404頁面:

同理,你可以在根目錄下的/source/文件夾內新建一個404.html文件,然后在里面寫上<script type="text/javascript" src="http://www.qq.com/404/search_children.js" charset="utf-8"></script>并保存。這樣,當你訪問博客中不存在的頁面時,瀏覽器就會自動跳轉到騰訊的公益404頁面。

這樣就大功告成啦!

7. 等待Travis-CI執行腳本

這樣就說明成功了,如果紅色則說明不成功。該頁面會顯示運行的命令行,如果出現錯誤就會報錯。

到這里為止,博客的搭建方法就介紹完畢了。之后每次需要更新發布文章的話,只需要重復第6步即可。

當你需要在其他電腦上更新博客時,可參照下面的代碼:

  1. $ git clone https://github.com/zytx121/zytx121.github.io //拷貝倉庫,在本地生成zytx121.github.io文件夾
  2. $ cd zytx121.github.io //進入該文件夾根目錄
  3. $ npm install(講道理其實如果只添加博客文章,不進行hexo操作的話,這步其實可以省略。因為travis會在它的主機上安裝依賴,幫你生成靜態頁面。)

然后,你就可以在這臺新電腦上愉快的更新博客辣(≧▽≦)/

與1.0版本的對比

  • 不需要安裝hexo-deployer-git插件

  • 不需要每次部署博客(hexo g)前都在本地生產靜態文件(hexo d

  • 更換電腦后clone到本地后,只需要npm install安裝依賴,不需要安裝hexo,開箱即用。

  • 每次更新博客文章后,你所需要做的只是將改動 push 到 hexo 分支,剩下的事 travis-ci 都會幫你做好。

由于持續集成大大簡化了更新hexo博客的步驟,讓我又開始恢復了之前因為太麻煩而放棄更新的hexo博客!!!

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,702評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,143評論 3 415
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,553評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,620評論 1 307
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,416評論 6 405
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,940評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,024評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,170評論 0 287
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,709評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,597評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,784評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,291評論 5 357
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,029評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,407評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,663評論 1 280
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,403評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,746評論 2 370

推薦閱讀更多精彩內容