Come eseguire più versioni PHP su un server utilizzando Apache e PHP-FPM su CentOS 7

Vediamo come eseguire più versioni di PHP con apache su CentOS 7 Linux.

Ecco il nostro ambiente:

OS: CentOS 7
PHP versions: 5.6 and 7.3
Firewall: enabled
SELinux: enforcing

1- Prima di installare ed eseguire due versioni di php, dobbiamo installare apache e alcuni repository. quindi esegui questi comandi:

# yum -y install httpd
# yum -y install epel-release
# yum -y install yum-utils

2- Installare più versioni di php
php-fpm è disponibile nel repository remi. quindi installiamo questo repository e poi le versioni di php:

# yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
# yum -y install php56 
# yum -y install php73
# yum -y install php56-php-fpm
# yum -y install php73-php-fpm

assicurarsi che entrambe le versioni siano state arrestate:

# systemctl stop php56-php-fpm
# systemctl stop php73-php-fpm

3- Configurare SELinux
per consentire a selinux di eseguire lo script php-fpms, eseguire questi comandi:

# semanage port -a -t http_port_t -p tcp 9072
# semanage port -a -t http_port_t -p tcp 9056

4- Configurare php-fpm
per impostazione predefinita, ogni versione di php-fpm è in ascolto sulla porta 9000. poiché vogliamo eseguire più versioni di php, dobbiamo cambiare la porta predefinita:

# sed -i 's/:9000/:9056/' /etc/opt/remi/php56/php-fpm.d/www.conf
# sed -i 's/:9000/:9072/' /etc/opt/remi/php73/php-fpm.d/www.conf

ora bisogna avviare i due php-fpms:

# systemctl start php73-php-fpm
# systemctl start php56-php-fpm

ora dobbiamo creare uno script wrapper per chiamare php56-cgi e php73-cgi:

# cat > /var/www/cgi-bin/php56.fcgi << EOF
# #!/bin/bash
# exec /bin/php56-cgi
# EOF

# cat > /var/www/cgi-bin/php73.fcgi << EOF
# #!/bin/bash
# exec /bin/php73-cgi
# EOF

quindi impostiamo il bit eseguibile su entrambi gli script:

# sudo chmod 755 /var/www/cgi-bin/php56.fcgi
# sudo chmod 755 /var/www/cgi-bin/php73.fcgi

5- Configuriamo apache
Qui creiamo due percorsi. uno per php-fpm56 e un altro per php-fpm73. puoi cambiare questi percorsi con i tuoi:

# cat > /etc/httpd/conf.d/php.conf << EOF
# ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
# AddHandler php56-fcgi .php
# Action php56-fcgi /cgi-bin/php56.fcgi
# Action php73-fcgi /cgi-bin/php73.fcgi

# <Directory /var/www/html/php56>
# DirectoryIndex index.php
# AllowOverride all
# Require all granted
# </Directory>
# <Directory /var/www/html/php73>
# DirectoryIndex index.php
# AllowOverride all
# Require all granted
# </Directory>
# EOF

quindi inseriamo i due script php su questi due percorsi per testare:

# mkdir -p /var/www/html/php56
# mkdir -p /var/www/html/php73
# echo "<?php phpinfo(); ?>" > /var/www/html/php56/index.php
# echo "<?php phpinfo(); ?>" > /var/www/html/php73/index.php
# echo "AddHandler php73-fcgi.php" > /var/www/html/php73/.htaccess

6- Avviare i servizi
Ora abilitiamo e avviamo i servizi apache e php-fpm:

# systemctl enable httpd
# systemctl enable php56-php-fpm
# systemctl enable php73-php-fpm
# systemctl start httpd
# systemctl start php56-php-fpm
# systemctl start php73-php-fpm

7- Configuriamo il firewall:

# firewall-cmd --permanent --add-service=http
# firewall-cmd --reload

Ora possiamo fare le verifiche facendo riferimento a questi indirizzi:

http://127.0.0.1/php56
http://127.0.0.1/php73

dovresti vedere la pagina php_info con le due distinte versioni

Loading