【DIYでネットショップ構築 EC-CUBE編】EC-CUBE3のバージョンアップ手順

EC-CUBE
スポンサーリンク

EC-CUBEは無償で使える便利なツールですが、定期的に更新されるツールを自身で構築したサイトに適用する必要があります。
最近のソフトウエアはボタン一つで自動的にバージョンアップされるものがほとんどですが、機能が複雑でカスタマイズが自由にできるEC-CUBEでは残念ながら手動でバージョンアップを行う必要があります。

今回は、このバージョンアップ手順の例をご紹介したいと思います。
なお、バージョンアップに関しては、本家サイトにも記載されていますのでご確認ください。
本作業は非常に面倒な上に間違えるとショップがうまく機能しなくなるというリスクが伴うことから神経を使う作業です。
事前にバックアップを取得することはもちろん、細心の注意を払って行うようにしてください。

 

スポンサーリンク

バックアップの取得

バージョンアップは、基本的にすべてのファイルを新しいバージョンのファイルで上書きするという作業が発生します。
また、データベース内の変更が発生する場合もあります。
バージョンアップがうまくいかないなどの不測の事態に備えて現行のファイルおよびデータベースのバックアップを取得しておきましょう。

ファイルのバックアップ

ファイルのバックアップは、FFFTPツールなどを使って、EC-CUBEをインストールしているフォルダにあるファイルをすべて自身のPCなどにコピーしましょう。
このコピーは、一般的に数時間かかりますので、作業前日などにしておくとよいでしょう。

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

データベースのバックアップは、利用しているレンタルサーバーの機能にデータベース(MySQL)のバックアップ機能がある場合が多いので確認してみてください。
ちなみに、エックスサーバーでは、「サーバーパネル」にある「MySQLバックアップ」を使います。画面中央やや下の「データベース」セクション内にある「MySQLバックアップ」をクリックします。

「MySQLバックアップ」画面が表示されますので、EC-CUBEで使っているデータベースが表示されている行の右側にある「エクスポート実行」ボタンをクリックしてください。
※エックスサーバーの簡単インストールでEC-CUBEをインストールした場合、特に変更していなければxxxxx_ec1という名前になっているのがEC-CUBEが使っているデータベースです。
※圧縮形式に関しては、EC-CUBEが使うデータベース容量は大したサイズではありませんので、初期値である「圧縮しない」のままで行っていますが、サイズが大きくなりすぎてダウンロードに時間が掛かって困る場合などは、「gz形式」を選択すると良いでしょう。

「エクスポート実行」ボタンをクリックすると以下の画面に切り替わります。
自動的にエクスポートファイルがダウンロードされます。
※数分待っても自動的にエクスポートファイルのダウンロードが開始されない場合は、画面上に配置されている「ダウンロード」するボタンをクリックして手動でダウンロードしてください。

以上でデータベースのバックアップは完了です。

 

EC-CUBEのパッケージを取得

EC-CUBEのバージョンアップは、基本的に新しいパッケージファイルで既存のファイルを上書きします。
公式サイトから最新版のパッケージを取得しましょう。

最新パッケージの取得

最新パッケージを公式サイトからダウンロードします。
パッケージのダウンロードには、メンバーサイトへの会員登録が必要です。
事前に会員になっている場合がほとんどだと思いますが、もし会員登録していない場合には会員登録をしてください。

過去バージョンパッケージの取得

バージョンアップに伴う差分を確認するため現在使用しているシステムのバージョンを取得しておきましょう。
過去バージョンは以下URLを直接入力すると取得できます。
http://downloads.ec-cube.net/src/eccube-3.0.15.zip
※斜体太字部分のバージョン番号は、取得したいバージョンに合せて変更してください。

githubはこちら。
https://github.com/EC-CUBE/ec-cube/releases

 

現行バージョンと最新バージョンの差分を確認

最新バージョンで変更されたファイルを確認するため、カスタマイズ前の現行バージョンと最新バージョンのパッケージの差分を確認します。
今回は、DF.exeというフリーソフトを使って差分を確認します。
バージョンアップは、変更されたファイル以外に変更されていないファイルを基本全部上書きで行うのに、なぜ差分をいちいち確認する必要があるのでしょうか。
正直、カスタマイズを一切行っていないなら差分を確認する必要はないかもしれません。
差分確認が必須なのは、カスタマイズを行っている場合です。
標準の手順でバージョンアップしてしまうと、カスタマイズしたファイルも上書きされてカスタマイズが施されていない元のファイルに戻ってしまいますので、カスタマイズしたファイルが変更されている場合には、その変更部分を手動で既存のファイルに書き加える必要がありますし、変更がされていない場合には上書きしないようにする必要があるからです。
それでは実際にDF.exeを使って、現行バージョンver3.0.15から最新バージョンver3.0.16での変更点を確認してみましょう。
それぞれのパッケージをフォルダ毎比較すると以下のような画面になります。

