Plone3.3.5 の引っ越し

Plone 3 を引っ越す機会があったので、方法をまとめておきました。

Plone サイトのエクスポート

ZMIにログインします。Ploneが example.com サーバの 8080 番ポートで動いているとすれば

http://example.com:8080/manage

から入ります。

右側ペインの中から引っ越したいPloneサイトのチェックボックスを ON にして、「Import/Export」ボタンをクリック。今は画面上半分だけを気にすればOK。Export object id に引っ越したいPloneサイトのID(デフォルトで入力されています)が入力されていることを確認し、ローカルにダウンロードするために「Download to local machine」を選んで「Export」ボタンをクリック。ダウンロードが始まるので .zexp ファイルを保存しておきましょう。

また、独自に拡張 or 開発したソースがあれば、プログラムや画像をコピーするのも忘れずに。通常アドオンは buildout.cfg に記載すればオンラインで取得してくれますが、

ここで、サイトが使っているアドオンをチェックしておきます。左側ペインで対象のPloneサイト>portal_quickinstallerをクリックすると右側ペインで Installed Products に一覧が表示されます。

Ploneサイトのインポート

エクスポートした元の plone の環境とインポート先の plone の環境とが、アドオンも含めて全部同じバージョンが整っていれば、ZMI から「インポート」するだけでOKなのですが、一般的にカスタマイズ済みのサイトはそんな単純にはいきません。エクスポート元の buildout.cfg に書かれているアドオンリストのうち、インポート先の buildout.cfg に漏れているものがあれば書き加えて buildout を実行してください。エクスポート元とインポート先で Plone のバージョンが完全に一致して、なおかつ、インポート先で運営するサイトが今回引っ越すサイトのみという場合は buidout.cfg をエクスポート元のもので置き換えてしまっても良いと思います。

(例)
Eggs =
Plone
Products.PloneFormGen  ←書き加えたアドオンは引越し先にも書く
my.OriginalTheme  ←独自に作ったテーマなどがあれば引越し先にも書く
develop =
src/my.OriginalTheme ←独自に作ったテーマなどがあれば引越し先にも書く

上の例で独自にソースコードを書いて develop にリストしたコンポーネントがある場合は、そのソースコードも忘れずに引越し先へコピーしてください。

次に buildout.cfg の中で、他のコンフィグファイルをインポートしている場合は、それらのコンフィグファイルについても内容をマージします。

(例)buildout.cfg 内で別ファイルを参照している箇所の例
extends = versions.cfg ←versions.cfg ファイルの内容についてもインポート先で不足がないか要チェック

コンフィグファイルに差分の追記を行った場合は、Zope を一度停止して、buildout を実行してから再度起動する必要があります。コンフィグファイルの変更が不要な場合は buildout と再起動も不要です。

次にエクスポートで得た .zexp ファイルをインポート先の環境で以下の場所に置きます。(以下は Plone3.5 の場合。バージョンによって対象のフォルダが変わることがあります)

[plone_installed_dir]/zinstance/parts/instance/import/

ファイルを置いたら ZMI にログインして、ZMI ルートで「import/Export」ボタンをクリック。インポートのときは画面下半分だけを気にします。

Import file name のセレクトボックスに、import ディレクトリに置いたファイルが見えているはずです。それを選択して「Import」ボタンをクリックします。

インポートが完了すると ZMI の左側ペインにインポートした Plone サイトのインスタンスが表示されるようになります。

マイグレーション

インポート先の環境の方が新しいバージョンがインストールされている場合、ZMI上でインポートした Plone サイトのマイグレーションを実行できます。

ZMIの左ペインでインポートした Plone インスタンスを選択すると、右ペインに portal_migration というリンクが表示されるのでクリックします。

portal_migration 画面ではインポートした Plone インスタンスのバージョンと、このサーバ上に配備されている Plone のバージョンが表示されていると思います。ここで、インポートした Plone サイトのほうが古い場合はマイグレーションを自動でやってくれるという優れものです。 新しいバージョンの環境へインポートした場合はここでマイグレーションを実行しましょう。 “Dry run mode” とは、正しくマイグレーションできるか、データベースの書き換えをせずに実験してみるモードです。まずは Dry run してみる事をおすすめします。

アドオンのバージョンによる影響

独自開発のアドオンをソースごと引っ越して buildout した場合は関係ありませんが、古いバージョンから新しいバージョンの環境へ引っ越した場合には、アドオンプロダクトも新しいバージョンが配備されていることがあります。(特に、buildout.cfg のアドオンを追加する行でバージョン番号を明記しない場合は自動的に最新バージョンがインストールされるので注意が必要です) 引越し後のサイトがアドオン周りでなんかおかしい・・・という時は、まずはアドオンの再インストールを試してみましょう。

ZMI にログインして、左ペインのツリーで ROOT > [インポートしたPloneインスタンス] > portal_quickinstaller をクリックします。すると右ペインの下方に、その Plone サイトで使用中のアドオンリストが表示されるので、挙動が怪しいアドオンを選んで「Reinstall」を実行してみてください。

アドオンのバージョンが変わったら動かなくなっちゃった・・・という時は、もし、そのアドオンを他の Plone インスタンスが使用していなければ、エクスポート元の環境で使っていたアドオンのバージョン番号を buildout.cfg に明記して再度 buildout を実行すればエクスポート元と同じバージョンのアドオンが使えるようになります。バージョンの指定方法は buildout.cfg 内の [versions] セクションか、buildout.cfg 内で versions.cfg をインクルードしている場合は versions.cfg も参考にしてください。