ECCUBE3系で複数バージョンのアップデートを行う方法

2018-05-14 2018-08-23

ECCUBEのバージョンアップの依頼を受けました。しかも、3.0.6から3.0.16への10段階バージョンアップ。

ECCUBEは一気にバージョンアップすることが出来ず、バージョンを一つづつ上げていくしかない非常にめんどくさい仕様の上、アップデートのトラブル率が高めの危険案件です。
しかも、「バージョンアップくらい簡単に出来るはずだ」という顧客の思い込みにより、いくらで見積もりを出しても「高すぎる」「こんなの無料で出来ないの?」と言われる率が高く、大した利益にもならないという意味で、2重で受けたくない案件です。

ということで断ったのですが、どこかで政治的な力が働いたらしく「いつ頃完了しますか?」とわけのわからないメールが来ていたので、泣く泣く対応することになりました。

折角なので、ECCUBEの複数バージョンアップについて、同じように泣く泣く作業することになってしまった人のために、メモを残しておきます。

旧バージョンのECCUBEを入手

ECCUBEのアップデートは、バージョン3.0.6から一気に3.0.16までアップデート出来るような作りにはなっておらず、「3.0.6から3.0.7、3.0.7から3.0.8」といったかんじで、バージョンを一つづつ上げていかなければならない仕様のため、旧バージョンのECCUBEが必要になります。

ということで
https://github.com/EC-CUBE/ec-cube/releases
から必要なバージョンのECCUBEを入手します。

今回は3.0.6から3.0.16だったため、10個のzipファイルを上記URLから入手。気が遠くなりますが、ここから10回のアップデート作業が始まります。

composer(ライブラリ依存管理ツール)のインストール

旧バージョンのECCUBEを入手して解凍すると、一つ気付くことがあると思います。

「あれ、vendorディレクトリがない」

旧バージョンのECCUBEは、あくまでもソースコードとして提供されているものです。ということで、ライブラリの類は自分でインストールする必要があります。
ECCUBEではcomposerがライブラリ管理に使われているため、composerで必要なライブラリを取得することになります。ということで、composerがインストールされていない人は、ここでcomposerをインストールしてください。

MACの人はbrewでインストール。簡単。
WINの人はhttps://getcomposer.org/download/にアクセスし、上の方に書いてある「Composer-Setup.exe」をクリックしてインストーラーをダウンロード。インストーラーを実行して、後は流れで。

インストールが終わったら、コンソール(コマンドプロンプト)でcomposer –versionって打って、バージョン情報が出てくればOK。

ライブラリ(vendor以下のファイル)を取得

composerをインストールしたら、そのcomposerを使ってライブラリをインストールします。

拾ってきた旧バージョンのECCUBEを解凍すると、その中にcomposer.json、composer.lockという名前のファイルがあるはずです。それらのファイルはcomposerで取得するライブラリの定義ファイルのようなものです。コンソール(コマンドプロンプト)でそのファイルが入っているディレクトリに移動し、composer installを叩くことで、必要なライブラリが全てインストールされ、vendorディレクトリに格納されます。

バージョンアップ実行

http://doc.ec-cube.net/quickstart_update

後は公式ドキュメント通りに作業するだけです。元が3.0.6の人は3.0.7を、元が3.0.10の人は3.0.11を手順通りにあてます。バージョンを飛ばすと大体エラーになるので、最初からやりなおしになります。

なお、バージョンアップ前には、必ずバックアップを取ってください。ECCUBEのファイル全てと、データベースのデータ全てです。結構な確率でおかしなことになるので、バックアップを取っておかないと復旧不能になります。ファイルの数が多く、そのままだとかなり時間がかかるため、SSHが利用できるサーバであれば、SSHで入って圧縮すると良いです。

この記事を書いたのは、「旧バージョンのECCUBEを落としたけど、vendorが入ってなくて詰んだ」みたいなことを聞く機会が多かったためです。公式ドキュメントには、composerの説明などは一切書かれていないので、そこで止まってしまう人が多いのでしょう。

ただ、ECCUBEのアップデートはトラブル発生率が高く、ECCUBE自体にも不安定な部分が少なからずあるため、自信がない人は詳しい人に依頼することをおすすめします。

注意点

余談ですが、自分で構築していないECCUBEのアップデートに関しては、表示が崩れることを前提としておいた方が無難です。新バージョンの仕様に合わせてview側にも変更が入っているため、バージョンアップ時に上書きされてしまうことが原因です。

HTML、CSS、jsをある程度理解しており、twigも何となくわかるくらいで無いと、元の表示が再現不能になるので注意してください。