07 Sep 2013
Windows 系统 Jekyll 博客搭建手记
前言
准备把博客从 Wordpress 搬到 Github,Jekyll成为我的首选,这里主要介绍 Windows 系统本地搭建的步骤。以前照着网上的介绍操作过,但是没有成功过,遇到了不少问题,今天翻了很多的资料,算是找到了一种比较可行 的方法,之前看到过的网上教程中大都有要求 Ruby,Devkit 的具体某个版本,今天发现全部用最新的版本,也是可以的。
安装 Ruby 环境和 DevKit
直接到 rubyInstaller 官网下载,目前最新的版本分别是 Ruby 2.0.0-p247 (x64)
和 DevKit-mingw64-64-4.7.2-20130224-1432-sfx.exe
,我的系统是 64 位,32 位的话选择对应版本,
先安装 Ruby 环境,注意,必须先安装 Ruby 环境,为免混乱,可以解压至 C:\Ruby
, Ruby 安装成功之后安装 DevKit,同样解压至 C:\DevKit
。
配置
a.打开命令行终端(CMD),运行以下命令:
cd C:\DevKit
ruby dk.rb init
ruby dk.rb install
b.完成之后安装 Jekyll:
gem install jekyll
可以用 jekyll --version
来检查是否安装成功
c.安装 rdiscount
,这个是用来解析 Markdown 标记的解析包。
gem install rdiscount
运行
cd 到工程目录,目前网上大部分教程说的启动服务命令 jekyll --serve
都已过时,正确的应该是:
jekyll serve
中文支持异常情况
你可能会遇到下面这种情况:
D:\WebstormProjects\superraytin.github.com>jekyll serve
Configuration file: D:/WebstormProjects/superraytin.github.com/_config.yml
Deprecation: Auto-regeneration can no longer be set from your configurati
on file(s). Use the --watch/-w command-line option instead.
Source: D:/WebstormProjects/superraytin.github.com
Destination: D:/WebstormProjects/superraytin.github.com/_site
Generating... Error reading file D:/WebstormProjects/superraytin.github.co
m/_posts/life/2013-05-23-i-am-a-test.md: invalid byte sequence in GBK
error: invalid byte sequence in GBK. Use --trace to view backtrace
或者下面这种情况
D:\WebstormProjects\superraytin.github.com>jekyll serve
Configuration file: D:/WebstormProjects/superraytin.github.com/_config.yml
Deprecation: Auto-regeneration can no longer be set from your configurati
on file(s). Use the --watch/-w command-line option instead.
Source: D:/WebstormProjects/superraytin.github.com
Destination: D:/WebstormProjects/superraytin.github.com/_site
Generating... Liquid Exception: invalid byte sequence in GBK in _posts/s
kill/2011-12-29-jekyll-introduction.md
error: invalid byte sequence in GBK. Use --trace to view backtrace
目前网上流传的一些解决办法
1.http://yanping.me/cn/blog/2012/10/09/chinese-charset-problems-with-jekyll/ 这篇文章给出的解决办法:
修改 bash 的字符集:在 C:\Documents and Settings\
用户名下,找到文件 .bash_profile,后面加两行:
set LC_ALL=en_US.UTF-8
set LANG=en_US.UTF-8
这种方法经过测试并不能解决问题。
2.http://www.dewen.org/q/5893 给出的解决办法:
a: 在文件头加上
# -*- coding:utf-8 -*-
指定运行环境的编码
ruby --encoding=utf-8
b: 运行
chcp 65001
前面一种直接无效,后面一种可以起到短暂的效果,但是会有部分功能失效的问题,并且文章打开丢失了模板的头尾,只剩下乱码的文章主体部分。
终极解决办法
解决第一种错误——打开路径 C:\Ruby200-x64\lib\ruby\gems\2.0.0\gems\jekyll-1.2.0\lib\jekyll
,打开 convertible.rb
找到:
self.content = File.read(File.join(base, name))
替换成:
self.content = File.read(File.join(base, name), :encoding => "utf-8")
解决第二种错误——打开路径 C:\Ruby200-x64\lib\ruby\gems\2.0.0\gems\jekyll-1.2.0\lib\jekyll\tags
,打开 include.rb
找到:
source = File.read(File.join(includes_dir, @file))
替换成:
source = File.read(File.join(includes_dir, @file), :encoding => "utf-8")
重启 Jekyll 服务,编译成功。
markdown 解释中文列表的问题
Jekyll 默认的 markdown 解释引擎是 maruku
,在解释列表的时候,列表中有英文字符正常,否则会不正常,这种情况需要把解释引擎切换为 rdiscount
,
具体方法是打开 _config_yml
文件,在 pygments:true
下面添加一行
markdown: rdiscount
参考资料
http://log.medcl.net/item/2012/04/jekyll-encounter-encoding-problems/
http://www.cnblogs.com/purediy/archive/2013/03/07/2948892.html
http://cloudaice.com/markdown-list-chinese-problem/
其他
Jekyll 环境搭好之后,每次启动服务都需要 cd 到工程目录,然后运行命令 jekyll serve
。
是不是觉得有点繁琐呢?
反正我是觉得很烦,这里写了个短小的批处理文件,可以当作是一键启动服务的开关,打开记事本,将下面的命令行拖到里面保存为 .bat
文件,放到桌面上,以后双击即可启动服务。
@echo
cd D:\WebstormProjects\jekyllBlog
D:
jekyll serve
pause
批处理文件执行效果:
Til next time,
Leon
at 22:27