前言
其实每一个程序员都有着一颗Geek的心!
起由
话说,从2016年年初,我就一直有一个想法,就是搭建一个自己的博客,让自己更有归属感。但是奈何 理想太丰满 一开始想的太多,想“完全自己搭建前后端,想...” 结果,一直想了好几个月,也没有开始行动(期间域名也买了好几个,但是奈何备案手续太麻烦,一直没有开始...)
某一天,我在知乎某贴上看到了"一系列的jekyll简洁模板"。当时瞬间就被这些简洁好看的模板给吸引住了,于是开始打算按照网上的大批教程,用jekyll搭建自己的博客。
奈何,当时刚开始接触jekyll,而且用的电脑又是windows,再加上按照各种教程倒腾了几天无果后,暂时就放弃windows上用它了。
直到有一天,我翻出了那台被弃用好几个月的老旧本本,安装了linux(ubuntu) 才终于按照教程成功的搭建了Jekyll博客。
折腾了几天后,算是对其中的缘由有了一定了解了,于是这次都重新试着在windows上弄jekyll。最终,不断披荆斩棘,终于也成功的在windows上运行上了jekyll博客。
本文正是基于以上情况,整理了自己在ubutun上,在windows上安装jekyll的步骤以及一些可能遇到的问题,希望能对他人有所帮助!(最起码自己以后再次倒腾时能根据本文正常搭建)
说明,本文只关注如何在本机运行起来jekyll博客,至于如何用github pages托管jekyll博客,相对简单,就不再赘述了
另外,其实最近hexo也挺好的,只不过不是本文关注的内容
搭建jekyll前需要知道的一些知识
磨刀不误砍柴功,理清楚以下关系后,对搭建jekyll是有好处的,方便自查可能的错误原因
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 (声明,参考了多人源码,正在改造,最终的版本会与现在大不一样)
- myblog
关于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博客搭建之艰辛之路