異なるバージョンのPHPを共存させる on NGINX x PHP-FPM

remiを使い、php5.6の環境下に、php7.2をインストールしてみたのですが、
複数のPHP-FPMを起動することは出来ませんでした。

参考

※phpenvを使うと、出来るかもしれませんが、諦めて、docker使いました。

 

そもそも、PHP-FPMって

Apacheだと、PHPが渡るたびに、都度都度プロセスを起動していたので、
※今は、そうじゃないかもしれませんが、、、(知りません)

それが「遅いよね」ってことで、PHPを常駐化したのが、PHP-FPMで、
そのために、Nginxが表舞台に経った、はず。

で、実際に、PHP5.6-FPMのサービスが実行されている中、
PHP7.2-FPMを起動してみたところ、

[ec2-user]$ sudo service php-fpm-7.2 start
Starting php-fpm-7.2: [19-Oct-2019 11:52:55] ERROR: An another FPM instance seems to already listen on /var/run/php-fpm/php5.6-fpm.sock
[19-Oct-2019 11:52:55] ERROR: FPM initialization failed
[FAILED]

「既に、動いてるよ」ということで、

要用、上記参考したURLを見てみると、Apache・・・

常駐化せんでもいいように、Dynamic > Ondemandにしてあったり、
そこまでたどり着かないと、その意味がわからず、、、

 

流行りのDockerで、PHP-FPMを実行

避けて通っていましたが、Dockerに行きました。

https://hub.docker.com/r/crunchgeek/php-fpm

 

EC2上のOS上で動く(フロントの)nginxで、
PHPの場合、

fastcgi_pass 127.0.0.1:9000;

ローカルのFPMに処理をさせていますが、
Docker上のPHP-FPM  7.2に、処理していただくようにしました。

fastcgi_pass 127.0.0.1:9072;

※docker run オプション – p 9072:9000

***

仮想環境の上に、仮想環境(EC2)を作り、
その上に、仮想環境(Docker)が走る

 

なんか、不思議な感じです。CPUダイレクトだから、実現できる速さなんでしょうねー。

 

PS.

Eccube3の実行中のEC2のうちの1台が、遅くて使い物になりません。
Cloudfrontを使っていた頃波の遅さ。もう1台も4秒台と遅いんだけども。

EC2のスペックが悪いのか?メモリーやCPUがパンクしてるわけでもなく、
でも、ECCUBE2.13の速度は、早いとは言えないけど、普通だし。

※もちろん、キャッシュファイルは、EFS上にはない

やっぱり、プラグインの読み込みが問題なんだろうなと思いつつ、
まだ、ECCUBE 2.13を動かさなきゃいけないし、
4にはまだ移行できないし、(どっちみち、7.xが必要だし)
とりあえず、「PHP 7.xは早い」ということで、今回のPHP複合環境の構築に至っております。

 

-

ECCUBE3 * キャッシュファイルをEFS外に置く

基本的な考え方は、2.13と同じです。
参考 >> https://shoroji.com/2019/10/4355/

 

eccube3¥ efs¥ app¥、html¥、src¥、vendor¥
_cache¥

※nginx / apacheのdocument rootは、
「/var/www/html/eccube3/efs/html/」となります。

***

触るのは、2箇所。

/app/config/eccube/path.yml

template_temp_realdir: /var/www/html/eccube3/_cache/eccube/template
csv_temp_realdir: /var/www/html/eccube3/_cache/eccube/csv
plugin_temp_realdir: /var/www/html/eccube3/_cache/plugin

/src/Eccube/Application.php

「/cache/」で検索した、該当箇所

139行目 >> 'http_cache.cache_dir' => '/var/www/html/eccube3/_cache/http/'
218行目 >> 'translator.cache_dir' => $this['debug'] ? null : '/var/www/html/eccube3/_cache/translator',
240行目 >> 'session.storage.save_path' => '/var/www/html/eccube3/_cache/eccube/session',
290行目 >> $cacheBaseDir = '/var/www/html/eccube3/_cache/twig/profiler/';
292行目 >> $cacheBaseDir = '/var/www/html/eccube3/_cache/twig/production/';
483行目 >> 'orm.proxies_dir' => cache_dir. 'doctrine/proxies',

見落としがあれば、修正下さい。

-