Plone の構造

Plone がどうやって動いているか、簡潔にまとまっている資料が見当たらなかったので自分でまとめました。

ZOPE

Zope の役割

Plone は ZOPE の上で動作します。ZOPE とは python で実装された Web アプリケーションフレームワークで、大きくわけて3つの役割を備えています。

  • Web Server
  •  Publisher
  • DB
一般的に多くの Web アプリケーションフレームワークはPublisher の部分だけで配布されているものが多いのですが、Zope は Web Server と DB もセットで1つのフレームワークです。

Plone on ZOPE

Plone はこの ZOPE の Publisher として実装されているパッケージです。他の Web アプリケーションでは DB を MySQL にするのか?PostgreSQL にするのかなど環境にある程度柔軟性がありますが、Zope 上で動く Plone は Zope が抱える DB 以外にはデータを格納することができません。
Zope 管理画面では、Zope 上で動く全てのアプリケーションの管理が行えます。アプリケーションの単位は「インスタンス」と言われるようで、1つの Zope 上に Plone のサイトが 10個構築されるのであれば、「Plone インスタンスが10個」と言うことになります。ページの管理、プラグインの追加・削除、バックアップ・リストア、テーマ(見た目)の入れ替え、簡単なテーマの変更など、できることが多いぶん、Zope 管理画面は階層構造も深くタブが沢山あります。

ZCML – Zope Configuration Management Language –

XML形式の設定ファイルのことです。Plone の拡張やカスタマイズ作業をやると気付くのですが、簡単なカスタマイズは XML 形式のファイルを変更するだけ可能な場合が多いです。つまり、python をあまり知らなくても Plone の改造は可能です。

Python

Zope 自体が Python で書かれているので、その上で動く Plone も Python で書かれています。

Plone インストーラ

Plone 自体のバージョン、Zope のバージョン、Python のバージョン・・・といろいろ互換性を考えると大変な気がするかもしれませんが、Plone のインストーラは基本的にオールインワンです。 Plone のディレクトリ以下に、相性の良いバージョンの Python が含まれているので、それを使うと良いでしょう。 もちろん、Zope, Python, Plone をバラバラに取得・インストールすることも可能です。