はじめに
すでにお気づきの方もいらっしゃるかもしれませんが,5月下旬に待望のMODx-2.1.0がリリースされ,6月8日にはバグフィクスを中心としたMODx-2.1.1がさっそくリリースされています。詳しいリリースノートについては本家サイトから辿っていただくとして,大きな変更としては以下のような点が挙げられます。
- MS SQL Serverがサポートされた(と言っても多くのMODxユーザには関係ないかもしれませんが)
- キャッシングシステムの向上でパフォーマンスアップ
- コードの単純化。これによりさまざまなレガシーの関数などが削除されたため,場合によってはこれまでのスニペットが動作しない場合もあります
- フレンドリURL使用時のURLを柔軟に設定できるようになった
個人的にはフレンドリURL関連が気になるところですが,レガシーの関数がいくつか削除されてしまった関係で,なかみつ園でこれまで使用していたいくつかの自作スニペットがそのままでは動作しないことがわかりましたので,こちらのアップグレードはもうしばらく先になりそうです。
MODx-2.1.x-plのダウンロードとアップグレード
今回は新しいバージョンがリリースされたことを記念して,今後何度も対応するであろうMODxのアップグレード方法について紹介していきたいと思います。なお,本記事が掲載された後には,おそらくMODx-2.1.2や2.1.3など,細かいマイナーバージョンアップ版がリリースされるでしょうから,今回はそれらを網羅すべく,バージョン2.1.1ではなく,2.1.xという表記で解説を行っていきます。
MODxアーカイブの中には新規インストール時と同様,アップグレードのためのインストーラが用意されているため,「基本的には」アップグレードは容易です。
しかし,今回のバージョンアップでも見られるように,一部の関数が削られてしまったことで,既存スニペットの一部に影響がでる可能性がありますし,特定のバージョンをアップグレードする場合にもいくつかの注意点がありますので油断は禁物です。
そのため,どのような場合でも,万が一に備え,アップグレードの前には必ずバックアップを作成しておくようにしましょう。例のごとく,ファイルシステムとMySQLデータベースのバックアップを次のようにして作成しておきます。リストアする場合にはmysqlコマンドを使用しますが,詳しくは「mysqldump リストア」などで検索するようにしてください。
MODxのバックアップ
# cp -a /var/www/html /var/www/html.2011060101
# mysqldump -u root modx > modx.2011060101.sql
もし,MySQLサーバを停止可能であれば,MySQLデータベースのディレクトリごとバックアップしておけば,より安心できるかもしれません。(/var/lib/mysqlディレクトリのサイズによります)
MySQLデータベースをファイルレベルでバックアップ
# /etc/init.d/mysqld stop
# cp -a /var/lib/mysql /var/lib/mysql.2011060101
# /etc/init.d/mysqld start
ではアップグレード作業に移りましょう。MODxのインストール場所はサーバ環境によって多様でしょうが,本連載では/var/www/html以下に直接ファイルを展開してきましたので,今回もそれに従うことにします。
まずは,最新アーカイブの入手です。例のごとくMODX Japanより,modx-2.1.x-pl-ja.zipを入手し,/tmpにコピーしておき,ファイル展開後に,既存のファイルやディレクトリを上書きしていきます。
ファイル,ディレクトリの上書き
# cd /tmp
# unzip modx-2.1.x-pl-ja.zip
# cp -r modx-2.1.x-pl-ja/* /var/www/html/
次にブラウザ経由でアップグレードのためのインストーラを立ち上げます。下記スクリーンショットのように,アップグレードの途中で,「既存サイトのアップデート」にチェックが付いていることを確認してください。
ブラウザでhttp://www.example.com/setup/を表示
![ブラウザでhttp://www.example.com/setup/を表示 ブラウザでhttp://www.example.com/setup/を表示]()
あとは画面に沿って進み,セットアップユーティリティを終了させます。もし/var/www/html/setupディレクトリが自動的に削除されなかった場合は手動で削除するようにしてください。
管理画面のURLを変更していた場合の注意点
一般的なアップグレード手順はこれまでの方法で良いのですが,本連載では管理画面のセキュリティを向上させるため,デフォルトであるhttp://www.example.com/manager/というアドレスをhttp://www.example.com/adm/に変更していましたので,最後に次のようにしてつじつまを合わせておきます。
managerディレクトリの中身をadmディレクトリにコピー
# cd /var/www/html
# cp -r manager/* adm/
# rm -rf manager
最後に,従来の管理画面からログインし,画面左上に「2.1.x-pl」というバージョンが表示されていれば完了です。
パッケージのアップグレード
本体をアップグレードした場合には,それに伴って関連するパッケージのバージョンアップが必要になる場合があります。「システム」→「パッケージマネージャー」に進み,アップグレード可能なパッケージが見つかった場合には,こちらも合わせて更新を行っておきましょう。パッケージの仕様変更などに備えて,事前の動作確認も忘れないでくださいね。
フレンドリURLの動作確認
新機能の目玉のひとつとして,「フレンドリURLの拡張」というものがありました。これまでであれば,
- トップ
- 商品紹介(alias = products)
- お茶(alias = tea)
- 松の露(alias = matsunotsuyu)
という階層構造のリソースを作成した場合,フレンドリURLを有効にした際のURLは
- http://www.example.com/products/tea/matsunotsuyu.html
のような形になっていましたが,今回からはその情報を上書きすることができるようになります。たとえば,キャンペーンの一環で,松の露のURLを一時的に
- http://www.example.com/special.html
とし,後々元のURLに戻すことを考えます。このような構成にするためには,これまで同様従来の場所にリソースを作成した後,「ページ設定」タブ中にある「Freeze URI」という機能を有効にします。
ページの更新が終わったら,従来のURLである
- http://www.example.com/products/tea/matsunotsuyu.html
と,期待されるURL
- http://www.example.com/special.html
で表示の確認を行ってみてください。商用サイトではいろいろと応用できそうですね。
最後に
MODxは日々進化を遂げる優れたCMSのひとつですが,今回のバージョンアップでも見られたように,進化を遂げる一方,時として過去の互換性は失われていく場合があります。
文中でも紹介したように,アップグレード前後でのバックアップや検証作業が必要なのは言うまでもありませんが,なるべくスムースなアップグレードを行うためのひとつのTipsとして,「独自のスニペットを多用しすぎない」というのがあります。たとえば前回の記事で紹介した,「他リソースのテンプレート変数を表示する」という機能ですが,機能豊富なgetResourcesスニペットを使用せずとも比較的簡単に自作することができていました。
しかし,自作スニペットを多用する場合,本体バージョンアップの内容によっては予想以上のメンテナンスの手間がかかってしまいます。一方で,ダウンロードランキング上位に掲載されているスニペットなどは比較的メンテナンスも頻繁に行われているため,自作スニペットと比較すると「ドキュメントを探す,読む」という手間はかかりますが,比較的新しいバージョンに対応しやすい,というアドバンテージもあります。
結論として,「スニペットによって○○という機能を実現したい」ような場合には,まずは活発に開発が行われている既存スニペットの情報を検索してみて,どうしても見つからない場合,自作したほうがシンプルで高速な場合には自作を検討するようにしてみてください。