複数バージョンのPHPを共存させる方法(Part3)
2018年09月19日

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
書いた人:木本

コメント一覧

コメントはまだありません。

コメントを投稿する

お名前
コメント
Top