こんにちは。楽して働きたいと言いつつ、手間のかかる方法を率先して選んでいるように見える人です。
さて、今回はEC-Cube 2.13.5をインストールしてみたいと思います。
とはいえ、
- 2.1.3系はPHP7系に対応していない
- 世の中はPHP7系に移行している
- WordPressはPHP7.3以降を推奨している
- ec-cubeの最新バージョンは4系に以降している
という理由により、いくら長く使われている安定版とはいえ、今更2.13.5の導入はかなりリスクがあります。しかしながら
- 2.1.7系によりPHP7系に対応が明言されている
- WordPressとの密な連携方法がネットに公開されているのが2.1系
という理由により、導入してみたいと思います(2.1.7はいつまでアルファなんだろう……)。
EC-CUBEって?
国産のオープンソースのeCommerceのカートシステムです。
国産なので国内シェアが大きく、そのお陰でドキュメントやプラグイン(こちらは有償のものが多いですが…)が豊富なところが利点です。
2019年現在、4系が最新ですがテンプレートの豊富さ、プラグインの豊富さ、それから開発が完了していて安定しているということで2系、3系についてもまだまだ現役と言えるのが特徴です。
とはいえ、先述した通りPHPのバージョンが7系が主流となりつつあり、2系については厳しいというのが実情です。特にWordpressについては既にPHP7系を推奨としており、ぎりぎりPHP 5.6で併用可能とはいえ、2.17系のアルファが取れたら速やかに以降したいところだと思います。
https://www.ec-cube.net/download/other.php
EC-CUBEのダウンロードにはユーザー登録が必要です。未登録の方は、ユーザー登録ページより、先にユーザー登録をしてから上記ページにアクセスしてダウンロードしてください。
なんのために行うの?
EC-CUBE単体でもECサイトを構築することはでき、また特に連携をしなくてもWordpressをインストールすることで固定ページ機能でのランディングページの作成(そこからの商品ページへの誘導)やblogでのSEOなどは可能です。
ただ、デザイン会社に外注に出したり、自分でデザインを制作、テンプレートの作成を行うのでなければどうしてもECサイトとblog部分のデザインにズレが生じます。
また、EC-CUBEが優れたカートシステムであるといっても、商品を詳細にプレゼンしたい場合……たとえば、クラウドファンディングのプロジェクト紹介のようなページを作りたいと思ったときにはEC-CUBEで行うよりもWordpressの豊富なplug-inや編集機能を活用した方が運用上では楽だと思います。
そこで、商品管理はEC-CUBEで行い、商品とは別に、商品をプレゼンテーションするページをWordpressで作成する……というアプローチが浮上してきます。特に、ロングテールなどという言葉が持てはやされたのも今は昔、ECでは如何に商品、そしてブランドのストーリーや購買によるエクスペリエンス(体験)のプレゼンテーションが重視されるようになったので、試してみることにしました。
もうひとつ、EC-CUBEのデザインをWordpressに寄せることで、有料のテンプレートを使用する場合、費用を安く抑える効果も見込めます。EC-CUBEとWordpressの有料テンプレートを比較した場合、ページ数などの問題や単純に需要の関係もあるのでしょうが、Wordpressの方が安価な傾向にあるように見えます。であれば、EC-CUBEをWordpressに寄せることで費用対効果を最大化することもできるでしょう(もちろん、完全にゼロから制作する場合でもひとつのテンプレートで済むに越したことはありません)。
インストール
- PHPのバージョンの設定
筆者の使用しているCoreServerやXserverでは、ドメインごとにPHPのバージョンを設定することが可能です。WordpressやEC-CUBEをインストールする前に、かならずPHPのバージョンを5.6系に変更しておきます。現在のところ、WordpressとEC-CUBE2.13.5を共存させられる方法としては、一番安定している方法になります(ただしセキュリティ上非推奨となります)。
- データベースを作成します。
データベースの作成は、レンタルサーバーなどにもよるので割愛します(ローカルの場合はSQLを叩いてください)。文字コードを「EUC-JP」として、データベース名、ユーザー名、パスワードを控えておきます(xserverなどでは、ユーザーとデータベースを別に作成でき、かつアクセス権限の設定が必要となるので気をつけてください)。
詳細については、各レンタルサーバーのマニュアルを参照してください。
また、筆者がインストールした際、データベースの文字コードがUTF-8の場合、インストール後にパスワードが違うと表示されてログインできない現象が発生しました。原因が文字コードであると断定できるほど詳しく調査していませんが、念のため、UTF-8は避けた方がいいでしょう。
元々、セキュリティ上EC-CUBEとWordpressのデータベースは分けるべきですが、この文字コードの問題もあり、データベースは分ける必要があります(WordpressのデータベースはUTF-8がいいでしょう)。 - EC-CUBE 2.13.5のダウンロード
- スクリプトの修正
参考サイトの通り+αですが、長くなるので項目を区切ります。 - ディレクトリ構造、define.phpの修正
- インストールスクリプトの実行
- config.phpの定数の修正
インストール前のEC-CUBEのスクリプトの修正
インストール作業前に修正すべきスクリプトファイルは以下です。
- /data/class/SC_Initial.php
- /data/class/SC_Query.php
- /data/class/db/SC_DB_DBFactory.php
- /html/index.php
- /data/class/db/dbfactory/SC_DB_DBFactory_MYSQL.php
WordPress連携のためのファイルの修正
WordPress連携のために必要なファイルについては、参考サイトの通りindex.php以外の各ファイルをテキストエディタなどで開き、定数を以下の通りに修正します。ただ、これは定数をWordpressと重ならないようにするためですので、「EC_」というプレフィックスが嫌であれば「E_」などでも構わないと思います。
- DB_USER→EC_DB_USER
- DB_NAME→EC_DB_NAME
- DB_SERVER→EC_DB_SERVER
- DB_PASSWORD→EC_DB_PASSWORD
- DB_PORT→EC_DB_PORT
また、参考サイトより修正するファイルがひとつ少ないですが、最後のconfigファイルについてはEC-CUBEインストール時に生成されるファイルなのでここでは編集しません(後で行います)。
/html/index.phpについては、ファイルの内容は修正せずに、ファイル名をec.phpなどに変更しておきます(Wordpressとの競合回避)。
MySQL5.7以降への対応
MySQL5.7以降で廃止された設定コマンドが記述されているため、/data/class/db/dbfactory/SC_DB_DBFactory_MYSQL.phpをテキストエディタで開き、360行目付近にある記述を修正します。
$objQuery->exec(‘SET SESSION storage_engine = InnoDB’);
↓
$objQuery->exec(‘SET SESSION default_storage_engine = InnoDB’);
ディレクトリ構造の決定、define.phpの決定
EC-CUBE2系では、重要なファイルやテンプレートファイルなどの保存用に、/dataというディレクトリ(フォルダ)があります。一方で、/htmlディレクトリはユーザーや管理者がブラウザを通してアクセスしていいファイルが格納されます。つまり、/dataには極力、webからアクセスして欲しくありません。
ここでは、shop.example.comというドメインにショッピングサイトを展開したいとします。そして、現在の一般的なレンタルサーバーにFTPでアクセスしたときの(仮想的な)ディレクトリ構造は以下のようになっていることが多いです。
/ +-+-+public_html+-+-+ example.com/ | | +-+mail | +-+ shop.example.com/ | | +-+ blog.example.com/
html/ディレクトリの中身はshop.example.com/ディレクトリに転送することで、ドメインのトップページに直接アクセスできます。
ただ、data/ディレクトリをpublic_html/ディレクトリの中に直接インストールしてしまうと、レンタルサーバーから貸与されている基本のドメイン(独自ドメインではないドメイン)からアクセスできてしまう場合があります。そこで以下のようにdataディレクトリを転送します。
/ +-+-+public_html+-+-+ example.com/ | | +-+mail | | +-+ shop.example.com/ | | +-+data | +-+ blog.example.com/
こうすることで、webからアクセスできるpublic_htmlディレクトリ(サーバーによってweb/やhtdocs/, html/など色々な名前がついています)の外にdata/ディレクトリが配置されることにより、安全性を高めることが可能になります。
また、こうした場合、/html/define.phpでは、
define(‘HTML2DATA_DIR’, ‘../../data/’);
のように記述することになります。
インストールスクリプトの実行
ここまでの手順を実行したら修正したファイルを含めてサーバーにFTPなどで転送します。転送が完了したら、/html/install/index.phpにアクセスします(htmlディレクトリの中身を直接転送している場合には、アクセスするURLに注意)。
500 internal server errorの対処
html/ディレクトリの中身を全てアップロードすると、現在(2019年)のサーバー環境ではエラーが出る場合が多くあります。これは、.htaccessでPHPの設定を操作しているのが原因ですので、/html/.htaccessファイルをサーバーから削除することで対応します。
どうしても.htaccessファイルで設定されている内容が必要な場合は、サーバーのコントロールパネルなどから設定します。
インストールの開始
正常に動作している場合、上図のような画面がブラウザに表示されますので、「次へ進む」で初期設定を行っていきます。
必要なファイルのコピーと絶対パスの記録
「次へ進」んでいくと、必要なファイルのコピーが行われます。ここは通常、「次へ進む」で先に進んでいいのですが、上図のように「upload/」の前までがEC-CUBEのサーバー上での実際の「絶対パス」となっています。Windowsで言えば、「C:\Program Files\EC-CUBE」のようなものです。
この情報は後で調べることもできますが、わざわざ調べるのも面倒なのでここで控えておきましょう(FTPでアクセスしたときとは、やはり通常異なります)。
サイトの設定
サイトの基本情報を設定します。
特に難しいところはないと思いますが、SSL設定と、仕事で固定IPアドレスを持っている場合などはセキュリティ向上のために設定を行っておくといいかもしれません。
今回は技術テストのためなので、特に設定せず適当に行っています。また、パスワードマネージャーからパスワード設定を行うと上手く行かない現象も見られたので、ここではパスワードマネージャの機能から直接パスワードを設定せず、後でログインする際に改めて設定した方が無難かもしれません。
DBの設定
データベースの設定は、先にデータベースを作成しておけばその通りに入力するだけとなります。
また、多くのレンタルサーバーでは「DB名」と「DBユーザ」が同じになるようになっています。
データベースの初期化
データベースとの接続が確認できると、データベースの初期化画面となります。ここでは、チェックボックスにチェックは入れずに「次へ進み」ます。
なんらかの原因で再インストールしなければならないとき、ここで古いデータを削除して新規インストールすることができますが、筆者は一度データベース自体を削除してから作り直すことをお勧めします(データベースを作り直して文字コードを変えたらインストールが正常に進んだため)。
インストールの完了
何回か「次へ進む」をクリックする必要はありますが、通常データベースの初期化画面の後は特に入力の必要もなく進みます。
この画面が出たら、「管理画面へログインする」をクリックして先に進みましょう。
config.phpの修正
そのままログインしようとすると、上記のようなエラーが出てログインできません。これは、Wordpressと競合しないように変更した定数名が、新規に作成されたコンフィグ(設定)ファイルには適用されていないためにおこります。
FTPなどで、EC-CUBEをインストールしたサーバーにアクセスし、
- /data/config/config.php
をダウンロードします。始めてのインストールの場合、手元の/data/config/ディレクトリの中身は空なので、そこには入れないようにするといいでしょう。再インストール時などに間違って転送し、インストールでエラーが起きる可能性があります。
config.phpをテキストエディタで開いたら、
- DB_USER→EC_DB_USER
- DB_NAME→EC_DB_NAME
- DB_SERVER→EC_DB_SERVER
- DB_PASSWORD→EC_DB_PASSWORD
- DB_PORT→EC_DB_PORT
のように変更し、上書きアップロードします。
インストール完了
ここまででEC-CUBEのインストールは完了になります。手順を間違えると正常に動作しない作業が多くありますので、うまくできなかった場合は最初からやりなおしてみてください。設定ファイルやDBが残っていると上手くいかないことも多いので、できればまっさらな状態から試すようにしてくださいね。
しかし、それが終わってもまだ現在のサーバー環境にあわせてインストールし、Wordpressとの連携をする準備したにすぎません。
次回以降で、Wordpressも適宜修正しながらインストールしていきたいと思います。