社内で運用している plone site を zope 2.7.8/plone 2.0.5 から zope 2.8.8/plone 2.1.4 にアップグレードしました。
手順をざっくりとここにまとめておきます。ちなみに OS は Vine Linux 3.2 です。
基本的には zope 2.7 上で plone のアップグレードを行い、その後 zope のアップグレードを行うという手順になります。
/usr/lib/zope/bin/mkzopeinstance.py コマンドを実行して
/var/lib/plone21 に新規に (zope 2.7 の) zope instance を作成する。
# /usr/lib/zope/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: /var/lib/plone21
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: takanori Password: Verify password: # chown -R zope:zope /var/lib/plone21
/var/lib/plone21/Products 以下に plone 2.1.4 と必要なプロダクトをインストールする。
zope サーバが起動できるように /var/lib/plone21/etc/zope.conf のポート番号などの設定を書き換える。
その後、/var/lib/plone21/bin/runzope コマンドで zope サーバを起動する。
ZMI から空の plone site が作成できることを確認する。
確認ができたら zope サーバを停止する。
元々の zope instance で使用している ZODB を pack (Control_Panel/Database/main で Pack)して、Data.fs を最小にする。
その後、zope サーバを停止し /var/lib/zope/var/Data.fs を /var/lib/plone21/var/ にコピーする。
両方の zope サーバを立ち上げる。
ZMI で plone21 用の zope サーバにアクセスし、各 plone site で下記の移行処理を行う。
portal_quickinstaller に入り、Archetypes, MimetypesRegistry, PortalTransforms を一旦 Uninstall して Install する。
archetype_tool, mimetypes_registry 等が Reinstall だとうまく入らないときがあるためATContentTypes, ATReferenceBrowserWidget, ResourceRegistries をインストールする。portal_atct に入り、古い CMF Types から ATContentTypes に移行する。
アイテムの数が多いと、それぞれの処理に時間がかかるので注意。
Recatalog タブ→Recatalog CMF Types ボタンType Migration タブ→Migrate ボタンVersion Migration タブ→Upgrate ボタンportal_properties/site_properties に入り、default_charset が euc-jp 等のものを utf-8 に変更する。
portal_catalog に入り、ZCTextIndex Lexicon を追加する。
Indexes タブに入り、Description, SearchableText, Title インデックスを削除(Remove index)する。ZCTextIndex として再作成する。
portal_migraiton に入り Migrate タブ → Upgrade ボタンで
plone のアップグレードを実行する。(これもかなり時間がかかる)portal_catalog → Advanced タブに入り、
Update Catalog を実行する。(これも時間かかります)これで plone サイトが表示できるようになるはずなので、確認する。
全ポータルに対して移行が終了したら、ZODB の pack を実行して Data.fs を最小にする。
rpm で zope 2.8 をインストールすると、既存の zope 2.7 の環境を上書きしてしまう。
平行して動作させるために、ディレクトリ名等を変更する。
# mv /usr/lib/zope /usr/lib/zope27 # mv /var/lib/zope /var/lib/zope27 # mv /var/log/zope /var/log/zope27 # mv /etc/zope.conf /etc/zope27.conf # mv /etc/init.d/zope /etc/init.d/zope27
また、起動スクリプトや設定ファイルの中身も適宜修正する。修正したファイルは以下の4つ。
zope 2.8.8 をインストールする。
ftp://owa.as.wakwak.ne.jp/pub/vine/3.2/RPMS/ から下記の2つのパッケージをダウンロードする。
# rpm -Uvh Zope-2.8.8-uvl2.i386.rpm Zope-zserver-2.8.8-uvl2.i386.rpm
その後、起動する前にいくつかのファイルを書き換える。
/etc/zope.conf ポート番号等を設定/usr/lib/zope/lib/python/StructuredText/STletters.py 構造化テキストで日本語が使えるように書き換える。 letters = string.letters + "\200-\377\?\!"
/usr/lib/zope/lib/python/sitecustomize.py 新規作成して、下記の内容を書き込む。
import sys
sys.setdefaultencoding("euc-jp")
その後、zope サーバを起動する。
# /etc/init.d/zope start
zope 2.7 から zope 2.8 でカタログの形式が変わったので、再作成する。
ZMI でそれぞれの plone site にアクセスし、以下の3つのカタログ上で
Advanced タブ → Update Catalog を実行する。
portal_catalogreference_cataloguid_catalog