jekyll博客搭建之艱辛之路

前言

其實每個程序員都有着一顆Geek的心!

起由

話說,從2016年年初,我就一直有一個想法,就是搭建一個本身的博客,讓本身更有歸屬感。可是奈何 理想太豐滿 一開始想的太多,想「徹底本身搭建先後端,想...」 結果,一直想了好幾個月,也沒有開始行動(期間域名也買了好幾個,可是奈何備案手續太麻煩,一直沒有開始...)html

某一天,我在知乎某貼上看到了"一系列的jekyll簡潔模板"。當時瞬間就被這些簡潔好看的模板給吸引住了,因而開始打算按照網上的大批教程,用jekyll搭建本身的博客。前端

奈何,當時剛開始接觸jekyll,並且用的電腦又是windows,再加上按照各類教程倒騰了幾天無果後,暫時就放棄windows上用它了。python

直到有一天,我翻出了那臺被棄用好幾個月的老舊本本,安裝了linux(ubuntu) 才終於按照教程成功的搭建了Jekyll博客。linux

折騰了幾天後,算是對其中的原因有了必定了解了,因而此次都從新試着在windows上弄jekyll。最終,不斷披荊斬棘,終於也成功的在windows上運行上了jekyll博客。git

本文正是基於以上狀況,整理了本身在ubutun上,在windows上安裝jekyll的步驟以及一些可能遇到的問題,但願能對他人有所幫助!(最起碼本身之後再次倒騰時能根據本文正常搭建)程序員

說明,本文只關注如何在本機運行起來jekyll博客,至於如何用github pages託管jekyll博客,相對簡單,就再也不贅述了github

另外,其實最近hexo也挺好的,只不過不是本文關注的內容ubuntu

搭建jekyll前須要知道的一些知識

磨刀不誤砍柴功,理清楚如下關係後,對搭建jekyll是有好處的,方便自查可能的錯誤緣由windows

ruby與ruby gem的關係

  • ruby是一種腳本語言
  • ruby的其中一個「程序」叫rubygems,簡稱 gem(ruby 1.9.2及其以上就已經默認安裝了ruby gem的,因此無需再次手動安裝)

另外還有一個ruby bunder(rails框架中用來管理項目 的gem的,叫bundle),在windows中搭建jekyll,須要安裝完ruby後用gem 安裝下bunder後端

ruby與jekyll的關係

jekyll是基於ruby的,因此搭建jekyll以前必須確保ruby正常安裝 注意,必須ruby大於2.0.0

jekyll與python的關係

jekyll3.0以前,有一個語法高亮插件"Pygments",這玩意是基於python的,因此纔會有各類教程裏面都說搭建jekyll以前須要python環境

可是,請注意 jekyll3.0之後,語法高亮插件已經默認改爲了 「rouge‘ 而它是基於ruby的,也就是說 如今搭建jekyll,咱們徹底沒必要要再安裝python 這樣能夠減小很大一部分工做量

爲何ruby要改用source來源

無論是那一篇教程,都會告訴你安裝完ruby後須要經過gem命令將官方源改爲淘寶源或[ruby china][]源,這是由於默認的官方源在國外,國內幾乎是沒法訪問的(具體緣由麼...)

因此纔會必須改爲其否源,不然沒法使用,可是,請注意 如今淘寶源已經中止維護了,最新搭建jekyll 都應該要改爲 [ruby china][]的源

http://gems.ruby-china.org

如何解決jekyll安裝過程當中的問題

首先,在確保ruby(2.0.0以上)正常安裝,而且切換了ruby china源(或者淘寶源)後,其它遇到的全部問題幾乎都是 確實某些ruby程序的問題,因此只須要根據提示 經過相應命令,好比 gem install ... 便可解決

windows下還得確保DEVELOPMENT KIT正常安裝,而且正確配置

搭建jekyll的基本步驟

不管是windows上仍是linux上,搭建jekyll基本都知足以下步驟:

  • 安裝ruby(2.0.0以上)
  • 切換ruby的source來源
  • 經過gem命令安裝jekyll
  • github上fork心儀的jekyll模板,本地jekyll serve運行相應的博客

