プログラマーのメモ書き

伊勢在住のプログラマーが気になることを気ままにメモったブログです

【Joomla!】 1.5.x -> 2.5 へのマイグレーション

本サイトでは、CMSとして、Joomla!を使っています。いままで使っていたバージョン(1.5.x)がメンテナンスされなくなったので、新しいバージョン(2.5.x)へ切り替えることにしました。しかし、2.5.xでは、Apacheが2.x系である必要があったため、既存のサーバー(1.3系)で動かくかどうか不安がありました(Joomla! 2.5 の動作条件はこちら)。

そこで、サーバーの契約切り替えまで待って、サーバーの切り替えとJoomla!のバージョンアップ(マイグレーション)を行いましたので、これら一連の作業について忘れないためにメモ書きを残しておきます。

 

準備

まずは、切り替え先のサーバーを用意します。今回もさくらインターネットのレンタルサーバーをお借りしました。さくらインターネットのサーバーは基本仕様のページにもありますが、貸与される共有サーバー次第でApache1.3系かApache2.2系かが決まります。

既存のサイトを動かしているサーバー(以下、旧サーバーとします)は、Apache1.3系だったのですが、新たに借りるとApache2.2系のものがレンタルできました。一応まとめておくとこんな感じですかね。

  • 旧サーバー:Apache1.3系(さくらインターネット)
  • 新サーバー:Apache2.2系(さくらインターネット)

もし、Apache1.3系のサーバーが当たった場合はどうするのがいいのか悩みますが、お試し期間であれば再度借りなおせばいいかとも思います。

 

本番サイトをコピー

1.5.xから2.5.xへのマイグレーションの手順はこちらに詳しく載っています。

で、これをいきなり稼働中のサーバーで試すわけにはいかないので、前述の新しく借りたサーバー(以後、新サーバーとします)へサイトのコピーを行い、これをマイグレーションして、問題なければ新サーバーを本番サーバーとして稼動させるために、ドメイン設定を切り替えようと思います。

 

というわけで、稼働中のサーバー(旧サーバー)上のJoomla!1.5をそのまま新サーバーへ移動させる必要があるのですが、これは簡単です。

  1. www以下にある、Joomla!が入っているディレクトリをすべて、新サーバーへコピーする
  2. 旧サーバーが使っているDBの内容をエクスポートする
  3. 新サーバーが使うDBホストにDBを作成して、2でエクスポートした内容をインポートする
  4. 新サーバーのconfiguration.phpを開き、DBホスト名、DB名、ユーザー名、パスワード、ログファイルのパス、tmpフォルダのパスを新サーバーに合わせて修正する
  5. ブラウザで表示して問題ないことを確認する(フロントエンド、バックエンド両方で確認してください)

これでマイグレーションに取り掛かる準備ができました。

 

なお、稼働中のサイトは、1.5.x系の最新版(作業時点で1.5.26)になっていました。もし、最新版でない場合はまず1.5.xの最新版にアップグレードする必要がありますので、ご注意ください。

 

Joomla!1.5→2.5への移行作業

移行そのものは、jUpgradeというプラグインを使えば、非常に簡単にできます。

ただ、jUpgradeは無料版を利用することができるのですが、ダウンロード時にユーザー登録が必要になります。ユーザー登録には、メールアドレス、氏名、住所、電話番号などが必要になります。なお、無料版を選択して登録した際には、クレジットカードなどの決済情報の入力は求められませんでした(今回作業した時点の話です)。

jUpgradeのプラグインをダウンロードできれば、これを新サーバー上のJoomla!1.5.xのエクステンション管理からインストールすればOKです。

 

あとは前述の手順のとおりです。簡単に書いておくと、

  1. 『エクステンション管理』→『プラグイン管理』を選択
  2. System - Mootools Upgrade を見つける
  3. このプラグインを有効にする
  4. 『コンポーネント』→『jUpgrade』を選択し、右上にある『Parameters』を選択
  5. 移行先が2.5になっていることを確認
  6. その他の設定はデフォルトのまま。もし、変更する場合はここで変更してください。
  7. 『Start Upgrade』を押します
  8. いろいろと画面に表示されますが、問題なければ、『Upgrade Finished』のような画面が現れます

基本的には、これで作業完了です。

 

移行後サイトのチェック

