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