另外,windows上還多了一步安裝DevKit-mingw 的過程

因此基本上來講,流程並很少,一遍完整走下來並費不了多少時間(可是網上教程參差不齊,再加上官方教程都是英文,對於剛接觸jekyll,而且英語基礎不太好的人來講,確實很容易被消磨掉激情)

本文中涉及到的安裝系統與環境以下:

windows中:

  • win7 64位
  • rubyinstaller-2.0.0-p648-x64.exe
  • DevKit-mingw64-64-4.7.2-20130224-1432-sfx.exe

linux中:

  • ubuntu 14.04(LTS版)
  • ruby2.0.0

windows中搭建jekyll過程

說實話,剛開始在windows上安裝jekyll失敗之因此放棄,是由於剛接觸,對其中的關係不瞭解,不太會分析緣由,再加上各類教程都說windows下會出問題,因此就被莫名的恐懼到了。

但實際上最後再次在windows上搭建時,發現要比linux上簡單(至少比ubuntu 14.04上簡單),因此無論怎麼樣,要本身試過了才知道結果...

固然,也許是由於我目前用到的還很少,因此沒遇到那些傳說中的深坑...

第一步: 下載ruby2.0.0與Development Kit

若是求穩,最好仍是推薦下載2.0.0(由於本文並無實踐過其它版本,固然本身願意搗鼓固然更好了~~)

  • [ruby下載][] (請根據本身的系統選擇相應ruby,裏面包括了ruby和DEVELOPMENT KIT的下載)

第二步: 安裝ruby2.0.0

下載完安裝包後,先安裝rubyinstaller, 記得儘可能以管理員的權限安裝 安裝時會有三個選項

  • Install Td/Tk support
  • Add Ruby executable to your PATH
  • Associate .rb and .rbw files width this Ruby installation

若是不明白意義,請所有選上(若是不選手,安裝後可能存在ruby不是可行命令等錯誤)。而且安裝完畢後,環境變量也會自動配置

若是安裝完後不放心,能夠自行去windows中檢查環境變量的配置(主要就是Path中有沒有對應的值),而後輸入ruby -v ,若是正常響應版本號則表明安裝正確

另外,本文中爲了排除各類因素,ruby和Development Kit都是默認安裝在C盤的

第三步: 安裝Development Kit

安裝完ruby後,接着安裝DevKit(請確保管理員權限安裝) 點擊安裝,選擇完對應的目標後,點擊確認即會自動提取

接下來找到安裝的目錄,如 C:\devkit 用windows的命令行運行->cmd便可進入命令行環境進入這個目錄,如 cd /d C:\devkit,便可當即進入這個目錄。

進入目錄後輸入 ruby dk.rb init 待運行完畢後,該目錄中會自動生成一個config.yml文件(如C:devkitconfig.yml)

接下來,編輯這個文件,修改爲如下樣子

# This configuration file contains the absolute path locations of all
# installed Rubies to be enhanced to work with the DevKit. This config
# file is generated by the 'ruby dk.rb init' step and may be modified
# before running the 'ruby dk.rb install' step. To include any installed
# Rubies that were not automagically discovered, simply add a line below
# the triple hyphens with the absolute path to the Ruby root directory.
#
# Example:
#
# ---
# - C:/ruby19trunk
# - C:/ruby192dev
#
---

- C:\Ruby200-x64

其中惟一的修改就是在文件末尾加上了 - C:\Ruby200-x64 這段表明加上本身的ruby路徑, 實際中能夠將C:\Ruby200-x64改成本身的實際ruby目錄(層級大概是C:Ruby200-x64bin,在bin的上一級)

修改完畢後,繼續在本目錄下鍵入如下命令便可

ruby dk.rb install

一切順利後,就表明Development Kit已經正確安裝並配置

第四步: 更改默認的source源


