若干の設定メモやトラブル対策集と,Plone4からPlone5への移行の苦労話
buildout.cfgに以下を記載(多分)
event-log-max-size = 5 MB
event-log-old-files = 5
access-log-max-size = 20 MB
access-log-old-files = 10
ZMI -> acl-users -> session -> properties
で設定。以下は,設定例
Cookie validity timeout: 0 # タイムアウトなし
Cookie lifetime: 7
サイト設定 -> リソースレジストリ -> パターンオプション
で,pickadateに対して,以下を設定。
{“date”: {“selectYears”: 200}, “time”: {“interval”: 10 } }
buildout-cache/eggs/plone.app.widgets-.../plone/app/widgets/utils.py
を編集する。
#. Default: "mmmm d, yyyy"
#: plone.app.widgets/plone/app/widgets/utils.py:74
msgid "pickadate_date_format"
msgstr "d. mmmm, yyyy"
#. Default: "h:i a"
#: plone.app.widgets/plone/app/widgets/utils.py:87
msgid "pickadate_time_format"
msgstr "H:i"
テーマファイルのrules.xmlに以下を追加する。
<rules css:if-content=".userrole-anonymous">
<drop css:content="#portal-searchbox" />
<drop css_content="#searchform" />
</rules>
以下にアクセスする。
/localhost:8080/acl_users/users/manage_users
insufficient priviledge (十分な権限がりません)
と表示されてしまう。Plone5.1.x (?)あたりのCMFEditionsにあるrevertversion.pyの不具合らしい。 以下のサイトの通り修正すればOK。
時計アイコンをクリックすると表示されるはずのページ更新履歴一覧がなぜか表示されなくなった。
とりあえず,URLに@@historyview
を加えると履歴表示できた。
buildoutのときに最新パッケージをダウンロードできないとき等に出るエラー。
pypi.python.orgがhttpに非対応になったことが原因の場合は,Pythonのディレクトリにある
lib/python2.7/site-packages/zc/buildout/easy_install.py
を開いて,http を https に変更する。
もしくは,buildout.cfg
の[buildout]
の項目に以下を追加する。
[buildout]
index = https://pypi.python.org/simple
...
ただし,proxy設定の問題の場合もある。
以下のようなshell scriptを用意して,zinstance/
以下で実行する。
#!/bin/bash
http_proxy=http://proxy.hogehoge:8080 # <=proxyサーバを設定
export http_proxy
bin/buildout
もしくは,以下を実行。
$ sudo -E -u plone_buildout http_proxy="http://<proxy server>" bin/buildout
Thank you, that was the tip I needed. No 3rd party products are installed now, but perhaps I had tried out something years ago and some crud was left behind? In the ZMI, I created a new dummy Plone site, exported portal_languages to local disk, went back to my main Plone site, deleted portal_languages there, imported the file from disk, and THEN was able to continue with my Plone 4 -> Plone 5 migration and run the import tool successfully. – Jeff Shafer Oct 10 ‘15 at 16:14
以下を実行する。
$ chmod -R g+r <Plone directory>/buildout-cache
$ chmod 777 <Plone directory>/zinstance
コンテンツのアップグレード時に出るエラー。
対策: migration from plone 4.0.10 to plone 4.1.3 fails
Zope Error
Zope has encountered an error while publishing this resource.
Error Type: AttributeError
Error Value: reference_catalog
ZMI上で,portal_catalog, referene_catalog, uid_catalogの更新をする(上記アップグレード手順参照)と,なんとかなることが多い。
Plone コンテンツを新しいサイトに引っ越した時にこのエラーがでることがある。blobstorageの移動で抜け落ちたファイルやファイル情報があるのが原因。 このエラーが出たときに,ファイルは有るのに,ファイル名が無くなっていたりといったトラブルもあった。
対策は,コンテンツ移動にcp -r
は使わないこと。tarで固めて持っていくのが一般的だが,下記サイトによるとSolarisのtarだと問題があるらしい。
学内の某サイトのCMSにPloneを使ってますが,Plone 4.2からPlone 5.0にコンテンツを更新するのに随分苦労しました。
問題点:
対策
多分,かなり回り道をしましたが,まとめるとこんなかんじでOKなはず。 無駄な手順も混じっているかもしれませんがあしからず。
bin/buildout
buildout.cfg
から,Collage, FacultyStaff, LinguaPloneその他不要addonをはずすbuildout.cfg
のPloneバージョン指定を4.3にするbin/buildout
bin/plonectl
を実行して,コンテンツをPlone 4.3用に更新zinstance/var/instance
以下に出力される。zinstance/var/instance/import/
以下に移動。上で作成したportal_languages.zexp
も同じところに移動$ bin/instance debug
(Pdb) plone=app.Plone
(Pdb) site = plone.getSiteManager()
(Pdb) from plone.i18n.locales.interfaces import IContentLanguageAvailability
(Pdb) utils = site.getAllUtilitiesRegisteredFor(IContentLanguageAvailability)
(Pdb) utils
[<plone.i18n.locales.languages.ContentLanguageAvailability object at 0xb63c4cc>,
<ContentLanguages at /plone/plone_app_content_languages>,
<Products.LinguaPlone.vocabulary.SyncedLanguages object at 0xfa32e8c>,
<Products.LinguaPlone.vocabulary.SyncedLanguages object at 0xfa32eac>]
(Pdb) utils = utils[:-2]
(Pdb) del site.utilities._subscribers[0][IContentLanguageAvailability]
Repeat the procedure for IMetadataLanguageAvailability and commit the transaction:
(Pdb) import transaction
(Pdb) site._p_changed = True
(Pdb) site.utilities._p_changed = True
(Pdb) transaction.commit()
(Pdb) app._p_jar.sync() # if zeo setup
zinstance/var
以下に有るfilestorage
とblobstorage
をplone5サイトの同じ場所に移動(cp -r
ではだめ。mv
が一番安全。tarで固めてって言ってもいいが,Solarisのtarでは抜け落ちるファイルがあるらしく,コンテンツの移行時にエラーが出る)<Plone 5 site>/buildout-cache/eggs/plone.app.linkintegrity-3.1-py2.7.egg/plone/app/linkintegrity/vupgrades.py
を修正(linkintegrityのバージョン名部分はちょっと違うかも)upgrades.pyo
とupgrades.pyc
は削除。Plone5用にコンテンツ更新がすんだら,Dexterityの形式に変換するか聞かれる。 幾つかのフォルダでエラーが出てとまった。
var/{filestorage,blolstorage}
のPlone 5.0への移動を繰り返す。Ploneのdebug機能で悪さをするコンテンツの洗い出しも可能。 記憶があいまいだが,多分以下の方法だったと思う。
$ sudo bin/instance debug
このあと,以下のコマンドを実行。
from Products.CMFCore.utils import getToolByName
site = app[‘Plone’]
zcatalog = getToolByName(site, 'portal_catalog')
cnt=0
brains = zcatalog.unrestrictedSearchResults()
for brain in brains:
obj = brain._unrestrictedGetObject()
cnt +=1
問題の有るオブジェクトがあったら,エラーメッセージを確認して以下を実行すると,そのオブジェクトのパスがわかる。
brains[cnt].getPath()
関連情報URL