左(Ver.3.0.15)、右(Ver.3.0.16)

ここでは、DF.exeの使い方に関しては割愛させていただきますが、色のついている部分が違いがある部分です。
フォルダに色がついている場合には、そのフォルダ下のファイルのどれかに差異があることを示しています。
該当フォルダをダブルクリックすると下の階層に移動しますので、ファイルになるまでどんどん潜っていってください。
ファイルまで辿り着いた状態でファイル名をクリックするとファイルの中身が比較されます。

これで変更箇所が確認できます。
地道な作業ですが、不足の自体に備えて一つ一つ確認しておくことをおススメします。

 

バージョンアップ作業

バックアップと差分確認が終わったらいよいよバージョンアップ作業に入ります。
作業を開始するとショップサイトは正常に表示されなくなります。
事前にサイトに告知するなどしてお知らせしておくとともにできるだけアクセスの少ない時間帯を見計らって行うようにしましょう。

共通ファイル(src、html、vendor)を上書き

最新パッケージのsrc、html、vendorフォルダをレンタルサーバー上に構築している現行バージョンのEC-CUBEがインストールされているフォルダに上書きします。
なお、あらかじめカスタマイズしたファイルに今回のバージョンアップで変更が加わっていない場合には、最新パッケージから該当のカスタマイズファイルを削除しておくと、上書きされないので便利です。
今回のサイトでは、src/Eccube/ControllerProvider/FrontControllerProvider.phpをカスタマイズしていますが、今回のバージョンアップではこのファイルに改変が加わっていない為、上書きする最新パッケージの該当ファイルをあらかじめ削除したうえで上書き処理を行います。
なお、ファイルの上書き処理はFFFTPというフリーソフトを使って行います。

FFFTPでフォルダ毎ドラッグ&ドロップでコピーを行うと「ホストに同じ名前のファイルがあります」というアップロードの確認画面が表示されます。
上書きすることが分かっているので「上書き」のラジオボタンを選択した状態で、「以降すべて(A)」のボタンをクリックしてください。

なお、この上書き処理は回線速度にもよりますが、今回はおよそ60分程かかりました。

個別ファイルの上書き

個別ファイルは、公式サイトの手順「3. 個別ファイル差し替え」記載されています。
今回は「3.0.15 → 3.0.16」へのバージョンアップですから、以下の2ファイルが対象になります。

composer.json
composer.lock

これらもFFFTPツールを使って上書きバージョンアップすればOKです。

URLからhtmlを削除する対応をしている場合の対処

EC-CUBE3.0.xのバージョンでは標準でインストールするとショップのURLが、http://ドメイン名/htmlというように、最後にhtmlがついています。
なんか違和感ありますよね。
このhtmlを削除する方法に関して要望が多かったのか、EC-CUBEの公式サイトからもこのhtmlの削除方法が案内されたため多くの人がこの対応をしているかもしれません。
エックスサーバーを使っているユーザーに対しては、エックスサーバーが早い段階でこのhtmlを削除する方法を案内していたりしていたので、そちらの対応をしているユーザーも多いかもしれません。
いずれにしても、この特殊対応をしている場合、バージョンアップにより特殊対応したファイルが上書きされてしまっている可能性があるので確認が必要です。
ここでは、EC-CUBEの公式サイトがアナウンスしている方法を確認して、そのファイルが今回のバージョンアップが改変が加わっているかどうかの確認作業を行います。

公式サイトのhtml削除方法の確認

公式サイトのhtml削除方法を簡単におさらいします。
詳細を確認したい場合は、公式サイトをご確認ください。

1.html直下の6つのファイルをルートディレクトリ(htmlの一つ上のディレクトリ)へ移動し、さらにその内の.htaccessとweb.configを削除する。

変更前 変更後
[root]
├──
│ ├── index.php
│ ├── index_dev.php
│ ├── install.php
│ ├── robots.txt
│ ├── .htaccess
│ └── web.config
[root]
├──

├── index.php
├── index_dev.php
├── install.php
├── robots.txt
├── .htaccess(削除)
├── web.config(削除)

 

2.もともとルートディレクトリにあった以下2つのファイルをリネームする。

変更前 変更後
.htaccess.sample
web.config.sample
.htaccess
web.config

 

3.index.php / index_dev.php / install.php の一部を修正する。

