Friday, May 23, 2014

Liferayアップグレードの流れと注意点

こんにちは。ドラゴンクエスト・ファイナルファンタジー両シリーズとも1作もプレイしたことのないおおたにです。

まあ子供のころにコンシューマ機を持っていなかったのが原因なんですが、例えばドラクエのレベルアップ音とかモンスターとか呪文とか、何となくは知っていますがあまりなじみがないため、エニックスとかスクウェアとかそういう話題には笑顔だけで対応するしかありません。

そんなこんなで最近は、子供にコンシューマ機を買い与えることについて考えています。 賛否両論ある話ですよね。実体験からすると経験の幅が広がる事が将来にわたってプラスに働くと思うのでそこは買い与えるつもりでいるのですが、やはりそれに執着してしまうことで逆に幅が狭まるだろうから、買い与えるタイミングをどう判断するか迷いどころです。

というわけで(どういうわけだ!)、今回はLiferayのアップグレード(バージョンアップ)の方法と気を付けるべき点について見ていきます。ターゲットとしているLiferayのバージョンは、6.0、6.1、6.2あたりです。

# ちなみに個人的には、レベルアップ音よりも宝箱開ける音、呪文じゃなくて半キャラずらしの肉弾戦の方がなじみがあります。というわけで、なかなか一般的な会話として出しにくいネタなわけですね。はい、ただ言いたいだけですすいません…。


Liferayアップグレードの大まかな流れ


まず、Liferayをアップグレードする際に必要なデータは以下の2つです。
  • データベース
  • ファイルシステム上のファイル(文書ライブラリ等で管理されるファイルのストア)

基本的にはこの2つを新しいバージョンのLiferayに食わせれば、あとは自動的にLiferayがアップグレードの処理を行ってくれます。では、もう少し具体的にLiferayアップグレードの流れを見てみましょう。

  1. 新バージョンのLiferayをインストールする(起動はしない)
  2. 旧Liferayを停止する
  3. 文書ライブラリストアを必要に応じて新Liferayにコピーする
    • ローカルファイルシステム上で管理していれば、<liferay_dir>/data/document_library を旧Liferayから新Liferayにコピーする
    • DBやNAS上で管理していれば、ファイルのコピーは必要ない(portal-ext.propertiesの確認・見直しは必要)
  4. 旧Liferayのportal-ext.propertiesを新Liferayにコピーし、設定の見直しを行う
    • バージョンの違いによる設定項目の追加/廃止などを反映する
    • DBの接続設定、文書ライブラリのストア設定(dl.store.impl)まわりを確認する
    • その他、アップグレード時のバージョンの違いを吸収するための設定を行う(後述)
  5. 新Liferayを起動する
    • catalina.outをtailし、アップグレード時に問題が発生しないか監視しておく
  6. 新Liferayに追加のプラグインやカスタムモジュールをデプロイする
  7. [データベースもアップグレードや移行が必要な場合] 他のDBにデータをエクスポートする
    • Control Panel -> Configuration -> Server Administration -> Data Migrationで他のDBにデータをexportする
    • その後portal-ext.propertiesのDB接続設定を変更してLiferayを再起動するだけで移行完了
  8. インデックスをリビルドする
    •  Control Panel -> Configuration -> Server Administration ->Resources -> Reindex all * indexes.
    • catalina.outをtailして進捗状況を監視しておく

以上が基本的な流れです。 DBのスキーマ変更などのアップグレード処理は新Liferay初回起動時に全て自動で行われます。


注意点(主にportal-ext.propertiesの設定について)


Liferayに限りませんが、ソフトウェアはバージョンを重ねるにつれて新しい機能が実装されたり、既存機能の仕様が変更されたりします。そのため、Liferayをアップグレードする際にはそのバージョンに応じて適切な設定を行っておく必要があります。

例えば、Liferay 6.1からLiferay 6.2にアップグレードする際には、以下の設定をportal-ext.propertiesに追記する必要があります。
passwords.encryption.algorithm.legacy=SHA

これは、デフォルトのパスワード暗号化アルゴリズムが6.1と6.2で異なるためで、この設定を追加しないとアップグレード後、ユーザログインで失敗するようになってしまいます。

また、6.1系のアップグレードプロセスにはアップグレード後にコントロールパネルにアクセス出来なくなるという既知の問題があるため、以下の設定をportal-ext.propertiesに追記する必要があります(アップグレード時だけ設定し、アップグレードが完了したら削除しましょう)。
verify.frequency=-1

その他、必要な設定についてはLiferayのユーザガイドに詳細が書かれています。


まとめ


簡単に紹介させていただきましたが、Liferayアップグレードが簡単に実施できることをお分かり頂けましたでしょうか。もちろん、カスタムポートレットやテーマ、プラグインを利用している場合は、それらがアップグレード後も使えるか確認して必要に応じて修正する必要があります。しかし、Liferayはそれらのカスタムモジュールをコアと比較的疎結合な形で実装することができるので、それなりに現実的なものとしてアップグレードを検討できると思います。

今回紹介した内容はLiferayのユーザガイドにも記載されているので、詳しい情報が必要な方はこちらも見てみてください。

No comments: