EC-CUBE3のカスタマイズにVagrantを用いているのですが、パフォーマンスがすこぶる悪いです。NFSを用いてフォルダの同期を行うと、パフォーマンスが改善すると目にしたので試してみたところ、いくつかのトラブルと遭遇しましたので、それを記録として残します。
バージョン
EC-CUBE3:3.0.10
NFSでのフォルダ同期設定
下記のディレクトリを同期しています。設定手順はこちら。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | root/ ┣ COPYING ┣ app/ ┣ autoload.php ┣ cli-config.php ┣ composer.json ┣ composer.lock ┣ composer.phar ┣ eccube_install.sh ┣ html/ ┣ phpunit.xml.dist ┣ src/ ┣ tests/ ┗ vendor/ |
パーミッションについて
同期したファイル、ディレクトリについて、EC-CUBE3の仕様に則した適切なパーミッションを設定して下さい。
所有者、グループについて
同期共有した全てのファイル、ディレクトリは、所有者とグループが、それぞれ、VagrantでゲストOSを起動したホストOSのユーザー(以下ホストユーザー)、ホストOSのグループ(以下ホストグループ)となっています。
Webサーバー実行ユーザー(通常はVagrant仮想マシンのユーザー”vagrant”)が、ファイル、ディレクトリにアクセスできるよう設定して下さい。
私は、ゲストOS側に、ホストグループと同じgidを持つグループを作成し、それに”vagrant”ユーザーを追加して、アクセス権限を与えました。
セッションファイルの保存先を変更
最新のEC-CUBE3では、設定ファイルでセッションファイルの保存先を変更できるので、NFSで同期したディレクトリとは別の場所に保存先を変更して下さい。
3.0.10のようにセッションファイル保存先が変更できない場合、こちらを参考に、シンボリックリンクを用いて保存先を変更して下さい。”<当該プログラムのセッション保管ディレクトリ>”は、下記になります。
1 | app/cache/eccube/session |
パフォーマンスについて
ここまでの設定がうまく出来ていれば、EC-CUBE3は動作するはずです。私の環境では、全体的にちょっと速くなったかな?といった程度で、劇的に速くはなりませんでした。
キャッシュクリアについて
キャッシュを保存するディレクトリの周遊者が、Webサーバー実行ユーザーと一致しない為、EC-CUBE3の管理画面からキャッシュをクリアする際に、権限の問題でクリアできません。ホスト側で手動でクリアする必要があります。
その際、『セッションファイルの保存先を変更』の項で作成したシンボリックリンクを、誤って削除しないように気を付けて下さい。
宮崎県在住。
プログラムを書いて暮らしています。趣味はルアーフィッシング、ギター。