変更前 変更後
require __DIR__.'/../autoload.php';
//require __DIR__.'/autoload.php';
//require __DIR__.'/../autoload.php';
require __DIR__.'/autoload.php';

※index.dev.phpの場合は以下も修正

変更前 変更後
// Silex Web Profiler
$app->register(new \Silex\Provider\WebProfilerServiceProvider(), array(
'profiler.cache_dir' => __DIR__.'/../app/cache/profiler',
'profiler.mount_prefix' => '/_profiler',
));
// Silex Web Profiler
$app->register(new \Silex\Provider\WebProfilerServiceProvider(), array(
'profiler.cache_dir' => __DIR__.'/app/cache/profiler',
'profiler.mount_prefix' => '/_profiler',
));

 

4.autoload.php の一部を変更する。

変更前 変更後
define("RELATIVE_PUBLIC_DIR_PATH", '');
//define("RELATIVE_PUBLIC_DIR_PATH", '/html');
//define("RELATIVE_PUBLIC_DIR_PATH", '');
define("RELATIVE_PUBLIC_DIR_PATH", '/html');

 

5..htaccessの追加配置をする。

以下のように記載した .htaccess ファイルを作成する。

order allow,deny
deny from all

この作成したファイルを以下のフォルダにコピーします。

[root]

├──[src]
│ ├── .htaccess
├──[tests]
│ ├── .htaccess
├──[vendor]
├── .htaccess

以上が、公式サイトの手順の概要です。

それではこの手順をもとに修正されたファイルが今回のバージョンアップで変更されるかどうかを確認しましょう。

html削除対応のファイルがバージョンアップ対象か確認する

先の現行バージョンと新バージョンのファイル比較において、htmlフォルダに関しては差異がありませんでした。
つまり、html下のファイルは、今回のバージョンアップでは関係がないことになります。
但し、この後のデータベースのマイグレーション処理で使われるinstall.phpが、前回のバージョンアップ後にルートディレクトリから削除されてしまっているはずなので、このファイルだけ、先の「公式サイトのhtml削除方法の確認」で示された以下のカスタマイズを行った上で、ルートディレクトリに移動する必要があります。

変更前 変更後
require __DIR__.'/../autoload.php';
//require __DIR__.'/autoload.php';
//require __DIR__.'/../autoload.php';
require __DIR__.'/autoload.php';

install.phpのみルートディレクトリに移動したらhtml下に残っている残りの5つのファイルindex.php、index_dev.php、robots.txt、.htaccess、web.config)は、今回のバージョンアップでは変更する必要がないため削除してください。

続いて、autoload.phpですが、こちらはそもそもバージョンアップで上書きされる対象のファイルではありませんので何もする必要はありません。

最後に、src、tests、vendor下に配置した.htaccessですが、こちらも後から追加したファイルでもともとのパッケージには存在しないものですから、バージョンアップの上書き処理で上書きされることがないため、こちらも特に何もする必要がありません。

 

データベースのマイグレーション

以下のURLにアクセスしてデータベースのマイグレーション処理を行います。
https://ドメイン名/install.php/migration

上記URLにアクセスするとマイグレーション画面が表示されます。
「次へ進む」ボタンをクリックしてください。

インストール済プラグインの確認画面が表示されます。
各プラグインの右側に表示されている「詳細」という文字をクリックすると該当プラグインの詳細画面が表示されます。

プラグインの詳細画面にて今回適用しようとしているバージョン(3.0.16)が対応バージョンに表示されていることを確認してください。
もし、ここに該当バージョンが表示されていない場合には正しく動作しなくなりますのでご注意ください。

プラグインの確認が済んだら、プラグインの画面は閉じて「インストール済プラグインの確認」画面に表示されている「次へ進む」 ボタンをクリックしてください。
マイグレーション処理が実行され、完了すると以下の画面が表示されます。
通常、数秒でこの処理は完了します。

 

テンプレートファイルの更新

公式サイトの手順「5. テンプレートファイルの更新」において、バージョンアップでテンプレートファイルの更新作業が必要な場合には、その対応方法が記載されています。
対応方法も公式サイトに個別に記載があるので詳細は割愛しますが、EC-CUBE管理画面の「コンテンツ管理」から、該当するページ/ブロックを編集するということが主な内容です。

今回のバージョンアップ(3.0.15→3.0.16)では、テンプレートファイルの更新の必要はないので特に何もしません。

 

不要ファイルの削除

アップデート完了後、以下のファイルを削除してください。

html/install.php
html/index_dev.php (開発用途で使用する場合は残す)

以上でバージョンアップ処理は完了です。

コメント

タイトルとURLをコピーしました