鑑於官方源沒法訪問,因此咱們得更換爲可使用的源,這裏推薦使用[ruby china][]源,大體步驟以下

  • 先鍵入命令gem sources -l  查看當前已經添加的源(默認應該是同時有官方源和淘寶源)
  • 而後經過 gem sources -r https://rubygems.org/ gem sources -r https://ruby.taobao.org/ 分別移除官方源和淘寶源 (注意,請對比實際,移除本身已經添加的源便可,能夠改成本身上一步中查詢出來的地址)
  • 經過 gem sources -a http://gems.ruby-china.org 添加了[ruby china][]的可用源
  • 修改來源後能夠經過gem sources -l 查看是否正確修改

![rubysource][]

注意,上述的[ruby china][]源 我採用了http連接,這是由於我在windows中使用https時遇到了ssl問題,而且沒法解決,若是你能正確解決,能夠換爲https連接

第五步: 安裝jekyll

安裝jekyll前先按照依賴包bundler,下述命令便可安裝

gem install bundler

以後,直接能夠經過下述命令安裝jekyll

gem install jekyll

安裝須要必定的時間,過一段時間正常安裝後即表明jekyll能夠開始使用了

第六步: 運行jekyll博客

首先,你能夠去[github][]上fork一個本身喜歡的jekyll模板,若是沒有本身喜歡的,能夠考慮用我正在改造的模板 [mygithub][] (這個模板參考了3我的的源碼,正在打算本身重寫前端源碼,正在改造中,歡迎star和fork)

而後將對應的項目拷貝到本身本地的目錄下,一樣用cmd命令進入對應的目錄,好比 E:\tools\jekyll\project\dailc.github.io 而後運行 jekyll serve 過一會後若是有如下提示,則表明正常運行

Server address: http://127.0.0.1:4000/
Server running... press ctrl-c to stop.

另外,若是過程當中遇到一些其它缺失組件的狀況,能夠經過相應的gem命令安裝

接下來,jekyll已經成功運行了,你能夠本身作任意修改了(另外,請注意md文件別用中文命名,不然可能會出錯- gbk to utf8的錯誤,並且保存的文件必定要是UTF-8 無 BOM格式,不然可能沒法識別對應的文章)

另外,須要注意,windows下的jekyll是不支持自動監聽的...

效果預覽

你們也能夠看下目前我搭建的jekyll blog (聲明,參考了多人源碼,正在改造,最終的版本會與如今大不同)

關於jekyll new myblog可能遇到的問題

上述我之因此直接用已有的jekyll模板運行而不是直接用 jekyll new myblog來完成hello word項目,是由於這樣可能會遇到問題

我發現用上述命令搭建hello word項目時,老是提示

Gem::RemoteFetcher::FetchError: SSL_connect returned=1 errno=0 state=SSLv3 read
server certificate B: certificate verify failed

而後,我進到myblog目錄下,打開了Gemfile文件,發現原來裏面默認用了一個官方源source(以下)... 因此仍是推薦你們使用已經搭建好的jekyll模板

source "https://rubygems.org"
ruby RUBY_VERSION

# Hello! This is where you manage which Jekyll version is used to run.
...

linux(ubuntu)中搭建jekyll過程

其實我最早是在linux上搭建成功的,那時候還順帶學了下git命令,總的來講,也是遇到了很多坑。

開始以前,慎重選擇linux系統

我一開始安裝的linux是ubuntu 13.04,而後一開始就發現這個版本14年1月份就已經停用了,而後開始找各類教程,最後能正常更新時發現,這個版本默認不帶ruby2.0.0(當時弄明白後只能繼續重裝能用的版本了...)

關於ubuntu版本號的選擇能夠參考下 [ubuntu 版本支持][](最好使用LTS版本)

第一步: apt-get update並install ruby2.0

開始前先更新下,而後安裝 ruby2.0

sudo apt-get update
sudo apt-get install ruby2.0

最好經過su命令進入root權限,另外能夠經過 sudo passwd 設置root密碼

第二步: 強制更加ruby版本

上一步操做完了後,經過 ruby -v 查看發現顯示的是 ruby 1.9.1,這時候請不要慌,其實2.0已經安裝完畢了的(14.04的狀況下)

在14.04中,若是安裝ruby2.0,會默認同時安裝1.9.3和2.0.0,並且1.9.3會顯示成1.9.1,默認用的是1.9.3,因此纔會出現這種狀況

