Hatena::ブログ(Diary)

EC-CUBEのカスタマイズならクロスキューブ!サイト制作メモ このページをアンテナに追加 RSSフィード Twitter

2016-12-08

EC-CUBE3のバージョンアップ

カスタマイズされたEC-CUBE3のバージョンアップをしてみた

f:id:xross-cube:20161208170108p:image

この記事EC-CUBE Advent Calendar 2016の8日目の記事です。
前日はnanasessさんの「1行のコマンドでローカル環境にEC-CUBEを最速でインストールする」です。明日はロックオン安達さんの「herokuボタンで簡単ec-cubeの全機能を試してみる」です。
こちらも併せて読んでみてください。

お久しぶりです。株式会社クロスキューブの佐々木です。なんと前回の記事から1年以上も間隔が開いてしまいました。
下書きばかりが増えている状況ですが、これからはもう少し頑張ります。

先日、EC-CUBE3の新バージョン、3.0.12がリリースされ、様々な細かい不具合パフォーマンスに関する修正がされました。*1

今回、コアをカスタマイズされた3.0.10からのバージョンアップをしてみましたので、その手順をご紹介します。ターミナルからコマンド打って諸々できれば楽なのですが、「黒い画面はちょっと敷居が高い」といった方にも大丈夫なやり方です。

まず手順と変更点を確認。

まずここを読みましょう。これ必須です。

http://ec-cube.github.io/quickstart_update

何はともあれバックアップ

これ基本ですが超大事。とにかくアップデート前の現状は必ずバックアップしておきましょう。
何も考えずにソースコード画像ファイルなどのファイル一式、データベースdumpデータを取ります。

どこがカスタマイズされたかEC-CUBE3のコアの差分を確認する

次に、バックアップしたコードから、コアのどこが改変されているかを確認しましょう。gitなどのバージョン管理システムをちゃんと使っているとコマンド一発で確認できます。

でも、「コマンド打って出てくるdiffフォーマットが見づらい〜」とか、「そもそもgitとか使ってないしわからない」という方はGUIのマージツールを使いましょう。

Windowsであれば日本語もOKな世界で一番使いやすいWinMergeを、Macな方であればDiffMergeがオススメです。

WinMerge
WinMerge
  DiffMerge
DiffMerge

この差分の確認は、必ず現状のサイトで利用しているバージョンのノーマルなカスタマイズ前のコード比較して確認してください。アップデート対象の新バージョンと比べても色々変わっててどこをカスタマイズしたかわかりません。

EC-CUBEの古いバージョンが見つからない!

しかし、EC-CUBE公式サイトからは古いバージョンのコードダウンロードできません。

今回のケースで言えば、カスタマイズ前の3.0.10と稼動しているサイトコード比較したいのに、EC-CUBE公式サイトからは、最新版の3.0.12しかダウンロードできません。
これは困ってしまいましたね。

でも大丈夫!以下のURLから各バージョンの主な変更点の確認と過去バージョンのコードダウンロードできます。
https://github.com/EC-CUBE/ec-cube/releases

ここから現在利用中のバージョンのコードダウンロードしてきて、差分を確認しましょう。

テンプレート等の差分を確認

コアの PHPコード以外に、twigのテンプレートの記述がバージョンにより変更されている場合があります。画像jsもですね。
このあたりもバージョンアップに伴いどう変更されたか、先ほどのURLで確認しておきましょう。

twigテンプレートは/appディレクトリにもある場合があるので、忘れずに確認しましょう。

EC-CUBE3対応!デザインカスタマイズガイドブック

新しくなったEC-CUBE3に対応したデザインカスタマイズブック。2017年1月現在 EC-CUBE3のデザインカスタマイズについて解説されている書籍はこれだけです。とりあえず買いましょう!

プラグインに要注意!一旦無効にしよう

使っているプラグインアップデート対象のバージョンに対応しているとは限りません。念のために全部一旦無効にしておきましょう。
あまりにも古いプラグインの場合、サーバファイルがあるだけで EC-CUBEエラーを起こして何にもできなくなる場合があります。そういったプラグインは一旦アンインストールしてファイルも決しておきましょう。

