【AWS認定 ソリューションアーキテクト】この本で私は受かりました

【PHPバージョン共存】特定のバーチャルドメインのみPHPをバージョンアップする

Apache+php環境の複数のバーチャルドメインを運用されている環境で、特定のバーチャルドメインだけPHPのバージョンアップをしたいという相談を受ける機会があったので検証してみました。
php-fpmを利用してバーチャルドメインごとにphp-fpmのソケットを別にして稼働中の環境はさほど困ることはないかと思いますが、モジュール版でphpを稼働している環境は大変かなと思いましたので、モジュール版からphp-fpm(FastCGI版)へ変更するところ含めて記載します。

前提

以下の環境において、PHPをモジュール版からphp-fpm(Fast CGI)に変更し、「sub2.tekunote.com」のみPHP7.3へ変更します。「sub1.tekunote.com」はPHP5.4のままとします。なお、PHPはyumで導入することとします。

◆前提構成概要

項目 内容
OS CentOS Linux release 7.8
PHP 5.4 (baseリポジトリ)、モジュール版で稼働
PHPモジュール版用設定先 /etc/httpd/conf.d/php.conf
バーチャルドメイン sub1.tekunote.com,sub2.tekunote.com

◆前提バーチャル設定詳細

やってみた

php-fpm(5.4 base)のインストール

php73,php73-php-fpm(7.3 remi)のインストール

php-fpm,php73-php-fpmデフォルト設定の退避

php-fpmの設定ファイルの作成

以下の通り、sub1.tekunote.com、sub2.tekunote.comの設定を作成します。
作成先はOS標準の5.4系は/etc/php-fpm.d/、remiの7.3系は/etc/opt/remi/php73/php-fpm.d/となります。

◆sub1.tekunote.com用(5.4)
/etc/php-fpm.d/sub1.tekunote.com.conf

◆sub2.tekunote.com用(7.3)
/etc/opt/remi/php73/php-fpm.d/sub2.tekunote.com.conf

ポイントはlisten = ソケット名です。listenでバーチャルドメインごとに異なるソケットを指定することで、対応するバージョンへの接続を振り分けることができます。また、今回はソケットを採用しましたがSetHandler "proxy:fcgi://127.0.0.1:ポート番号"のようにポート番号を個別に割り当てることでも振り分けができます。子プロセスの制御については、複数のドメインを1サーバに搭載する場合、子プロセスを必要に応じて立ち上げるpm = ondemandが不要なリソースを抑えられるという判断で、ここではそのように設定しています。その他の設定についても必要最低限を記載していますので、環境に合わせて適宜修正ください。php-fpmの設定については下記をご参考ください。

◆php-fpm設定の参考サイト
PHP: 設定 – Manual

apacheのモジュール版設定の削除

phpインストール時のデフォルトでは上記のファイルでモジュール版用の設定がされています。もし、個別に設定している場合は、該当の設定を削除してください。php.confの説明は割愛しますが、DirectoryIndex index.phpが必要な方は、この設定だけ残すか、移動させましょう。

apacheとphp-fpm,php73-php-fpmの連携

以下のようにバーチャルドメインの設定を行います。FilesMatchディレクティブで囲まれたところが追記する個所です。

php-fpm,php73-php-fpmの起動とapacheの設定反映

動作確認

phpinfoで各バーチャルドメインのPHPバージョンの確認と、php-fpmで動作していることの確認を行いました。結果は以下の通りです。php-fpmで動作していることはServer APIの項目でFPM/FastCGIとなっていることで確認できます。もし、モジュール版で動作している際はApache 2.0 Handlerと表示されます。
◆sub1.tekunoto.com

◆sub2.tekunoto.com

最後に

PHPのドメイン個別のバージョンアップの要望に柔軟に対応できそうです。また、Plesk等のサーバ管理ツールでは、ドメインごとにPHPのバージョンを容易に管理できますが、スケールアウトやパフォーマンスのチューニングのことを考えるとサーバ管理ツールを利用することがネックとなる場合もあるかと思います。そういったところからの移行の時にも便利だなと思いました。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA