1. 程式人生 > >Mac平臺打造github上hexo部落格全過程

Mac平臺打造github上hexo部落格全過程

簡介

人玩部落格有三個階段,一是在平臺寫,但是寫著寫著就會發現限制太多。比如前些年,你寫個關於goagent的文章就會稽核不過.部落格流量來了,你想掛個廣告之類的也不行。本人是受實名制的影響,在寫部落格上有顧忌。第二個階段是自己購買域名和vps自己搭建後臺,使用wordpress之類的部落格系統,然後自己折騰點贊、評論等功能。一開始玩著挺刺激,但是維護麻煩。比如換個ip,你就要遷移整個系統,比較麻煩。再者vps也是要錢的。因此就有了第三個階段,使用基於github提供的pages靜態網頁功能,既可以免費,二來遷移方便。你完全可以把整個系統備份到git上,又保證了寫作的自由性,不用維護。本文介紹Mac上搭建基於github的hexo部落格過程。

準備

github雖然沒有明確對免費使用者的空間限制,但是有說超過1G將會收到郵件通知,所以如果有擔心的話最好單獨註冊個github用來放部落格。

一.安裝Node.js

官網下載v6.9.4 LTS版本,安裝即可.我們用它來生成靜態網頁.

二.安裝hexo

輸入以下命令安裝:

sudo npm install -g hexo

hexo官網
新建一個目錄/Users/yanzi/work/hexo,然後進到hexo目錄下執行hexo init,完成後可以看到hexo目錄下有以下內容:

然後在執行npm install,然後看到內容如下:

多了個db.json檔案。
執行hexo g

生成public靜態資源,再執行hexo s(hexo server的縮寫)啟動本地服務端,然後瀏覽器輸入:http://localhost:4000,即可看到效果:

三.關聯github

在github上新建個倉庫,名為yourname.github.io,yourname是github的使用者名稱,這個規則不能變.然後新建一對ssh的key,將公鑰新增到github,請參考https://help.github.com/articles/connecting-to-github-with-ssh/,新增SSH keys之後,就可以使用git為字尾的倉庫地址,本地push的時候無需輸入使用者名稱和密碼.

注意:考慮到大家不止一個github,此處如果不這樣處理,使用https的倉庫地址,再接下來部署時往往會出現不讓輸入github使用者名稱和密碼的問題!

編輯本地hexo目錄下的_config.yml檔案,搜尋deploy關鍵字,然後新增如下三行:

deploy:
  type: git
  repository: [email protected].com:yourname/yourname.github.io.git
  branch: master

注意:每個關鍵字的後面都有個空格.

這樣就關聯好了github,接下來需要在hexo目錄下做兩件事:

  1. hexo g(hexo generate的縮寫)生成md檔案的靜態頁面.md檔案在hexo/source/_posts目錄下。如果新寫的md檔案,複製到此即可. 生成的靜態檔案在public目錄下,我們將其push到github就ok了。
  2. hexo d(hexo depoly的縮寫)將public資料夾東西推到倉庫上,此時瀏覽器輸入https://yourname.github.io就能看到自己部落格啦!

還有個命令hexo clean作用是清除快取db.jsonpublic資料夾.

四.關聯域名

考慮到字尾me的域名阿里萬網最便宜,我就整了個,第一年才24元,在控制檯---域名---解析新增兩條規則:

截圖裡的記錄值都是yourname.github.io.上述兩條解析保證你的域名帶不帶www都能正常解析.
然後在hexo/themes/landscape/source目錄下新建CNAME檔案,內容為yourhost.me,即自己域名.
注意:這個CNAME檔案必不可少,每次執行generate的時候會把這個路徑下的東西copy到public下.
之後執行:

hexo clean
hexo g
hexo d

將東西部署到github上,輸入域名就可以看到部落格了。

五.使用next主題

預設的主題不太好看,我們使用點贊最高的next主題
在部落格根目錄下執行:

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

然後執行cp themes/landscape/source/CNAME themes/next/source先把CNAME檔案拷貝過來。然後在部落格根目錄下的_config.yml下的theme的名稱landscape修改為next即可。
然後執行:

hexo clean
hexo g
hexo s

就可以看到next的效果了!

六.hexo多電腦同步

很多時候人要在兩臺電腦上操作hexo隨時發表文章,我們將整個hexo目錄作為一個私有git倉庫,push到http://git.oschina.net.這裡沒有采用不同branch的管理方式,而是將其作為一個完全獨立的私有倉庫,託管到碼雲上.

在hexo目錄下執行git init,然後
注意:因為theme目錄下的next也是一個git倉庫,而根目錄下的git倉庫是管不了子倉庫的。後邊需要對這個next theme作大量定製,因此用submodule的方式管理不合適。我們直接把next下的.git資料夾刪除即可,這樣就可以被外邊的git倉庫管理了
然後進行一次git add .,然後git commit -m "add:first commit".之後push到你在oschina上建的倉庫.

這樣在另外一臺電腦第一次操作時,先把hexo整個倉庫git clone下來,然後在hexo目錄下執行npm install hexo --save,再執行一次npm install.然後

hexo clean
hexo g
hexo s

在本地測試下。每次在不同電腦上發表博文時,先git pull一次,然後再寫文章。

七.線路優化

因為github伺服器在國外,部落格放上邊訪問的話有時速度較慢,大家都懂得。幸好,https://coding.net也提供了Pages服務,每個人也是1G空間。所以可以通過線路解析,國內訪問coding國外訪問github.我們需要三步操作:

1.coding上建倉庫

首先,註冊個https://coding.net,使用者名稱假設為username,然後新建個倉庫(可以是私有哦),名為username,即建立個跟使用者名稱同名的倉庫.然後跟github一樣,把本地的ssh公鑰新增進去。然後點選專案,在程式碼--Pages 服務,在部署來源裡選中master 分支,如下圖:

這樣在部落格推上去之後,可以通過http://username.coding.me/username訪問部落格。在下面可以看到自定義域名,假設域名為myhost.me,這裡你需要繫結兩個域名:myhost.mewww.myhost.me.如此,coding上的設定就一切ok了!
注意:域名設定一定不能少,只在域名提供商如萬網上設定解析是不起作用的!!!

2.hexo本地設定

修改本地部落格根目錄下的_config.yml,找到deploy欄位,設定如下:

deploy:
  type: git
  repository:
      github: [email protected].com:username/username.github.io.git
      coding: [email protected].coding.net:username/username.git
  branch: master

注意:一定不要設定錯了!!!
在部落格根目錄下的source路徑下新建檔案:touch Staticfile #名字必須是Staticfile
然後hexo g,再hexo d就可以把部落格放到coding和github了!

3.域名提供商設定

如下圖所示,給github的線路設為海外,給coding的設為預設,新增兩條記錄就ok了。coding新增的時候,地址寫成username.coding.me,如下圖所示:

後續

後面關於next主題的定製,及評論分享等下回再談.

參考