Date: 2009-11-24
Tags: zope, plone

Plone-3.3.2 にアップグレードして公開

一つ前のエントリ 清水川Webを Plone-2.5.2-1 から Plone-3.3.2 にアップグレード の手順ほぼそのままでアップグレードがうまくいったので、今朝方切り替えました。とりあえず見た目はなんにも変わりませんが、そのへんはそのうち。

続きは以下から。

移行後の後始末

起動中に PlacelessTranslationService が以下のようなメッセージを表示する:

2009-11-23 13:39:23 INFO PlacelessTranslationService You have a stale entry for 'Products.CacheSetup' in your ZMI Products section.You should consider removing it.

既に削除されたプロダクトがZMIのControl_panel/Productsに残っているので、手動で削除する。今回の対象は以下の通り:

CMFContentPanels
CMFContentPanelsCB2Viewlet
CMFSquidTool
CacheSetup
CallProfiler
DDocument
ExtImageDirective
FCKeditor
Hotfix_20060705
Hotfix_20070320
MJSplitter
PloneErrorReporting
PloneHotfix20060410
PloneHotfix20060518
PloneJSOrder
PloneSVNView
PloneTranslations
VerboseSecurity
WingDBG
ZWeatherApplet
ZopeTutorial

portal_skinsに残ってしまっている古いProductのskinを削除

Ploneのページを表示するとコンソールに以下のように表示される:

Products/CMFCore/DirectoryView.py:497: UserWarning:
DirectoryView contentpanels refers to a non-existing path
'Products.CMFContentPanels:skins/contentpanels'

同様に表示されれる以下のフォルダをportal_skinsから削除:

'Products.CMFContentPanels:skins/contentpanels'
'Products.CMFContentPanels:skins/cp_viewlets'
'Products.CMFContentPanelsCB2Viewlet:skins/cp_cb2_viewlets'
'PloneErrorReporting/skins/plone_error_reporting'

実行中に表示されるerrorを修正する

CMFContentPanelsやPloneSVNViewをアンインストールせずに削除したため、portal_typesなどに情報が残っている。これを削除。 今回は portal_types にあった以下のフォルダを削除した:

ContentPanels
SVN View

また、portal_quickinstallerにある削除したはずのプロダクトを手動削除した:

CMFContentPanels
CMFContentPanelsCB2Viewlet
PloneErrorReporting
PloneJSOrder
PloneSVNView

この流れで、 portal_javascripts と portal_css を確認したところ、リソースが無くなっている項目がいくつかあったので、手動削除した。

使われてないと思われるプロダクトを削除

ZMIのfindタブを使えば、特定のコンテンツタイプがDB内に存在するか調べることが出来る(一部例外あり)。これで例えばCOREBlogは全部COREBlog2に移行済みのはずだけど残ってないかな?といった状況で探すことが出来る。

今回探したもの:

COREBlog           -> 実験用オブジェクト有り
ATExtFlash         -> 無し
CMFDynamicDocument -> 無し
SilverCityDocument -> 無し
ZAmazon            -> 実験用オブジェクト有り

しかし、上記で「無し」になっているインスタンスは実在しているのに、なぜか検索に出てこない。Zopeのdebugコンソールで起動してオブジェクト種別で検索する方法もあるけど、今回は1,2カ所くらいでしか使用していないことが分かっているので手動で対応した。

COREBlog           -> 実験用オブジェクト有り -> 削除
ATExtFlash         -> 無し -> 実際は有り -> そのまま使用
CMFDynamicDocument -> 無し -> 実際は有り -> 削除
SilverCityDocument -> 無し -> 実際は有り -> 削除
ZAmazon            -> 実験用オブジェクト有り -> 削除

あと ejSplitter は以前 CJKSplitter に移行していたので、 portal_catalog の indexes で ZCTextIndex で参照されていないことを確認した上でcontentsタブでlexiconを削除。

最後にプロダクトを削除:

$ sudo -u www rm -Rf CMFDynamicDocument
$ sudo -u www rm -Rf FSCounter
$ sudo -u www rm -Rf SilverCityDocument
$ sudo -u www rm -Rf ZAmazon
$ sudo -u www rm -Rf ejSplitter

