日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

告別wordpress,擁抱jekyll ← 陽志平的個(gè)人網(wǎng)站::技術(shù)

 思考的軌跡 2012-02-13

告別wordpress,擁抱jekyll

jekyll是近些年來比較流行的輕量級(jí)博客系統(tǒng),它也是一個(gè)強(qiáng)大的靜態(tài)網(wǎng)站生成系統(tǒng)。本文簡(jiǎn)要介紹了從wordpress遷移到j(luò)ekyll的一些注意事項(xiàng)。

主要特點(diǎn)

  • 直接使用Markdown文件作為默認(rèn)模版語言。
  • 支持通過git跟蹤所有內(nèi)容。
  • 有大量的知名程序員在使用,并且有大量的模版。
  • 支持自動(dòng)生成靜態(tài)網(wǎng)站。

安裝

很簡(jiǎn)單,

gem install jekyll

如果不需要用默認(rèn)的模版Maruku,想使用RDiscount,則請(qǐng)安裝:

gem install RDiscount

更多細(xì)節(jié)可以參考官網(wǎng)

有好事者做了一個(gè)比較,Maruku是純r(jià)uby的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之后,然后運(yùn)行它,生成一個(gè)自己的網(wǎng)站。然后進(jìn)入自己的jekyll目錄,首先配置以下_config.yml文件,指定未來生成的網(wǎng)站的路徑以及其他參數(shù)。然后運(yùn)行:

jekyll --server

關(guān)于jekyll的用法配置官方解釋很詳細(xì),請(qǐng)自行閱讀。

用習(xí)慣jekyll的人會(huì)覺得很舒服,它一貫地繼承了Mac下的軟件的特點(diǎn):簡(jiǎn)潔;漂亮,同時(shí)還很有rails約定大于配置的精神,通過目錄等默認(rèn)文件即可構(gòu)成一個(gè)強(qiáng)大的網(wǎng)站系統(tǒng)。

如果默認(rèn)模版是使用rdiscount,則請(qǐng)修改_config.yml文件:

markdown: rdiscount

導(dǎo)入wordpress數(shù)據(jù)

導(dǎo)入其他博客系統(tǒng)的文章,可以參考官網(wǎng)。導(dǎo)入wordpress的主要步驟如下:

  • 找到j(luò)ekyll gem庫(kù)下的migrate文件夾下面的文件wordpress。rb,具體路徑可以通過 gem environment命令找到你當(dāng)前所在的gemset環(huán)境之下。也可以按照官方教程,安裝一個(gè)open_gem的插件。
  • 在自己的jekyll實(shí)例站點(diǎn),新建一個(gè)_import目錄,將wordpress.rb文件復(fù)制到此。
  • 安裝兩個(gè)讀取mysql數(shù)據(jù)庫(kù)的插件,

    gem install sequel mysqlplus

  • 默認(rèn)的文件不支持utf8,請(qǐng)修改:

      #修改之前:db = Sequel.mysql(dbname, :user => user, :password => pass, :host => host)  
      db = Sequel.mysql(dbname, :user => user, :password => pass, :host => host, :encoding => 'utf8') #修改之后
    
  • 然后在Shell進(jìn)入_import目錄中,運(yùn)行以下命令,請(qǐng)將相應(yīng)的路徑,wordpress的數(shù)據(jù)庫(kù)的名字,連接數(shù)據(jù)庫(kù)的用戶名與密碼修改為自己對(duì)應(yīng)的。

      export LC_ALL=en_US.UTF-8
      export LANG=en_US.UTF-8
      export DB=xingfukenet      #請(qǐng)修改為自己的wordpress數(shù)據(jù)庫(kù)名字
      export USER=root           #請(qǐng)修改為自己的wordpress數(shù)據(jù)庫(kù)用戶名
      export PASS=               #請(qǐng)修改為自己的wordpress數(shù)據(jù)庫(kù)密碼
      ruby -r 'wordpress.rb' -e 'Jekyll::WordPress.process( "#{ENV["DB"]}", "#{ENV["USER"]}", "#{ENV["PASS"]}")'
    

