centos下配置jekyll

今天老婆心血来潮说不喜欢wordpress了,然后换个j开头的ooxx全静态blog。当时就晕了,就一个字母怎么找?!过了好一会才告诉我叫"jekyll"。好吧,完全没听过。。。可是为了老婆还是要改~ 我太爱老婆了~

官网来一发:http://jekyllrb.com/

从网址就能看出来跟ruby脱不了干系,果然它的推荐安装方法就是用的gem,而且也灰常简单:

gem install jekyll

把上面的命令输进去,结果gem给爆了一堆错,网上各种搜索无果后决定采用升级大法(vps上面的ruby为1.8.7)

也不敢选太新的,就1.9.3-p429好了(0 0!)。装完过后,这下gem就没报错了(gem运行报“yaml”相关错误可以尝试安装epel-release)

选一个存放jekyll的目录执行:

~# jekyll new xxx-site ##生成新的jekyll目录
~# cd xxx-site 
~# jekyll serve ##本地运行jekyll

这时可以访问http://localhost:4000测试运行是否成功。由于jekyll不需要php,mysql等乱七八糟的东西,所以到这里jekyll的配置就完了!(果然够简单!)

vps上本身就装有nginx,所以webserver的任务就交给它了。

给nginx新建一个vhost文件,比如我的:

log_format   xxx.me  '$remote_addr - $remote_user [$time_local] "$request" '
             '$status $body_bytes_sent "$http_referer" '
             '"$http_user_agent" $http_x_forwarded_for';
server
        {
                listen       80;
                server_name xxx.me;
                index index.html;
                root /home/wwwroot/xxx.me/_site;
                access_log  /home/wwwlogs/xxx.me.log  xxx.me;
        }

这里需要注意的是,jekyll的根目录是./_site ,不是./ (这个点被坑了好久。。。)

然后reload一下nginx就好了。

jekyll的配置文件在./_config.yaml ,具体配置请看:传送门

一般来说,用markdown写好的文章是传到./posts里,由jekyll生成到./site里面。怕麻烦的话,可以运行server时加入参数-w :

jekyll server -w

这样jekyll就会自动更新网站了。(赶脚就是一个hook,秒更!)

2013-12-04 update:

新建post的正文字段如果包含中文,则Jekyll在解析的过程中会提示解析错误。

在jekyll目录下,convertible.rb文件中:

self.content = File.read(File.join(base, name))

File.read()可能采用系统默认编码读取文件,中文系统为GBK,但markdown文件均为utf-8编码,所以将代码修改为:

self.content = File.read(File.join(base, name), :encoding => "utf-8")

即可正常处理包含中文的post。

同时jekyll默认的markdown解析器maruku对中文的支持不是很好,所以改用RDiscount。

安装rdiscount:

gem install rdiscount

设置rdiscount:

在_config.yml文件中,添加一行:

markdown: rdiscount
« 返回