使用github與Octopress 搭建GitHub Pages博客
前提條件
注冊一個github賬號。
任何資料,都不如Octopress 和Github Pages的官方文檔,建議首先閱讀官方文檔。
GitHub Pages快速體驗
在GitHub網站上,點擊右上角的+號圖標,創建一個新的Repo,Repository 的名字必須為 username.github.com。然後點擊Settings進入該Repo的設置頁麵。看到”Automatic Page Generator”,說明這個Repo已經啟用了GitHub Page。點擊按鈕進入設置。
在”Create a GitHub User Page”填寫一些基本信息,點擊右下角的”Continue to Layout”。布局就用默認的,點擊綠色的”Publish”按鈕。
大功告成,輸入”username.github.com”,看到一個頁麵沒?這就是你剛剛創建的一個頁麵。
GitHub Pages分為兩種類型,一種是”User and Org Pages”,一種是”Project Pages”。前者是用戶的主頁,一個用戶僅有一個。後者是每個項目的主頁。見github page官方的文檔 Creating Pages with the automatic generator。
本文創建的是第一種類型。
這篇博客 搭建一個免費的,無限流量的Blog—-github Pages和Jekyll入門 - 阮一峰的網絡日誌 很通俗易懂,不過它創建的是第二種類型,在一個Repo上新建了一個branch,並命名為gh-pages。
下麵正式開始折騰。
安裝 msysgit並配置
- 下載msysgit, 然後雙擊exe文件開始安裝。
- 雙擊桌麵圖標Git Bash,啟動一個shell,輸入如下命令進行配置:
產生公鑰ssh key,默認全部回車
1 |
|
Note: username@email.com需要更換成你自己的在Github上注冊的Email地址。 這樣會在用戶目錄(C:\Documents and Settings\UserName)下產生一個.ssh文件夾,裏麵為對應的SSH Keys,其中id_rsa.pub是Github需要的SSH公鑰文件。
在Github的Account Settings裏選擇SSH Keys,在其中將id_rsa.pub文件裏內容拷貝至 其中的Key裏。
這樣以後就可以直接使用Git和GitHub了。
測試一下
1 |
|
如果出現 hi xxx! You’ve successfully authenticated, bug GitHub does not povide shell access。說明SSH鏈接成功。
接下來配置其他信息。
1 2 3 4 5 |
|
本節參考了 msysGit 安裝後的配置。
克隆Repo到本地
在D盤新建一個文件夾,例如github。
1 2 |
|
安裝Octopress
參考官方文檔setup.
安裝Ruby
Octopress 2.0 需要 Ruby 1.9.3,安裝其他版本的Ruby可能會行不通。
如果是Linux,使用RVM來安裝Ruby,如果是Windows,則使用RubyInstaller。在這個下載頁麵下載Ruby
1.9.3-p392和DevKit(帶mingw的版本),雙擊exe文件進行安裝。
安裝DevKit
雙擊DevKit的exe文件,解壓到C:\DevKit
1 2 3 4 |
|
安裝Octopress
下載Octopress。
1 2 3 4 5 |
|
注意: rubygems.org在中國的下載速度很慢,會導致bundle install這一步下載gems的速度很慢,可能需要等待幾個小時。因此需要事先切換到國內的鏡像源。
用記事本打開octopress目錄下的Gemfile,將第一行修改為
source “https://ruby.taobao.org”
然後可以開始安裝依賴的gems了。
1 |
|
正常的話應該可以看到一行行的Installing xxx,表示正在安裝所需要的gem。
安裝默認的Octopress主題。
1 |
|
如果這一步出現問題,則試一下 bundle update再執行 rake install。
部署到GitHub
將Octopress和自己的Repo關聯起來
1 |
|
編譯生成JeKyll所需要的靜態文件
1 |
|
這個命令主要是根據source目錄的內容,編譯生成JeKyll所需要的靜態文件,存放到public目錄下。source 目錄對應著git上的source分支。
預覽
1 |
|
部署到github
1 |
|
該命令首先清空_deploy目錄,然後將public目錄整個拷貝過來,然後commit到github。_deploy 目錄對應著master分支。
備份source到github
1 2 3 |
|
source 目錄下保存了所有的markdown源文件,是博客的原始數據,以及一些模板文件。因此很有必要備份。用上述命令提交到github,這樣就用git管理起來了,再也不用擔心數據丟失了。
終止預覽
啟用rake preview
後,直接按ctrl+c
無法正常終止該進程,老提示終止批處理操作嗎(Y/N)?
,這時候可以另開一個Git Bash窗口,使用ps aux | grep ruby
命令找出pid(第一個數值)
,然後執行kill <pid>
來停止該進程(參考octopress
on heroku (二))。
UTF-8 編碼
Windows預設是Big5編碼,所以要想’rake generate’的時候不報編碼錯誤,我們需要設置一下編碼! 方法有兩個,一個是直接在Git Bash中設置環境:
1 2 |
|
還有一個是在環境變量中加入這兩個變量: 右擊電腦->屬性,新添加LANG和LC_ALL兩個環境變量,值為為zh_CN.UTF-8.
然後在Git Bash中做如下設置:
1 |
|
綁定域名
參考官方文檔Setting up a custom domain with Pages。
非常簡單,在master分支的根目錄,添加一個文本文件,名字為CNAME,裏麵的內容就是要綁定的域名,例如本博客CNAME文件的內容是:
www.yanjiuyanjiu.com
然後去DNSPod,添加一條CNAME,指向 username.github.com。例如我的為:
1 |
|
很多人喜歡去掉www,用xxx.com的形式來訪問,不過大家去試一下,在瀏覽器輸入qq.com, douban.com, baidu.com,發現都會自動跳轉到www,也就是說這些大網站,目前也是用www.example.com的域名為主,因此建議大家也這樣做。
用www, blog之類的二級域名,還有個好處是方便升級,比如新版本用www1指向,等測試完成後,改成www指向,無縫切換。
如何讓example.com 自動變成www.example.com呢?需要用 301重定向,在DNSPod上非常簡單,添加一條顯性URL即可,例如我的是:
1 |
|
在使用Octopress的時候,每次rake generate
, rake deploy
後,master分支下麵的CNAME文件消失了。正確的做法是,把CNAME文件放到在 source 目錄下,其餘的都刪掉,rake generate
會自動拷貝到public目錄下,rake deploy
再拷貝public目錄內容到_deploy目錄,並提交到master分支。
參考資料
- 【原創】用Github和Octopress搭建博客
- 試用Octopress
- windows下安裝DevKit
- 在新Windows係統中重新部署Octopress
- Windows 8安裝Octopress記錄
- 關於在64位 Windows 7 中部署中文化的Octopress
最後更新:2017-04-03 07:57:32