non vorrei lavorare

ブログ名の通りです。javascript three.js mruby rust OCaml golang julialang blender

EC-CUBEをh2oと連携させてdocker for macで動かしてosxfsが大変遅いことを体感した件

おはようございます。なかなか次男のおむつが外れません。それどころか、ここ最近、よく漏らします。kjunichiです。

背景

前々から、EC-CUBEを動かしたいとは思っていた。

最近Windows向けの記事が多かったけど、今回はMacでやってます。

こどもたちとのあそびをなんとか自分の趣味ともからめて何かできないかと、無い頭ひねって考えてみた。

21世紀でお店を開けば、当然オンラインでの店舗も必要ですよね、むしろ、実店舗をかまえない方が 21世紀は主流ではなかろうかと。

そこで、EC-CUBEをうごかし、21世紀のお店屋さんごっこをするという遊びをするべく、早速準備に入った。

DockerでEC-CUBEをうごかす

Qiitaの記事

を参考にやってみることに。

動かしたが、メチャおそい

docker-syncなるものを使うとファイルアクセスが早くなる旨が参考にした記事には書かれていたが、こどもたちとあそぶ程度なので、

docker-compose up -d

としてやっていた。

表示が遅い

Mac mini late2014なのも大きいが、いくらなんでも遅すぎるといったファーストインプレッション。

これでは、こどもたちにブーブー文句言われておみせやさんごっこができない。

h2oの力を借りてサクサクにする予定だった

まぁ、ちょっと遅すぎと思いつつも、Apachephpモジュールだからなのが大きいのだろうと考え、 h2oでFastCGIにすれば、劇的に高速化され、子供たちも文句を言わなくなるだろうと思い、やってみた。

この状態で、さすがに計測くらいはするかとtimeコマンドかまして、curlでトップページにアクセスしたら4秒もかかっている!!

改善策

一瞬真面目に、特権命令を有効にしてコンテナ上げなおして、straceするかと思ったが、 ふとdocker for macのファイル共有が遅いとのフレーズを思い出し、 コンテナ内にec-cube以下のディレクトリをコピーして、やり直した。

劇的に改善

HTTP/2でアクセスできるようになった事以外にも、fastcgiになったので 0.2秒程度になった。

 

成果物

せっかくなので、hhvmでやってみた。

学んだこと

  • ○○は遅いというのは、ほんとにくそ遅いということもある

  • docker for macでローカルの複数のファイルをコンテナで利用するのは、避けるべき

  • ec-cubeの設定が少しわかるようになった

apacheとの比較のため、/var/www/html/配下にec-cube,ec-cube2を同居させ、切り替えながら試している 際に、ec-cubeの初期設定もすこしわかるようになった。

設定ファイルを編集しないとクッキー周りでうまく行かないことがあった。(これは、もとにしたコンテナが、 ROOT_URLPATHを指定していた為であった)

  • h2oでPHPを使うのはホントに簡単だった

  • EC-CUBE 3の途中から、Windows環境でもeccube_install.phpにより導入が可能になったこと知った。

参考資料