閱讀534 返回首頁    go 阿裏雲 go 技術社區[雲棲]


使用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
ssh-keygen -C github-account-email -t rsa

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
ssh -T git@github.com

如果出現 hi xxx! You’ve successfully authenticated, bug GitHub does not povide shell access。說明SSH鏈接成功。

接下來配置其他信息。

1
2
3
4
5
git config --global user.name github-username
git config --global user.email github-account-email
git config --global github.user github-username
git config --global credential.helper cache
git config --global credential.helper 'cache --timeout=3600'

本節參考了 msysGit 安裝後的配置

克隆Repo到本地

在D盤新建一個文件夾,例如github。

1
2
cd d:\github
git clone git@github.com:username/username.github.com.git

安裝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
cd C:\DevKit
ruby dk.rb init
ruby dk.rb install
gem install rdiscount --platform=ruby

安裝Octopress
下載Octopress。

1
2
3
4
5
cd d:\github
git clone git://github.com/imathis/octopress.git octopress
cd octopress
ruby --version  # Should report Ruby 1.9.3
rbenv rehash  # 可選,如果安裝了rbenv,就需要執行這一步

注意: rubygems.org在中國的下載速度很慢,會導致bundle install這一步下載gems的速度很慢,可能需要等待幾個小時。因此需要事先切換到國內的鏡像源。

用記事本打開octopress目錄下的Gemfile,將第一行修改為

source “https://ruby.taobao.org”

然後可以開始安裝依賴的gems了。

1
bundle install

正常的話應該可以看到一行行的Installing xxx,表示正在安裝所需要的gem。

安裝默認的Octopress主題。

1
rake install

如果這一步出現問題,則試一下 bundle update再執行 rake install。

部署到GitHub

將Octopress和自己的Repo關聯起來

1
rake setup_github_pages

編譯生成JeKyll所需要的靜態文件

1
rake generate

這個命令主要是根據source目錄的內容,編譯生成JeKyll所需要的靜態文件,存放到public目錄下。source 目錄對應著git上的source分支。

預覽

1
rake preview

部署到github

1
rake deploy

該命令首先清空_deploy目錄,然後將public目錄整個拷貝過來,然後commit到github。_deploy 目錄對應著master分支。

備份source到github

1
2
3
git add .
git commit -m 'your message'
git push origin source

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
set LANG=zh_CN.UTF-8
set LC_ALL=zh_CN.UTF-8

還有一個是在環境變量中加入這兩個變量: 右擊電腦->屬性,新添加LANG和LC_ALL兩個環境變量,值為為zh_CN.UTF-8.

然後在Git Bash中做如下設置:

1
echo "export LANG LC_ALL" > ~/.bash_profile

綁定域名

參考官方文檔Setting up a custom domain with Pages

非常簡單,在master分支的根目錄,添加一個文本文件,名字為CNAME,裏麵的內容就是要綁定的域名,例如本博客CNAME文件的內容是:

www.yanjiuyanjiu.com

然後去DNSPod,添加一條CNAME,指向 username.github.com。例如我的為:

1
www	CNAME	默認	soulmachine.github.com.		-	600

很多人喜歡去掉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
@	顯性URL	默認	https://www.yanjiuyanjiu.com	-	600

在使用Octopress的時候,每次rake generaterake deploy後,master分支下麵的CNAME文件消失了。正確的做法是,把CNAME文件放到在 source 目錄下,其餘的都刪掉,rake generate 會自動拷貝到public目錄下,rake deploy再拷貝public目錄內容到_deploy目錄,並提交到master分支。

參考資料

  1. 【原創】用Github和Octopress搭建博客
  2. 試用Octopress
  3. windows下安裝DevKit
  4. 在新Windows係統中重新部署Octopress
  5. Windows 8安裝Octopress記錄
  6. 關於在64位 Windows 7 中部署中文化的Octopress

最後更新:2017-04-03 07:57:32

  上一篇:go Swift學習之二:注釋與分號
  下一篇:go linux終端用戶登錄流程