PHP複数バージョンインストール
(バーチャルホストでPHP切替)

スポンサーリンク

概要

PHPの任意のバージョンを同一サーバー上に共存させ、Apacheのバーチャルホストを設定し、接続ドメインごとにPHPのバージョンを切り替える設定をする。

前提条件

・OSはCentOS7であること
・WebサーバはApacheを利用する

複数PHPインストール

Remi レポジトリのインストール

# yum install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
# yum install yum-utils
# yum-config-manager --enable remi

php54/55/56/70/71/72をインストールする

# for v in 54 55 56 70 71 72 ; do yum -y install php$v php$v-php-{gd,xml,mbstring,mysqlnd} ; done
# for v in 54 55 ; do yum -y install php$v-php-pecl-{apc,memcached} ; done
# for v in 56 70 71 72 ; do yum -y install php$v-php-{opcache,pecl-apcu,pecl-memcached} ; done

PHPバージョン確認

# for v in 54 55 56 70 71 72 ; do php$v -v ; echo \ ; done

php.ini 配置場所確認

# for v in 54 55 56 70 71 72 ; do php$v --ini | grep Loaded | awk '{print $4}' ; done

複数php-fpmインストール

# for v in 54 55 56 70 71 72 ; do yum -y install php$v-php-fpm ; done

php-fpm 設定

# for v in 54 55 56 ; do sed -i '/pm = /s/dynamic/ondemand/' /opt/remi/php$v/root/etc/php-fpm.d/www.conf ; done
# for v in 70 71 ; do sed -i '/pm = /s/dynamic/ondemand/' /etc/opt/remi/php$v/php-fpm.d/www.conf ; done
※php72のみデフォルトで利用する

php-fpmバージョン確認

# for v in 54 55 56 ; do grep 'pm = ondemand' /opt/remi/php$v/root/etc/php-fpm.d/www.conf ; done
# for v in 70 71 ; do grep 'pm = ondemand' /etc/opt/remi/php$v/php-fpm.d/www.conf ; done

php-fpm listenポート指定

# for v in 54 55 56 ; do sed -i "s/9000/90$v/" /opt/remi/php$v/root/etc/php-fpm.d/www.conf ; done
# for v in 70 71 ; do sed -i "s/9000/90$v/" /etc/opt/remi/php$v/php-fpm.d/www.conf ; done
※リッスンポートphp72のみデフォルト9000にする

Apacheの設定(バーチャルホスト)

# cat << "_EOF_" > /etc/httpd/conf.d/remi.conf
    
### php72
        ServerName do.pineapplefanboy.com
        
            SetHandler "proxy:fcgi://127.0.0.1:9000"
        
    
    
### php71
        ServerName php71.do.pineapplefanboy.com
        DocumentRoot /var/www/phpdir/php71
        ErrorLog logs/php71.do.pineapplefanboy.com-error.log
        CustomLog logs/php71.do.pineapplefanboy.com-access.log combined
        
            SetHandler "proxy:fcgi://127.0.0.1:9071"
        
    

    
### php70
        ServerName php70.do.pineapplefanboy.com
        DocumentRoot /var/www/phpdir/php70
        ErrorLog logs/php70.do.pineapplefanboy.com-error.log
        CustomLog logs/php70.do.pineapplefanboy.com-access.log combined
        
            SetHandler "proxy:fcgi://127.0.0.1:9070"
        
    

    
### php56
        ServerName php56.do.pineapplefanboy.com
        DocumentRoot /var/www/phpdir/php56
        ErrorLog logs/php56.do.pineapplefanboy.com-error.log
        CustomLog logs/php56.do.pineapplefanboy.com-access.log combined
        
            SetHandler "proxy:fcgi://127.0.0.1:9056"
        
    

    
### php55
        ServerName php55.do.pineapplefanboy.com
        DocumentRoot /var/www/phpdir/php55
        ErrorLog logs/php55.do.pineapplefanboy.com-error.log
        CustomLog logs/php55.do.pineapplefanboy.com-access.log combined
        
            SetHandler "proxy:fcgi://127.0.0.1:9055"
        
    

    
### php54
        ServerName php54.do.pineapplefanboy.com
        DocumentRoot /var/www/phpdir/php54
        ErrorLog logs/php54.do.pineapplefanboy.com-error.log
        CustomLog logs/php54.do.pineapplefanboy.com-access.log combined
        
            SetHandler "proxy:fcgi://127.0.0.1:9054"
        
    
_EOF_

※ご自身のドメイン名に合わせてServerNameを変更してください。

php-fpm の起動

# for v in 54 55 56 70 71 72 ; do systemctl start php$v-php-fpm ; systemctl enable php$v-php-fpm ; done

PHP接続確認(URL)

サンプルファイルの作成

# echo "PHP Version: <?php echo phpversion();" > /var/www/html/index.php

# mkdir -p /var/www/phpdir/php71/
# mkdir -p /var/www/phpdir/php70/
# mkdir -p /var/www/phpdir/php56/
# mkdir -p /var/www/phpdir/php55/
# mkdir -p /var/www/phpdir/php54/

# cp -p /var/www/html/index.php /var/www/phpdir/php71
# cp -p /var/www/html/index.php /var/www/phpdir/php70
# cp -p /var/www/html/index.php /var/www/phpdir/php56
# cp -p /var/www/html/index.php /var/www/phpdir/php55
# cp -p /var/www/html/index.php /var/www/phpdir/php54

※ドメインごとにPHPのバージョンが切替わっていること

参考リンク

Yum で複数バージョンの PHP を共存させる
ありがとうございます

BlogInfraPHP
スポンサーリンク
インフラエンジニア|パイナップル星人 ブログ

コメント

タイトルとURLをコピーしました