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
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目錄下做兩件事:
hexo g
(hexo generate
的縮寫)生成md檔案的靜態頁面.md檔案在hexo/source/_posts
目錄下。如果新寫的md檔案,複製到此即可. 生成的靜態檔案在public
目錄下,我們將其push到github就ok了。hexo d
(hexo depoly
的縮寫)將public資料夾東西推到倉庫上,此時瀏覽器輸入https://yourname.github.io
就能看到自己部落格啦!
還有個命令hexo clean
作用是清除快取db.json
和public
資料夾.
四.關聯域名
考慮到字尾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.me
和www.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主題的定製,及評論分享等下回再談.