`

告别wordpress,拥抱jekyll

 
阅读更多

jekyll是近些年来比较流行的轻量级博客系统,它也是一个强大的静态网站生成系统。本文简要介绍了从wordpress迁移到jekyll的一些注意事项。

主要特点

  • 直接使用Markdown文件作为默认模版语言。
  • 支持通过git跟踪所有内容。
  • 有大量的知名程序员在使用,并且有大量的模版。
  • 支持自动生成静态网站。

安装

很简单,

gem install jekyll

如果不需要用默认的模版Maruku,想使用RDiscount,则请安装:

gem install RDiscount

更多细节可以参考官网

有好事者做了一个比较,Maruku是纯ruby的Markdown模版解释器;RDiscount则是c写的模版解释器,两者的效率显然不同:

* BlueCloth: 13.029987s total time, 00.130300s average
* Maruku: 08.424132s total time, 00.084241s average
* RDiscount: 00.082019s total time, 00.000820s average

使用

安装完jekyll的gem之后,然后运行它,生成一个自己的网站。然后进入自己的jekyll目录,首先配置以下_config.yml文件,指定未来生成的网站的路径以及其他参数。然后运行:

jekyll --server

关于jekyll的用法配置官方解释很详细,请自行阅读。

用习惯jekyll的人会觉得很舒服,它一贯地继承了Mac下的软件的特点:简洁;漂亮,同时还很有rails约定大于配置的精神,通过目录等默认文件即可构成一个强大的网站系统。

如果默认模版是使用rdiscount,则请修改_config.yml文件:

markdown: rdiscount

导入wordpress数据

导入其他博客系统的文章,可以参考官网。导入wordpress的主要步骤如下:

  • 找到jekyll gem库下的migrate文件夹下面的文件wordpress。rb,具体路径可以通过 gem environment命令找到你当前所在的gemset环境之下。也可以按照官方教程,安装一个open_gem的插件。
  • 在自己的jekyll实例站点,新建一个_import目录,将wordpress.rb文件复制到此。
  • 安装两个读取mysql数据库的插件,

    gem install sequel mysqlplus

  • 默认的文件不支持utf8,请修改:

      #修改之前:db = Sequel.mysql(dbname, :user => user, :password => pass, :host => host)  
      db = Sequel.mysql(dbname, :user => user, :password => pass, :host => host, :encoding => 'utf8') #修改之后
    
  • 然后在Shell进入_import目录中,运行以下命令,请将相应的路径,wordpress的数据库的名字,连接数据库的用户名与密码修改为自己对应的。

      export LC_ALL=en_US.UTF-8
      export LANG=en_US.UTF-8
      export DB=xingfukenet      #请修改为自己的wordpress数据库名字
      export USER=root           #请修改为自己的wordpress数据库用户名
      export PASS=               #请修改为自己的wordpress数据库密码
      ruby -r 'wordpress.rb' -e 'Jekyll::WordPress.process( "#{ENV["DB"]}", "#{ENV["USER"]}", "#{ENV["PASS"]}")'
    

如果需要对导入的细节进行定制,可以修改wordpressrb.rb文件中的语句,比如,只导入某个作者的文章:

QUERY = "select post_title, post_name, post_date, post_content, post_excerpt, ID, guid from wp_posts where post_status = 'publish' and post_type = 'post' and post_author=12"

YAML格式的问题

YAML格式默认是:参数+:+空格,如果忘记写空格描绘编译报错。jekyll用的最频繁的几个参数如下所示,更多参数可参考官网wiki

title: 如何学习ruby and rails杂谈
excerpt: 如果希望享受编程的乐趣,ruby与rails或许是比c#与asp.net等更好的选择。
layout: tech-post

请注意冒号之后的空格。如果少了空格,编译通不过。另外,请注意ruby的to_yaml函数默认会使用ruby内置的对中文字符处理方式,会将string输出为

title: !binary |
      44CQ5bm456aP6K++44CR5oiR5Lus55yf55qE6ZyA6KaB44CK572R57uc5oiQ
      55i+6K+K5pat5qCH5YeG44CL5ZCX77yf

这种格式。这是由于ruby默认的yaml库对utf8的支持导致的。我们需要对其做处理。一种办法是调用require 'yaml/encoding',而更安全的办法则是:require 'ya2yaml',修改之后的wordpress.rb如下所示:

$KCODE = 'UTF8' unless RUBY_VERSION >= '1.9'
require 'rubygems'
require 'sequel'
require 'fileutils'
require 'yaml'
require 'ya2yaml'
。。。
。。。

# Get the relevant fields as a hash, delete empty fields and convert
# to YAML for the header
 data=
 {
    'layout' => 'psy-post',
    'title' => title,
    'excerpt' => post[:post_excerpt],
    'wordpress_id' => post[:ID],
    'wordpress_url' => post[:guid]
  }.delete_if { |k,v| v.nil? || v == ''}.ya2yaml(:syck_compatible => true)
。。。
。。。

如果需要对原来的wordpress的html代码进行过滤,可以如此处理:

    require 'rubygems'
    require 'hpricot'  
    require 'hpricot_scrub'
    ...
    content = post[:post_content].scrub(:allow_tags => ['table', 'tbody','tr','td','div','a','blockquote','img'])  
    #table,tbody等标签保留下来。
    ...

导入到github pages

首先在本地测试通过,注意目前github pages使用的jekyll为:0.7.0, 运行:

jekyll --pygments --safe --server

然后在自己的github库中创建一个username.github.com的库。

将自己的jekyll实例复制到本地的该库中,然后推送即可。

git remote add username ...
git push username

推送成功之后,可以使用http://username.github.com/浏览自己的个人网站。如果希望自定义域名,也很简单,创建一个CNAME文件,内容为你的域名即可。

更多说明,可以参考:

http://pages.github.com/

享受云计算时代的快乐

在一切都向云计算迈步的今天,jekyll本身是不带评论系统的,一般是使用disqus的云评论服务。安装很简单,去官网自行注册一个免费帐号,然后按照提示,一步一步往下走就可以了。到了需要导入评论的时候,则请参照disqus的开放api与相关工具。这样以后,你的个人博客的评论随身携带,不用担心随着博客系统迁移而丢失。

不仅是评论可以在云中,写作的所有进程也可以托管在云中。与wordpress的版本跟踪相比较,必须使用wordpress后台来写的时候才能版本跟踪,你可以将自己的jekyll实例托管到github上去。如果对github不熟悉,或许有必要了解一下关于git的基础知识。熟悉的朋友则很好办了,直接进入jekyll实例目录,然后分别执行git的常规操作,就可以拥有一份由github保管的备份。可以非常详细地记录你一切写作的进程,而不用担心版本丢失。由于git的强大,使得你能将在任何离线环境之下,对自己的文章、代码等进行的操作,都可以在联机之后,推送到服务器上。jekyll与git以及Markdown的先天结合,可以随时随地进行版本跟踪,也许这点是极客们日益喜欢它最重要的原因。

分享到:
评论

相关推荐

    wordpress-to-jekyll-exporter:一键式WordPress插件,可将所有帖子,页面,分类法,元数据和设置转换为Markdown和YAML,可以将其放入Jekyll

    WordPress转换为Jekyll Exporter 一键式WordPress插件,可将所有帖子,页面,分类法,元数据和设置转换为Markdown和YAML,可以将其放入Jekyll。 在查看插件。 产品特点 转换WordPress中的所有帖子,页面和设置以在...

    Jekyll 博客管理工具

    **Jekyll博客管理工具详解** Jekyll是一款静态网站生成器,尤其适合个人博客的搭建与管理。它基于Ruby语言,采用Markdown格式编写内容,并通过 Liquid 模板引擎将内容、布局和样式表结合,生成静态HTML页面。由于...

    jekyll图形管理界面插件jekyll-admin.zip

    jekyll-admin 是一个 jekyll 插件,为用户提供了传统 CMS(内容管理系统)风格的图形化界面来创作内容和管理 jekyll 网站。该项目分为两部分。基于 Ruby 的 HTTP API 处理 jekyll 和文件系统的操作部分,以及在这个 ...

    Jekyll Writer

    **Jekyll Writer** 是一款专为Jekyll博客搭建者设计的本地化Markdown语法编辑器,尤其适用于Windows 32位(win32-ia32)平台。它为用户提供了高效且便捷的方式来编写和预览Markdown文档,是Jekyll用户进行内容创作的...

    jekyll gem

    **Jekyll Gem 知识点详解** Jekyll 是一个静态站点生成器,它将文本格式的内容转换成静态HTML页面,广泛用于个人博客和项目文档的构建。Ruby 是Jekyll 的编程语言基础,所以理解Ruby环境至关重要。在描述中提到的`...

    jekyll简洁博客主题

    **Jekyll简介** Jekyll是一款静态站点生成器,它将文本格式的内容转换成静态的HTML和CSS文件,常用于创建个人博客或者项目文档网站。这个主题名为“jekyll简洁博客主题”,显然是一款专为Jekyll设计的简洁风格的...

    Atom-jekyll-atom,在atom中使用jekyll的工具和片段的集合.zip

    Atom-jekyll-atom是专为在Atom文本编辑器中高效使用Jekyll搭建和管理静态博客的集成工具和代码片段集合。这个压缩包包含了名为“jekyll-atom-master”的项目文件,意味着用户可以在这个强大的文本编辑器中获得优化的...

    awesome-jekyll-editors, 一群优秀的Jekyll编辑.zip

    awesome-jekyll-editors, 一群优秀的Jekyll编辑 Awesome系列 @ 行星 Jekyll出色的Jekyll编辑器一群优秀的Jekyll编辑 捐赠欢迎。 有什么遗漏发送请求请求。 谢谢。"视觉"编辑器n 工具开源★565管理 ( github: 散文 ★...

    jekylladmin是一个jekyll插件为用户提供了传统CMS风格的来创作内容和管理jekyll网站

    通常,这涉及到将`jekyll-jekyll-admin-f9b269a`这个压缩包解压后,将其内容放入你的Jekyll站点的 `_plugins` 目录。然后,运行 `jekyll serve`,访问默认的管理端口(通常是 `http://localhost:4000/admin`)就可以...

    jekyll-snippets, Jekyll站点常用Fragment库.zip

    jekyll-snippets, Jekyll站点常用Fragment库 Fragment我是Jekyll的粉丝。 我已经在博客上建立了自己的博客,以及 Bootstrap 文档的文档和一个系列的主题文件。 这个库是一个常用的Jekyll Fragment库。电子邮件内容...

    jekyll-bootstrap-theme, jekyll Bootstrap/( sass版本).zip

    jekyll-bootstrap-theme, jekyll Bootstrap/( sass版本) jekyll-bootstrap-themeJekyll Bootstrap/;参见现场演示 @ henrythemes.github.io/jekyll-bootstrap-theme 注意:主题使用 Bootstrap/scss

    用jekyll制作高大上的网站(二)——实际应用

    在“用jekyll制作高大上的网站(二)——实际应用”这个主题中,我们将深入探讨如何利用Jekyll的实际操作来构建一个专业且引人注目的在线平台。 首先,你需要了解Jekyll的基本结构。一个标准的Jekyll项目通常包含...

    jekyllthemes, Jekyll博客的最佳外观主题目录.zip

    jekyllthemes, Jekyll博客的最佳外观主题目录 主题Jekyll博客的最佳外观主题目录提交主题有一个你想分享的主题?fork 上的站点在 _posts 目录中创建一个新帖子并填写相关的YAML字段制作 250 x200缩略图并将它的放到...

    jekyll-demo

    **Jekyll 概述** Jekyll 是一个静态站点生成器,由GitHub的创始人Tom Preston-Werner开发。它将文本格式的文件(如Markdown和Textile)转换为静态HTML和CSS,用于构建博客、个人网站或其他不需要服务器端动态脚本的...

    Jekyll.Documentation

    **Jekyll 概述** Jekyll 是一个静态站点生成器,由GitHub的开发者Tom Preston-Werner创建。它基于Ruby语言,允许用户通过简单的文本格式(如Markdown)来编写内容,并将其转换为静态HTML和CSS网站。Jekyll的核心...

    windows安装jekyll所需软件 ruby DevKit python pip

    Windows上安装Jekyll所需软件包含ruby 、DevKit、python、pip 目录 Jekyll介绍 安装Ruby 安装DevKit 安装Jekyll 安装Python 安装pip 运行Jekyll 博文参考...

    Ruby-AwesomeJekyll一组很棒的Jekyll工具插件主题指南

    **Ruby与Jekyll简介** Ruby 是一种面向对象的、动态类型的编程语言,以其简洁和高效而受到开发者喜爱。它在Web开发领域中的一个重要应用就是Jekyll,一个静态站点生成器。Jekyll 将文本格式化的内容(如Markdown或...

    Jekyll-Base, Jekyll的基本文件和文件夹结构.zip

    Jekyll-Base, Jekyll的基本文件和文件夹结构 这是一个将让你开始的基础,由 Daniel McGraw ( @danielmcgraw ) 创建。用法查看我的文章系列如何使用Jekyll创建你自己的Jekyll博客。结构. |--. gitignore

    简单和响应式的Jekyll主题帮助中心

    **Jekyll简介** Jekyll是一款静态站点生成器,它能够将文本格式的内容转换成静态的HTML和CSS文件,便于在Web服务器上发布。这个“简单和响应式的Jekyll主题帮助中心”是为创建一个易于使用、对用户友好的在线帮助...

Global site tag (gtag.js) - Google Analytics