ECCUBE を冗長構成をとりながらAWS上にセットアップしてみたのですが、いくつか工夫が必要だったのでメモしておきます。
とりあえず一般的な構成で Cloudfront + ALB + EC2 + EFS + RDS はセットアップしておきます。
Cloudfrontのキャッシュ設定
キャッシュは基本は無効化して、下記のディレクトリだけキャッシュ対象にしておきます。
/app
/html
(/app ってどういうときにブラウザから参照されるんだ...?)
SSLの強制
ECCUBEは X-Forwarded-Proto を考慮してくれないようなので、 index.php の最初の方に
$_SERVER['HTTPS'] = 'on';
を追加しておきます。
(本当はウェブサーバーの方で設定したほうがいいのだけど、手っ取り早く動かしたかったので...)
キャッシュディレクトリをローカルのディスクへ
ECCUBEはキャッシュファイルを大量に作成するようです。
ドキュメントルートをEFS上にしてECCUBEをインストールしますが、そのままだとキャッシュが全部EFS上に置かれてしまい、パフォーマンスが著しく低下します。
シンボリックリンクで var ディレクトリはローカルのディスク上のディレクトリを指すよう変更します。
$ cd /path/to/document/root/
$ rm -rf var
$ ln -s /path/to/dir/on/local/disk/ var
セッションの保存先をDBに変更
EC-CUBE4 セッション情報の出力先をデータベースに変更 を参考に設定変更します
負荷が抑えられなくなってきたら考慮すること
- ヘッダー部分のカートに入っている商品の表示とかを辞めればページ類もキャッシュできる(CSRFで問題出る?)
- クエリキャッシュ
- スレーブDBの参照