MODxのアップデート

バックアップ

データディレクトリをバックアップ

# cp -a /usr/local/www/html /usr/local/www/html20130707
or
# tar -czpf /usr/local/www/html20130707.tar.gz /usr/local/www/html/

DBのバックアップ

# mysqldump -u root -p modx > modx20130707.SQL

Update

最新版をダウンロードしておく
解凍して、上書き

# cd /tmp
# unzip modx-2.x.x-pl-ja.zip
# chown -R www:www modx-2.x.x-pl-ja/
# cp -r modx-2.x.x-pl-ja/* /usr/local/www/html/

管理画面 => 権限管理 => 全セッションを初期化 で全ユーザをログアウトさせる。
当該、サイトのsetup1) みたいな感じ→ www.example.com/setup/ にアクセスしてセットアップを行う。

マイナーバージョンの変更時にDB変更が入るケースが多いので以下のようにマイナーバージョンごとにUpdateする方が安全。

2.2.x -> 2.3.0 -> 2.4.0 -> 2.5.0 -> 2.6.0

確認

サイトにアクセスして確認を行う。
普通のサイトだと、管理画面のほうが不具合が出やすいので2) それもどーよとは… 、そっちを確認したほうが早いかもしれない。
キャッシュが腐るケースも多いので、apacheをrestartしたほうが吉かもしれない。
ajaxを多用しているため、ブラウザ側でもきちんとリロードしないとよく画面が腐る。

Update時のエラー

Linkがおかしくなる

古めのMODxからアップデートしたとき、LINKが動作しなくなっていることがある。

本来以下のように変換されるはずのものが

[[~15]]
↓
www.example.com/alias.html

こんな風に変換されなくなっている

[[~15]]
↓
www.example.com

キャッシュをクリアすると以下のようなエラーが出るはず

Resource URI already exists for resource id = 2; skipping duplicate resource URI for resource id = 28
Resource URI already exists for resource id = 2; skipping duplicate resource URI for resource id = 3
Resource URI already exists for resource id = 2; skipping duplicate resource URI for resource id = 6

これは、AliasをDB上のフィールドから読むように変更された際に、Update時にNULLのままとなっているため生じる。

システム設定のフレンドリーURLをいったん解除してから、再設定すれば治るはず。

snippetが動作しない

coreの下にcacheディレクトリがあるので、これをcache_bakにでもrenameして新しいcacheディレクトリを作成する 再起動。3) 新しいcacheはmodxに作らせた方がうまくいく

これでもダメで以下のようなエラーがLOGに上がる場合

Error caching script elements/modplugin/

cacheディレクトリを削除or前述のように新しくする

setupディレクトリを再度コピーする

setupを再度行う

これで、大丈夫だと思う

参考

Bug#4265:Incorrect warnings of duplicate URIs when clearing cache after upgrade