プラグインアップグレードはコアのアップグデート後です。

コアのコードをどーんと上書き

一通りカスタマイズ箇所の確認等が終わったら、src、venderの中身をドーンとサーバアップロードして上書きします。

カスタマイズしたappディレクトリ等にあるtwigテンプレートファイルの上書き等は後回しでOK。
とりあえずデータベースマイグレーションができる様にします。

vender、autoload.phpにご注意

src、venderなどをFTPソフトなどでアップロードすると、一部のファイルが正常にアップロードできない場合があるので、もしエラー等が発生したらもう一回アップロードし直しましょう。

できれば、サーバ上でcomporserコマンドで更新するのがベストです。

マイグレーション

必要なファイルアップロードしたら、マイグレーションを実行します。
この際、html/install.phpが必要なので、これもアップロードしておきましょう。

データベースマイグレーションとは、バージョンアップに伴い変更になったデータベース構造を変更するものです。

/install.php/migration にアクセスするとマイグレーション画面が表示されるので、マイグレーションを実行します。

実行したら念のため管理画面で各種キャッシュをクリアしておきましょう。

カスタマイズ箇所の反映

マイグレーションが終わったら、いよいよカスタマイズ箇所の反映です。
最初に確認した差分を変更していきましょう。先ほどのdiffツールがとても役に立ちます。git使えるともっと便利です。

ただ、バージョンアップによって利用できるメソッド変数名が変わっている事もあるので、バージョンアップで何がどう変わったかのか?を正確に把握しておく必要があります。
場合によっては施したカスタマイズを捨ててしまいましょう。

この作業はとても面倒くさいし、 結構コアな知識が必要とされる場合があります。こういった作業をしなくても済む様に、EC-CUBE3ではできるだけプラグインでカスタマイズしていくのをオススメします。

プラグインアップデート

プラグインアップデートも忘れずに行いましょう。 EC-CUBE3のコアの新バージョンがリリースされた直後だと、まだプラグインバージョンアップされていないことがありますが、オーナーズストアから入れたものは新しいバージョンが出たら管理画面からアップデートできる様になるので、必ずアップデートしましょう。

古いプラグインを使っていると、動作の不具合障害の原因になったり、セキュリティ問題が発生する場合があります。

最後に管理画面からもろもろキャッシュを削除しましょう。

まとめ

今回は環境の都合でターミナルでの作業が難しかったためにこういったやり方を行いました。あと、個人的にはdiffツールコードを追うときにわかりやすくで好きです。
どうしても自分の目でコードをちゃんと確認しないと安心できないので。

実際は、こういった作業ステージング環境等のテスト環境テストしてから本番に反映させるのですが、サーバによってはsshでのアクセスができなかったりと、どうしてもFTPなどでファイルアップロードしてバージョンアップ作業を行う場合があります。
その場合、データベースに入っている情報は最新のものを利用しないといけないので、ローカルアップデートして本番サーバDBの中身もアップロードして更新するよりも、本番サーバマイグレーションした方が早いケースが多いです。

また、コアがカスタマイズされているEC-CUBE3はやはりある程度プログラミング等の知識がある人間でないとなかなかバージョンアップするのは難しいと思います。できれば詳しい人にお願いしましょう。

EC-CUBE3のバージョンアップや、カスタマイズ等に関しては、公式サイトよりもEC-CUBE3開発ドキュメントの方が詳しく、情報量も多いので必ずこのサイトを確認する様にしましょう。

*1パフォーマンスに関する多くの修正は3.0.11で追加されました

YangsinYangsin 2016/12/09 12:41 ドキュメントサイトちょっとリニューアルして、URLかわっちゃいました。
http://ec-cube.github.io/update.html → http://ec-cube.github.io/quickstart_update となります。

xross-cubexross-cube 2016/12/09 14:18 お、ありがとうございます。修正しました!

xross-cubexross-cube 2016/12/09 14:18 お、ありがとうございます。修正しました!

投稿したコメントは管理者が承認するまで公開されません。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/xross-cube/20161208/p1
Connection: close