複数バージョンのPHPを共存させる方法(Part3)
Part2からの続き。
Part1はコチラ。
最後の仕上げでFront Apacheから各PHPバージョン用のApacheへアクセスできるようにリバースプロキシの設定を行う。
以下のような割り当てを行う。
URL | PHPバージョン |
http://php53-test.co.jp | 5.3 |
http://php56-test.co.jp | 5.6 |
http://php71-test.co.jp | 7.1 |
http://{IP直打ち} | 5.3 |
1. Front Apacheにリバースプロキシの設定を行う。
vi /etc/httpd/conf.d/virtualhost.conf
※以下の内容を追記する。
NameVirtualHost *:80
<IfModule mod_proxy.c>
ProxyRequests Off
SSLProxyEngine on
<Proxy *>
Order deny,allow
Allow from All
</Proxy>
# PHP5.3用
<VirtualHost *:80>
ProxyPass / http://localhost:8053/
ProxyTimeout 600
ProxyPreserveHost On
</VirtualHost>
# PHP5.6用
<VirtualHost *:80>
ServerName php56-test.co.jp ←PHP5.6用のApacheへ接続するためのドメイン名を指定する。
ProxyPass / http://localhost:8056/
ProxyTimeout 600
ProxyPreserveHost On
</VirtualHost>
# PHP7.1
<VirtualHost *:80>
ServerName php71-test.co.jp ←PHP7.1用のApacheへ接続するためのドメイン名を指定する。
ProxyPass / http://localhost:8071/
ProxyTimeout 600
ProxyPreserveHost On
</VirtualHost>
</IFModule>
※「ProxyTimeout」を設定しておかないとPHP用Apache側で30秒以上かかる処理をした場合にFrontApache側でタイムアウトしてしまうため、
適当に大きな値を設定しておいた方が便利。
Apacheを再起動する。
service httpd restart
2. 動作確認を行う。
それぞれのPHP用のURLでアクセスを行い、
想定通りのバージョンのphpinfoが表示されれば成功!!
■PHP5.3用のURLへアクセスした場合
■PHP5.6用のURLへアクセスした場合
■PHP7.1用のURLへアクセスした場合
■IP直打ちの場合
これで各PHPのバージョンを共存させる環境が出来上がったため、
・案件ごとにPHPのバージョンを指定して動かす。
・1案件のソースを複数のPHPバージョンで動かす。
ということが1サーバーでできるようになった。
開発環境ではサーバー代節約のために1サーバーで複数案件動かす運用をしたいので、
この仕組みがあると動作させるPHPバージョンが違う案件を同居させることができていい感じ。
Apacheを再起動するときには以下のようにコマンドを使い分ける必要があるので注意。
※全Apacheが同時に再起動していいのであれば、Front Apacheの起動スクリプトに処理を足せばイケるかも・・・?
Apache | 再起動コマンド |
Front Apache | service httpd restart |
PHP5.3 Apache | service httpd_php5.3 restart |
PHP5.6 Apache | service httpd_php5.6 restart |
PHP7.1 Apache | service httpd_php7.1 restart |