products内の古いプロダクトをbuildoutへの記載に移行してupgradeする

いくつかのプロダクトがPyPIで提供されているので、buildout.cfgに記載しproductsから削除してバージョンアップすることにする。 目的のプロダクトがPyPIで提供されているかどうかを調べるためには http://pypi.python.org/simple/ を見表示してブラウザの検索機能を使うと早い。

ATAlbumViewEx

Ploneのサムネイル表示で画像をlightbox表示するプロダクト。 PyPIの Products.PloneSlimbox に移行。

LDAPMultiPlugins

PyPIの Products.LDAPMultiPlugins に移行。

LDAPUserFolder

PyPIの Products.LDAPUserFolder に移行。

jaMailHost

とりあえずjaMailHostは削除。smtpにGMailを使用しているが問題なさそう。 PyPIの c2.patch.plone3mail を使うべきか要検討。

上記を行う前に、LDAP認証関連が含まれているので、念のため Data.fs をpackしてバックアップしておいた。

Zopeを停止して、 buildout.cfg の eggs に以下を追記:

eggs =
    Products.LDAPMultiPlugins
    Products.LDAPUserFolder
    Products.PloneSlimbox

移行したプロダクトを削除、 bin/buildout 実行、起動:

$ cd products
$ sudo -u www rm -Rf LDAPMultiPlugins
$ sudo -u www rm -Rf LDAPUserFolder
$ cd ..
$ sudo -u www -H bin/buildout -v
$ sudo -u www -H bin/instance fg

実はbuildout中に python-ldap-2.3.10 のビルド中に LDAP_OPT_X_TLS_NEWCTX の問題 で止まってしまったけど、ググってコード書き換えてeggを手動で作成して解決したりなどした。

もしかしたら役に立つかも知れない情報1

このサイトで使用していたプロダクトのバージョン

Product name

Plone-2.5.2

Plone-3.3.2

Plone-3.3.2

ATAlbumViewEx

0.2.1

->

-> PloneSlimbox へ移行

ATBookshelf

0.0.2

->

自作:どうしよう

ATExtFlash

0.1

->

自作:要Plone3対応

AdvancedQuery

0.6

plone include

CJKSplitter

0.7.3

->

->

CMFContentPanels

2.3

removed

removed

CMFContentPanelsCB2Viewlet

svn

removed

removed

CMFDynamicDocument

1.1.2

->

removed

COREBlog

1.21

removed

removed

COREBlog2

0.9b

9.83b

->

CallProfiler

1.4(w/fixes)

removed

removed

FSCounter

1.4.0

->

removed

Hotfix_20070320

20070320

removed

removed

ImageTag_CorePatch

0.3

->

(need remove)

LDAPMultiPlugins

1.1

->

pypi 1.8

LDAPUserFolder

2.6

->

pypi 2.13

LocalFS

1.7-andreas

->

->

MultiPatch

2005/2/20

->

(need modify)

MyScriptModules

2007/2/25

->

(need modify)

PloneSlimbox

x

x

0.6

PloneFlashUpload

x

x

1.3b1

QuickImporter

0.2

->

->

SilverCityDocument

0.0.5

->

removed

WingDBG

WingIDE2.0.2

removed

removed

ZAmazon

0.1

->

removed

ZSilverCity

0.2-mod

->

->

ZWeatherApplet

1.51

removed

removed

ZWiki

0.47.0

->

(need update)

ZrstAmazon

0.0.1

->

自作:このまま

ZrstIFrame

0.1

->

自作:このまま

ejSplitter

0.5.0

->

removed

jaMailHost

0.4.4

->

removed

もしかしたら役に立つかも知れない情報2

このサイトの環境を用意する buildout.cfg

[buildout]
parts =
    zope2
    productdistros
    instance
    zeoserver
    zopepy

# Change the number here to change the version of Plone being used
extends = http://dist.plone.org/release/3.3.2/versions.cfg
versions = versions