既存のJoomla!1.5のサイトが、www.mydomain.comで見れていた場合、www.mydomain.com/jupgrade にアクセスするとJoomla!2.5のサイトを見ることができます。もちろん、www.mydomain.com/jupgrade/administrator にアクセスすれば、この2.5用サイトの管理画面を呼び出し、実際に管理作業を行うことができます。

これを使い、移行後のサイトに問題がないかチェックします。が、まずは移行後のサイトをまともな状態にするため、次の作業が必要になると思います。

  • 2.5用の日本語ランゲージパックをインストール
  • 2.5へ対応したテンプレートを再度インストール
  • 利用していたエクステンションの2.5用をインストール

エクステンションは場合によっては2.5用のものがないかも知れません。その場合どうするかは別途考えておく必要があります。今回の場合は、とりあえず当該エクステンション無しでいきます。余力がでてくれば、対応策も考えたいと思います。

 

今回作業を行った際に、実は一番時間がとられたのが、2.5用のテンプレートのインストールと確認でした。

既存のJoomla!1.5用のテンプレートは、Artisteer(バージョン3.1)というソフトを使い作成していました。Joomla!2.5用のテンプレートを作る際に、Artisteerも4.1にバージョンアップしたのですが、2.5用テンプレートの影響かArtisteerのバージョンアップの影響か、微妙に今までの設定ではうまくいかない部分が出てきました。

まあ、大元のテンプレートの構成が変わっているので仕方ないのですが、これを調整するのに苦労した次第です。

 

あと、Joomla!1.5から2.5へ移行した際に以下の処置をしました。

  • Joomla!2.5では、セクションという概念が無くなり、すべてカテゴリという概念に統一されたのを受け、親子関係のあるカテゴリをどう表示するかを確認して調整
  • コンタクトを再設定し、表示スタイルを調整

これで、フロントエンド・バックエンドともに表示や操作に問題がないかを確認できるようになりました。もし、問題が起きていれば対応策を考えます。テンプレートの調整以外は大きな問題が無かったので、サイトの入れ替えに進みます。

 

新サーバー上のサイトの入れ替え

Joomla!2.5でのサイトの内容に問題が無ければ、既存のJoomla!1.5のコンテンツと2.5のコンテンツを入れ替えて、サーバーの切り替えに備えます。

入れ替えは簡単で、手順に詳しくあるように、wwwフォルダ配下にあるJoomla!1.5のコンテンツを別ディレクトリにコピーし、jupgradeフォルダ以下の内容を、wwwフォルダ配下に移動させるだけです。

また、手順にあるようにDBのクリーンも行っておきます。

 

サーバーの入れ替え

さて、ここまでくればあとは、サーバーを入れ替え(ドメイン名の再設定)だけです。

 

とはいってもバックアップの設定などがあるので、今回は下記のような作業も併せて行いました(詳細は省略します)。

  • さくらインターネットのコントロールパネルから、php.iniを追加編集(既存サーバーと同じ内容)
  • .htaccessおよび表示するエラーメッセージファイルを既存サーバーから新サーバーへコピー
  • dbバックアップスクリプトをコピーし、バックアップ先ディレクトリ構成の作成
  • さくらインターネットのコントロールパネルよりcron設定を追加(既存サーバーと同じ内容)
  • 旧サーバーの.ssh/authrized_keysを新サーバーへコピー(こちらの記事にあるように、EC2との間でバックアップを行うため)
  • authroized_keysに登録してあるrsyncコマンドを新サーバーの環境に併せて編集
  • 新サーバー上でメールアドレスを旧サーバーと同じもので作成(パスワードも一緒)

ここまでできれば、いよいよサーバーを移行します。

旧サーバーに設定しているドメインを削除して、2時間まって(さくらインターネットの制限)から、新サーバーにドメインを再度設定します。

これで、今までと同じhttp://www.mori-soft.com へアクセスするとJoomla!2.5 で移行したコンテンツが表示されます。

 

(おまけ)ドメイン移行時のトラブル

実は、ドメインを移行した際に、若干トラブルがありました。旧サーバーに設定してあるドメインを削除した際に、同じゾーン情報に追加したダイナミックDNSとEC2サーバー用の設定も消えてしまいました。

当たり前といえば当たり前なのですが、このためこれらのサーバーに一時的にアクセスできなくなり、ちょっとあせりました。再度、設定を追加して事なきを得ました、くわばらくわばら。