2009/02/10(火)Ploneの概要と、Ubuntu/Debianへのインストール方法

Ubuntu8.04上に、Ploneと呼ばれるWeb型CMSをインストールしたときの記録。

よければこちらも参照ください→PloneメモPlone / Archetypes のプロダクトサンプル

Plone(ぷろーん)とは

PythonというRubyっぽいオブジェクト指向言語の上で動く、CMSツールです。Zopeと呼ばれるWebアプリケーションワークフレームの上で動作します。Ploneの動作サンプルはオフィシャルを見るのが良いようです

Zopeとは、Pythonで記述されたWebアプリケーションフレームワーク。CGIフレームワークとは異なり、それ自体がWebサーバ機能、データベース機能を内包しています。

スタンドアローンで動作するので通常のレンタルサーバ等では動作しません。ユーザーのホームにPython+Zopeをインストールし、特権ポートをListenしなければユーザー権限で動作させることもできます。Apacheからのmod_proxyなりで透過的に接続させることもあるようです。

……というレベルの説明が、どうしてPloneオフィシャルサイトに書いてないのか謎。*1

*1 : Zopeはきちんと書いてあった。これに限ったことではなく、オープンソース系ツールは「分かりやすい概要」が「分かりやすい位置」に書かれているのをほとんど見たことがありません。

Ploneの準備

執筆時点での最新版はPlone 3.2.xですが、まだ日本語化がされていないので、今回は日本語化がされているPlone 3.1.xをインストールします。

必要な環境は次のとおりです。(参考資料

  • Zope 2.10.x
  • Python 2.4.x

Ploneの配布形態には「Unified Installer」と「Product Package」版があります。前者は一般ユーザーを想定したものらしく、利用すると「PythonやZopeごと」環境を構築された上、Pythonのコンパイル済バイナリ(バイトコード)だけ置き去りにされるので、中身を参照したいときにはありがた迷惑です。*2

通常の感覚でのパッケージは後者の「Product Package版」です。Plone本体のみが配布されています。

*2 : 逆にただ利用するだけなら、これを使うのが楽でしょう。指定ディレクトリ以下にZope/Pythonをすべて展開し、すぐ使用可能な状態にしてくれます。

Zopeのインストール

バージョン依存が激しいらしく、PloneがZope 2.10に依存し、Zope 2.10がPython 2.4に依存しています。Ubuntu8.04*3にはPython 2.5がインストールされていますが、2.4を別でインストールする必要があります。

難しいことは考えず、apt-get (synapticでも可)で次のパッケージをインストールします。

# apt-get install zope2.10

依存関係でPython 2.4も一緒に入ります。Plone動作のための必要なライブラリも入れます。

# apt-get install python-imaging-tk python-elementtree

このようにインストールしたZopeはそのままでは特に何も動作しません。というのも、ZopeはWebサーバではなくアプリケーションフレームワークであるからです。Zopeフレームワークは、スクリプトによりユーザーが指定したディレクトリ以下にZopeの環境を構築し動作可能な状態に初期化します。このように初期化されたひとつのZope動作環境のことをインスタンスと言います

(Ubuntuにおける)Zopeのインストールとは、このようにインスタンスを生成できる環境を整えることを意味するようです。

*3 : Desktop環境があれば

Ploneのインストール

ここでは、Zopeのインスタンスを作成し、そこにPloneをインストールする方法をのべます。

  • ユーザー : userid
  • 場所 : ~userid/plone/

まずZopeインスタンスを作成します。Ubuntuでは残念ながらrootでないと実行できないようです。

# /usr/lib/zope2.10/bin/mkzopeinstance.py
Please choose a directory in which you'd like to install
Zope "instance home" files such as database files, configuration
files, etc.

Directory: /home/userid/plone
Please choose a username and password for the initial user.
These will be the credentials you use to initially manage
your new Zope instance.

Username: admin
Password: パスワード
Verify password: パスワード
# chown -R userid:userid /home/userid/plone

admin/パスワードは、あとでZopeにアクセスするときに必要になります。ディレクトリの所有権を変更したら以降はrootを抜けて操作します。

まず、Ploneの「Product Package版」をここから辿ってダウンロードします。そのファイルをhomeディレクトリにおいて次の作業です。

~$ tar zxvf Plone-3.1.x.tar.gz
~$ cp -Rp Plone-3.1.x/* plone/
~$ rm -rf Plone-3.1.x/
~$ cd plone

PloneはZopeのライブラリ(Product)として実装されているため、このようにZopeインスタンスの中へ必要なファイルをすべてコピーしてあげます。

このままPlone/Zopeを起動しても良いのですが、Listenするポート番号(アクセスポート番号)を変えておきます。自分は、覚えやすいように 8080 に変更しました。

# vi plone/etc/zope.conf
%define INSTANCE /home/nabe/plone
%define HTTPPORT 8080		この行のみ修正
%define ZOPE /usr/lib/zope2.10
%define ZOPE_USER zope
%define ZEO_SERVER localhost:8100

ついでに文字コードなども設定しておきます。

    rest-language-code ja
    rest-input-encoding utf-8
    rest-output-encoding utf-8

zopeを起動します。1023番以下の特権ポートを利用しないので、root権限は必要ありません。

~$ bin/zopectl start

起動していればアクセスできます。サーバのIPを入力してアクセスし起動を確認してみてください。初回のアクセスは時間がかかることがあります。

http://192.168.xxx.yyy:8080/

Ploneサイトの構築

「以上でPloneサイトができました」なら話が早いのですが、ここまででは、PloneのライブラリがインストールされたZopeが動いているにすぎません

Zopeのマネージャにアクセスし、Ploneサイト(コンテンツ)を追加してあげる必要があります。次のアドレスを開きます。

http://192.168.xxx.yyy:8080/manage/

IDとパスワードを求められるので、Zopeインスタンス作成時に指定したID/Passを入力してください。次の画面が表示されると思います。左の、メニューから「Root Folder」を選択した状態で右画面からPloneコンテンツを追加します。右上のプルダウンメニューから"Plone Site"を選択します(画面写真を参考に)。

plone01.png

続いてフォームが現れます。IDがURLパスなので英字で、タイトルがタイトルです*4。今は仮に、idに plone と入力したとします。

最後はいよいよ plone にアクセスです。きちんと表示されましたでしょうか?*5

http://192.168.xxx.yyy:8080/plone/

plnoe02.png

*4 : ブラウザの文字コード認識がUTF-8になっていれば大丈夫みたいです。

*5 : 画面は Plone-3.1.7 です。