現在位置: ホーム ブログ Deliveranceとは
ブログ

Deliveranceとは

先日アナウンスしたイベント(Zope Essentials 7)のメインになる、Deliveranceについて少し突っ込んで書こうと思います。


デザイン用にHTMLを準備することで、バックエンドにおいたPloneなどの動的サーバから、XML定義を元にページを生成する仕組みです。
Ploneへの標準導入が進められており、既にplone.orgサイトでは使われています。 とかく、PloneのSkin(テーマ)開発には学習コストがかかると言われています。それの軽減のためにも、Deliveranceが注目を集めています。

構成要素として

  1. Deliverance アプリケーションサーバ  (プロキシーモード と Apache+mod_wsgiで動作するモードが有ります。)
  2. Deliverance用設定XMLファイル
  3. デザイン用静的HTML/CSS (静的でなくてもベースとなるHTML/CSSが有ればOK)
  4. バックエンド動的サーバ(静的コンテンツでも良い)
    1. HTMLタグの属性(アトリビュート)に、idが埋め込まれていることが条件


動きの流れ

  1. Deliveranceアプリケーションサーバが、リクエストを受ける。この時にiniファイルからペースHTMLやバックエンドが指定される)
  2. 設定用XMLが読み込まれれ、ページのアドレスを評価する。
  3. デザイン用静的HTMLが読み込まれる。
  4. その際に、設定用XMLにて決められた箇所に該当するidの部分を、バックエンドの動的サーバなどから取得し、静的HTMLにマージされ出力される

便利な点

  1. 動的サーバにてデザインやHTMLを操作する必要がない。(バックエンドのシステムを理解しなくても、デザイン・HTML/CSSの専門家に任せることが出来る)
  2. 複数のシステムからコンテンツをマージして出力することが出来る

その他

  1. Deliveranceのフロントに、ApahceなどのWebサーバやVarnishなどのキャッシュサーバを併用することが可能。一般的には、ApacheやnginxなどのWebサーバをフロントに設置している
  2. Deliveranceは、まだ開発中という感じもあり、コードベースの変更が大きく行われている印象がある。(そろそろ収束しているとも思うが)
  3. 使用する文字コードの制限があり、現在はUTF-8以外の文字コードは扱えない。(ケータイサイトを作る際に便利になるのではないかと思っていたが、Shift-jisでは使用できない模様)
  4. インストールは、Pythonのbuildout環境があれば、簡単にインストールすることが可能です。

Deliverance Installation with Plone

1)buildout.cfgに以下の変更を追記する。

partsの項目に、
deliveranceの項目を追記する旨の宣言をする。
[parts]
deliverance


ファイルの最終項目に
[deliverance]
recipe = plone.recipe.deliverance
libxml2-url = ftp://xmlsoft.org/libxml2/libxml2-2.7.3.tar.gz
libxslt-url = ftp://xmlsoft.org/libxml2/libxslt-1.1.24.tar.gz


そのインストールの結果:
instance内のbin/deliveranceが生成される。
instance内の/deliveranceディレクトリが生成される


起動のためのバグ修正:
deliverance/deliverance-proxy.ini内の

修正前
serializer = deliverance.serializers.HTML4

修正後:
serializer = deliverance.serializers:HTML4

HTML4の前の"."を":"に変更する。


host と wrap_href を設定して、
bin/deliverance でdeliveranceを実行する。
最後にrules.xmlを調整していく。


deliverance setting:
http://deliverance.openplans.org/configuration.html

deliverance sprint
http://www.coactivate.org/projects/sorrento-sprint-2009/deliverance-documentation


comments powered by Disqus