Apacheで複数バージョンのphp-fpmをホスト名で切り替える
問題
php-fpmを5系、7系、8系と実行していて、
Apacheからはホスト名を変えると使うphpのバージョンが切り換えれるようにしたいです。
例)
php5.example.com → php5.6
php7.example.com → php7.4
php8.example.com → php8.2
答え
debian、ubuntu ではapacheの設定を a2enconf, a2disconf で有効化、無効化できる。
例)php8.2有効化、php7.4無効化、php5.6無効化、apache再起動で反映
a2enconf php8.2-fpm
a2disconf php7.4-fpm
a2disconf php5.6-fpm
systemctl reload apache2.service
できるのだが、これではバージョンを切り替えたいときにいちいち有効化、無効化、再起動の操作が必要となる。
a2enconf、a2disconf で反映される設定ファイルはVirturlHostのファイルとは別ファイルとなっているので、php-fpmの設定をVirtualHostでどうにかしようとする前に、指定したバージョンのphpが全体的に有効になってしまう。
- 全体的にはphp-fpmの設定を無効にして、VirtualHostの中でVirtualHostごとに有効にしたい。
- せっかく /etc/apache2/conf-available/php8.2-fpm.conf などがあるので流用したい。
というわけで、VirtualHostの中でIncludeさせてみる。
<VirtualHost>
ServerName php8.exapmle.com
include /etc/apache2/conf-available/php8.2-fpm.conf
DocumentRoot /var/www/html
</VirtualHost>
<VirtualHost>
ServerName php7.exapmle.com
include /etc/apache2/conf-available/php7.4-fpm.conf
DocumentRoot /var/www/html
</VirtualHost>
<VirtualHost>
ServerName php5.exapmle.com
include /etc/apache2/conf-available/php5.6-fpm.conf
DocumentRoot /var/www/html
</VirtualHost>
conf は全部無効化。
a2disconf php8.2-fpm
a2disconf php7.4-fpm
a2disconf php5.6-fpm
systemctl reload apache2.service
できました。
コメント