這時候,就須要咱們強制更改ruby版本了,咱們能夠經過強制替換/usr/bin/目錄下與Ruby相關的符號連接到Ruby 2.0對應的版本,這樣便可實現默認版本的切換:(請注意備份,避免意外)

cd /usr/bin/
ln -sf ruby2.0 ruby
ln -sf gem2.0 gem
ln -sf erb2.0 erb
ln -sf irb2.0 irb
ln -sf rake2.0 rake
ln -sf rdoc2.0 rdoc
ln -sf testrb2.0 testrb

替換完成以後先更換官方源,參考windows下更換gem source(在上文)。以後更新下gem

gem update --system
gem pristine --all

這時Ruby的默認版本就已經切換到2.0了。固然雖然這樣作比較暴力,但也是能夠還原的,若是想切換會Ruby 1.9.3,只須要運行(請注意在Ubuntu 14.04中,Ruby 1.9.3的名稱爲ruby1.9.1):

cd /usr/bin/
ln -sf ruby1.9.1 ruby
ln -sf gem1.9.1 gem
ln -sf erb1.9.1 erb
ln -sf irb1.9.1 irb
ln -sf rake1.9.1 rake
ln -sf rdoc1.9.1 rdoc
ln -sf testrb1.9.1 testrb

一樣的,再更新一下gem以後Ruby就又切換回1.9.3了。

更改完了後,能夠經過 ruby -v查看是否版本正確

第三步: 安裝jekyll

確保已經切換成了可用源(淘寶源或[ruby china][]源),而後經過下述命令便可安裝jekyll

gem install jekyll -V

-V(大寫)表明查看詳細進度

安裝完了後,和上文同樣,用本身喜歡的jekyll模板,而後運行jekyll serve便可查看效果

(以後本身能夠任意進行修改,以及添加本身想要的功能)

可能的錯誤以及解決

報錯:

rb can't find header files for ruby

解決:

apt-get install ruby2.0-dev(版本必須正確)

報錯:

缺乏依賴rdiscount,這個是用來解析Markdown標記的解析包。

解決:

gem install rdiscount -V

mac中搭建jekyll過程

mac中比較方便,由於通常mac是自帶ruby和gem的

若是沒有ruby

brew install ruby

注意,gem安裝jekyll須要ruby 1.9.2以上版本,如今官方推薦的是1.9.3

若是版本低於,請升級

gem的換源

雖然自帶gems,但在國內,默認的源是被牆住的,所以須要從新設置淘寶源(感謝阿里)

gem sources --remove https://rubygems.org/
gem sources -a http://ruby.taobao.org/
gem sources -l

最後確保只剩一個淘寶源便可

安裝jekyll

gem install jekyll

安裝完後,便可使用了

jekyll build
jekyll server
...

權限錯誤問題

若是遇到權限問題,沒法安裝上,可使用管理員權限安裝

sudo gem install jekyll

ruby版本太低問題

若是提示

requires Ruby version >= 2.1.

那麼是因爲ruby版本太低形成的,更新ruby

1.先安裝rvm

curl -L get.rvm.io | bash -s stable

2.開啓rvm

source ~/.bashrc

source atom .bash_profile
(添加:export PATH=/usr/local/bin:$PATH)

source ~/.bash_profile

3.測試是否安裝正常

rvm -v

4.安裝homebrew

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

5.使用rvm安裝新版本的ruby

rvm install 2.2.4
或者
brew install ruby

6.檢測版本是否正常

ruby -v

其它報錯

若是遇到It looks like you don't have jekyll-paginate

gem install jekyll-paginate

總結

雖說在windows上和linux上搭建 jekyll時遇到了各類各樣問題,可是最終都解決了,在解決的那一瞬間,實際上是挺有知足感的(大概這也是我喜歡搗鼓這些東西的願意之一吧),並且確實感受本身知識面比起之前仍是有所拓展的。

因此無論怎麼樣,仍是得多學!

結束語

你如今所學的知識,會在未來的某個時間段派上用場!

博客

初次發佈2016.10.30於我我的博客上面

jekyll博客搭建之艱辛之路

相關文章
相關標籤/搜索