# Add additional egg download sources here. dist.plone.org contains archives
# of Plone packages.
find-links =
    http://dist.plone.org/release/3.3.2
    http://download.zope.org/ppix/
    http://download.zope.org/distribution/
    http://effbot.org/downloads

# Add additional eggs here
eggs =
    Products.LDAPMultiPlugins
    Products.LDAPUserFolder
    Products.PloneFlashUpload
    Products.PloneSlimbox
    Products.LinguaPlone

# Reference any eggs you are developing here, one per line
# e.g.: develop = src/my.package
develop =



[settings]
effective-user = www
http-port = 8180
zeo-port = 8181
initial-user = admin:admin



[zope2]
# For more information on this step and configuration options see:
# http://pypi.python.org/pypi/plone.recipe.zope2install
recipe = plone.recipe.zope2install
fake-zope-eggs = true
additional-fake-eggs =
    ZODB3
url = ${versions:zope2-url}
location = /usr/local/www/Zope210


# Use this section to download additional old-style products.
# List any number of URLs for product tarballs under URLs (separate
# with whitespace, or break over several lines, with subsequent lines
# indented). If any archives contain several products inside a top-level
# directory, list the archive file name (i.e. the last part of the URL,
# normally with a .tar.gz suffix or similar) under 'nested-packages'.
# If any archives extract to a product directory with a version suffix, list
# the archive name under 'version-suffix-packages'.
[productdistros]
# For more information on this step and configuration options see:
# http://pypi.python.org/pypi/plone.recipe.distros
recipe = plone.recipe.distros
urls =
nested-packages =
version-suffix-packages =

[instance]
# For more information on this step and configuration options see:
# http://pypi.python.org/pypi/plone.recipe.zope2instance
recipe = plone.recipe.zope2instance
zope2-location = ${zope2:location}
user = ${settings:initial-user}
http-address = ${settings:http-port}

# If you want Zope to know about any additional eggs, list them here.
# This should include any development eggs you listed in develop-eggs above,
# e.g. eggs = Plone my.package
eggs =
    Plone
    ${buildout:eggs}


# If you want to register ZCML slugs for any packages, list them here.
# e.g. zcml = my.package my.other.package
zcml =

products =
    ${buildout:directory}/products
    ${productdistros:location}

effective-user = ${settings:effective-user}

# for zeo
zeo-client = true
zeo-address = ${zeoserver:zeo-address}
zeo-client-cache-size = 300MB

zodb-temporary-storage =
    <zodb_db temporary>
      <zeoclient>
        server ${zeoserver:zeo-address}
        storage temp
        name zeostorage
        var ${buildout:directory}/var/filestorage
      </zeoclient>
      mount-point /temp_folder
      container-class Products.TemporaryFolder.TemporaryContainer
    </zodb_db>


[zeoserver]
recipe = plone.recipe.zope2zeoserver
zope2-location = ${zope2:location}
eggs = ${buildout:eggs}
effective-user = ${settings:effective-user}
zeo-address = 127.0.0.1:${settings:zeo-port}
zeo-conf-additional =
     %import tempstorage
     <temporarystorage temp>
         name temp storage for sessioning
     </temporarystorage>


[zopepy]
# For more information on this step and configuration options see:
# http://pypi.python.org/pypi/zc.recipe.egg
recipe = zc.recipe.egg
eggs = ${instance:eggs}
interpreter = zopepy
extra-paths = ${zope2:location}/lib/python
scripts = zopepy

移行後のデザイン適用

  • Plone3.3の流儀でheader/footer/cssのデザイン適用をやりなおした

  • COREBlog2のportletをクラシックポートレットとして手動で適用

  • エレメントの構成が一部変わっていたのでcssを数カ所修正

今後の作業

いくつかの問題を修正しなくてはいけない。

  • COREBlog2のカレンダー表示が月変更出来ない

  • ZWikiページが見れない

  • 本棚ページの詳細が見れない

  • ATExtFlashをPlone3対応しないといけない

あとは未来への展望

  • Deliveranceかcollective.xdvでデザイン適用する

  • plone.app.blob 導入で高速化(?)

  • CacheFo 導入で高速化

  • Vernish 導入で高速化