为了本地调试搭建好的博客,我们得在当前机器上安装一个Jekyll服务,在本地生成完毕后再把更新push到github上面。 笔者主要的开发环境是在Windows上,但Jekyll官方文档并没有提供在Windows上面安装的方法。 按照网上的各种教程,总算是成功在Win 7/8上面搭建成功了Jekyll。相对于Mac和Ubuntu(Debian),在Windows上部署Jekyll有一些额外的修改。 为了给后来人提供方便,这篇文章我就介绍一下如何一步一步在Windows 7 x64上搭建一个支持中文的Jekyll系统。
首先, 从官网上下载Ruby on Windows
,Ruby DevKit
和Python 2.7
。
下载页:http://rubyinstaller.org/downloads/。在写这篇文章的时候,作者安装的分别是: Ruby 2.0.0-p195 (x64) 和 DevKit-mingw64-64-4.7.2-20130224-1432-sfx.exe。
Warning!
注意,Jekyll现在不支持Python 3.0+版本!
Notice!
安装好Ruby和Python后,别忘了把可执行文件夹加入到PATH下面。
安装好上述的文件包后,以管理员模式打开控制台,进入Ruby DevKit
的目录下(比如D:\rubydevkit),执行下面的语句,对DevKit初始化:
D:\rubydevkit\>ruby dk.rb init
然后,继续安装:
D:\rubydevkit>ruby dk.rb install
接下来,设置gem环境,删除默认的下载源,然后把下载源改成淘宝的镜像(原因你懂的)。
D:\rubydevkit>gem sources --remove https://rubygems.org/
D:\rubydevkit>gem sources -a http://ruby.taobao.org/
D:\rubydevkit>gem sources -l
*** CURRENT SOURCES ***
http://ruby.taobao.org
# 请确保只有 ruby.taobao.org
D:\rubydevkit>gem install rails
现在就可以在gem环境下安装Jekyll了,执行:
D:\rubydevkit>gem install jekyll
Warning!
现在还没有完! 为了确保Jekyll能正确使用,我们还得对Jekyll的代码加上两个补丁。1,Jekyll的header和tag默认不支持UTF-8,我们需要修改以下两个文件:
--- rubypath\lib\ruby\gems\2.0.0\gems\jekyll-1.0.2\lib\jekyll\convertible.rb
+++ rubypath\lib\ruby\gems\2.0.0\gems\jekyll-1.0.2\lib\jekyll\convertible.rb
@@ 搜索替换下面这行
- source = File.read(@file)
+ source = File.read(@file, :encoding => "utf-8")
--- rubypath\lib\ruby\gems\2.0.0\gems\jekyll-1.0.2\lib\jekyll\tags\include.rb
+++ rubypath\lib\ruby\gems\2.0.0\gems\jekyll-1.0.2\lib\jekyll\tags\include.rb
- self.content = File.read(File.join(base, name))
+ self.content = File.read(File.join(base, name), :encoding => "utf-8")
--- rubypath\lib\ruby\gems\2.0.0\gems\jekyll-1.0.2\lib\jekyll\generators\pagination.rb
+++ rubypath\lib\ruby\gems\2.0.0\gems\jekyll-1.0.2\lib\jekyll\generators\pagination.rb
@@ -92,8 +92,9 @@ def self.subdirectories_identical(paginate_path, page_dir)
- format = File.basename(site_config['paginate_path'])
- format.sub(':num', num_page.to_s)
+ format = site_config['paginate_path']
+ format = format.sub(':num', num_page.to_s)
+ File.basename(format)