如果需要對(duì)導(dǎo)入的細(xì)節(jié)進(jìn)行定制,可以修改wordpressrb.rb文件中的語句,比如,只導(dǎo)入某個(gè)作者的文章:

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格式默認(rèn)是:參數(shù)+:+空格,如果忘記寫空格描繪編譯報(bào)錯(cuò)。jekyll用的最頻繁的幾個(gè)參數(shù)如下所示,更多參數(shù)可參考官網(wǎng)wiki

title: 如何學(xué)習(xí)ruby and rails雜談
excerpt: 如果希望享受編程的樂趣,ruby與rails或許是比c#與asp.net等更好的選擇。
layout: tech-post

請(qǐng)注意冒號(hào)之后的空格。如果少了空格,編譯通不過。另外,請(qǐng)注意ruby的to_yaml函數(shù)默認(rèn)會(huì)使用ruby內(nèi)置的對(duì)中文字符處理方式,會(huì)將string輸出為

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

這種格式。這是由于ruby默認(rèn)的yaml庫(kù)對(duì)utf8的支持導(dǎo)致的。我們需要對(duì)其做處理。一種辦法是調(diào)用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)
。。。
。。。

如果需要對(duì)原來的wordpress的html代碼進(jìn)行過濾,可以如此處理:

    require 'rubygems'
    require 'hpricot'  
    require 'hpricot_scrub'
    ...
    content = post[:post_content].scrub(:allow_tags => ['table', 'tbody','tr','td','div','a','blockquote','img'])  
    #table,tbody等標(biāo)簽保留下來。
    ...

導(dǎo)入到github pages

首先在本地測(cè)試通過,注意目前github pages使用的jekyll為:0.7.0, 運(yùn)行:

jekyll --pygments --safe --server

然后在自己的github庫(kù)中創(chuàng)建一個(gè)username.github.com的庫(kù)。

將自己的jekyll實(shí)例復(fù)制到本地的該庫(kù)中,然后推送即可。

git remote add username ...
git push username

推送成功之后,可以使用http://username.github.com/瀏覽自己的個(gè)人網(wǎng)站。如果希望自定義域名,也很簡(jiǎn)單,創(chuàng)建一個(gè)CNAME文件,內(nèi)容為你的域名即可。

更多說明,可以參考:

http://pages.github.com/

享受云計(jì)算時(shí)代的快樂

在一切都向云計(jì)算邁步的今天,jekyll本身是不帶評(píng)論系統(tǒng)的,一般是使用disqus的云評(píng)論服務(wù)。安裝很簡(jiǎn)單,去官網(wǎng)自行注冊(cè)一個(gè)免費(fèi)賬號(hào),然后按照提示,一步一步往下走就可以了。到了需要導(dǎo)入評(píng)論的時(shí)候,則請(qǐng)參照disqus的開放api與相關(guān)工具。這樣以后,你的個(gè)人博客的評(píng)論隨身攜帶,不用擔(dān)心隨著博客系統(tǒng)遷移而丟失。

不僅是評(píng)論可以在云中,寫作的所有進(jìn)程也可以托管在云中。與wordpress的版本跟蹤相比較,必須使用wordpress后臺(tái)來寫的時(shí)候才能版本跟蹤,你可以將自己的jekyll實(shí)例托管到github上去。如果對(duì)github不熟悉,或許有必要了解一下關(guān)于git的基礎(chǔ)知識(shí)。熟悉的朋友則很好辦了,直接進(jìn)入jekyll實(shí)例目錄,然后分別執(zhí)行g(shù)it的常規(guī)操作,就可以擁有一份由github保管的備份。可以非常詳細(xì)地記錄你一切寫作的進(jìn)程,而不用擔(dān)心版本丟失。由于git的強(qiáng)大,使得你能將在任何離線環(huán)境之下,對(duì)自己的文章、代碼等進(jìn)行的操作,都可以在聯(lián)機(jī)之后,推送到服務(wù)器上。jekyll與git以及Markdown的先天結(jié)合,可以隨時(shí)隨地進(jìn)行版本跟蹤,也許這點(diǎn)是極客們?nèi)找嫦矚g它最重要的原因。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多