Magentoは2012年まで半年に1回程度のアップデートをしてきました。
2013年現在、Community Editionは2012年7月に公開された1.7.0.2が最新となっており、1.8のリリース時期は未定のままです。
これに対し、Enterprise Editionは2013年4月に1.13が公開されています。
Magentoは致命的なバグがない限りは頻繁にアップデートする必要の少ないシステムではありますが、新しい機能の導入や、対応するエクステンションの世代交代などもあって、バージョンアップは避けて通れないものになっています。 

このエントリではどのようにMagentoのバージョンアップを行うかを解説したいと思います。

知っておいてほしいこと

テスト環境は必要

Magentoに限らず、あらゆるシステムを新しいバージョンに変更するときは、テスト環境を作成し、事前に問題がないかを検証することが必要です。
なぜなら、作業する前の環境では正しく動いていたプログラムが、新しいバージョンになった途端動作しなくなるということはよくあることだからです。

ですから、いきなり稼働環境でアップデートを行うのではなく、きちんとテストする環境を作成して、事前に検証をすることが必要なのです。

PHPのバージョンについて

Magentoが使用している、Zend Frameworkの仕様変更にともなって、最新のMagentoではPHP 5.2.13以上が推奨されています。
もし、それ以下のバージョンのPHPを使用している場合は、PHPのバージョンアップも同時に必要になります。
また、このタイミングでサーバを新しくしたり、乗り換えたりした場合に、PHP5.3/5.4の環境へ移行せざるを得ないことがあります。
エクステンションの中にはPHP5.3以降で利用できなくなった機能を使用しているものがあります。
この場合、エラーが起きてしまい、サイトがダウンしますので注意してください。 

作業を始める前にプログラム一式とデータベースのバックアップを取る

もし万一作業に失敗したら?たぶんサイトはダウンするでしょう。
対応が終わるまで売上は上がらなくなりますし、焦ってしまってミスが増えるかもしれません。

そんな時、バックアップがとってあれば、作業開始前に戻すことができます。
作業を始める前に必ずバックアップは取ってください。
バックアップを取る対象は以下の2つです。

  • ドキュメントルート下にある、Magentoのプログラム一式(画像も含む)
  • Magentoが使用しているデータベース 

バージョンアップのためのテスト環境の作成

バージョンアップのテストを行うための環境を用意します。
予算がないのであれば、本番環境が動いているサーバの上でも構いませんが、アップデート前のバージョンと、アップデート後のバージョンが離れている場合は、データベースの定義に大きな変更が加えられることがあります。
このような場合、システムに大きな負荷がかかることがあり、同じサーバ上で作業をしてしまうと、本番環境に悪影響をおよぼすことがあります。

できれば仮想環境や別サーバを用意するなどして、隔離した環境を用意するのが良いでしょう。

ソースコードのバックアップ

まず、ソースコードのバックアップをとります。
Magentoがインストールされているディレクトリ以下の var ディレクトリ以外の全てのファイルをバックアップしてください。( var ディレクトリは一時ファイルなどの保管場所なので、なくても支障はありません)
画像の多いサイトではバックアップのファイルサイズが非常に大きくなり、ダウンロードに時間がかかることがあります。
気長に待ってください。 

データベースのバックアップ

ソースコードのバックアップと並行して作業しても構いませんが、データベースのバックアップを取得します。
このバックアップはあくまでバージョンアップのテスト用なので、いつとっても構いません。 

テスト環境の作成

では、テスト環境を作成します。
予め用意しておいたサーバに、バックアップしたソースコード一式とデータベースをアップロードして、復元します。
この時、以下の点に注意してください。

  • app/etc/local.xml のデータベース接続情報は揃えておいたほうが楽
  • データベースの core_config_data テーブルにある、path 列の値が「web/unsecure/base_url」と「web/secure/base_url」をテスト環境のドメイン名・IPアドレスなどに合わせて書き換える

なぜデータベース接続情報を揃えておいたほうが楽かというと、間違ってテスト環境の app/etc/local.xml を本番環境にアップしてしまうと、サイトがダウンするからです。テストと本番の接続情報が同じであれば、間違ってアップロードしてもトラブルになることはありません。(もちろん、気をつけていればいい話ではありますが)

2番めはなぜかというと、MagentoのURLはこの2つのデータを基準に決められているからです。
もし、テスト環境にデータベースを復元しても、この2つのデータが本番環境のままであれば、ブラウザでアクセスしても本番環境にアクセスしてしまいます。
ですから、テスト環境を作成する際は、かならずこの2つのデータを変更する必要があるのです。

と、事前準備はここまでです。
次回は実際の作業の流れについて説明します。