Bienvenido de nuevo en esta ocasión te mostrare como Configurar Multi PHP con Apache en Ubuntu Server 20.04, Ya que en ocaciones se requiere de la ejecución al mismo tiempo de proyectos que requieren diferentes versiones de PHP en un mismo servidor. Asi que manos a la obra.
Prerequisitos de instalación
antes de iniciar es necesario cumplir con algunos requisitos los cales nombro a continuación:
- Un servidor con Sistema Ubuntu Server 20.04
- Tener instalado el servidor web Apache2
- comprender el funcionamiento de VirtualHost
Agregar repositorio
$ sudo apt update
$ sudo apt install libapache2-mod-fcgid
$ sudo apt install software-properties-common
presiona «Y» para continuar
$ sudo add-apt-repository ppa:ondrej/php
presiona enter para continuar con la instalacion.
Instalar multi PHP en Ubuntu Server 20.04
$ sudo apt install php5.6 php5.6-fpm libapache2-mod-php5.6
$ sudo apt install php7.0 php7.0-fpm libapache2-mod-php7.0
$ sudo apt install php7.1 php7.1-fpm libapache2-mod-php7.1
$ sudo apt install php7.2 php7.2-fpm libapache2-mod-php7.2
$ sudo apt install php7.3 php7.3-fpm libapache2-mod-php7.3
$ sudo apt install php7.4 php7.4-fpm libapache2-mod-php7.4
$ sudo apt install php8.0 php8.0-fpm libapache2-mod-php8.0
Despues de instalar puedes verificar las versiones que esta instaladas
$ ls /var/run/php/
total 28
lrwxrwxrwx 1 root root 30 Feb 18 07:51 php-fpm.sock -> /etc/alternatives/php-fpm.sock
-rw-r--r-- 1 root root 5 Feb 18 07:51 php5.6-fpm.pid
srw-rw---- 1 www-data www-data 0 Feb 18 07:51 php5.6-fpm.sock
-rw-r--r-- 1 root root 5 Feb 18 07:52 php7.0-fpm.pid
srw-rw---- 1 www-data www-data 0 Feb 18 07:52 php7.0-fpm.sock
-rw-r--r-- 1 root root 5 Feb 18 07:54 php7.1-fpm.pid
srw-rw---- 1 www-data www-data 0 Feb 18 07:54 php7.1-fpm.sock
-rw-r--r-- 1 root root 5 Feb 18 07:55 php7.2-fpm.pid
srw-rw---- 1 www-data www-data 0 Feb 18 07:55 php7.2-fpm.sock
-rw-r--r-- 1 root root 5 Feb 18 07:55 php7.3-fpm.pid
srw-rw---- 1 www-data www-data 0 Feb 18 07:55 php7.3-fpm.sock
-rw-r--r-- 1 root root 5 Feb 18 07:58 php7.4-fpm.pid
srw-rw---- 1 www-data www-data 0 Feb 18 07:58 php7.4-fpm.sock
-rw-r--r-- 1 root root 5 Feb 18 07:59 php8.0-fpm.pid
srw-rw---- 1 www-data www-data 0 Feb 18 07:59 php8.0-fpm.sock
Instalando extenciones de PHP
Como podemos instalar extenciones de PHP de acuerdo a la version es simple solo usa la siguiente formula sudo apt install php»Version»-extencion por ejemplo: sudo apt install php5.6-mysql
instalaremos todas la extensión de MySQL en todas las versiones:
$ sudo apt install php5.6-mysql
$ sudo apt install php7.0-mysql
$ sudo apt install php7.1-mysql
$ sudo apt install php7.2-mysql
$ sudo apt install php7.3-mysql
$ sudo apt install php7.4-mysql
$ sudo apt install php8.0-mysql
Configurando Multi PHP en apache
Activando modulo proxy_fcgi en apache
$ sudo a2enmod actions alias proxy_fcgi fcgid
Agregando los Servicios de PHP a la configuracion de apache
$ sudo a2enconf php5.6-fpm
$ sudo a2enconf php7.0-fpm
$ sudo a2enconf php7.1-fpm
$ sudo a2enconf php7.2-fpm
$ sudo a2enconf php7.3-fpm
$ sudo a2enconf php7.4-fpm
$ sudo a2enconf php8.0-fpm
Reiniciamos Apache
$ sudo systemctl restart apache2
Ahora usaremos virtualhost para asignar la version de PHP por proyecto.
Configuración de versión de PHP con Virtualhost
Como vimos en una entrada anterior es muy fácil configurar un virtualhost para nuestro caso vamos a crear un nuevo archivo de configuración dentro del cual configuraremos todos los virtualhost para cada una de las versiones de PHP que instalamos y a continuación apuntaremos todos los virtualhosts al mismo directorio /var/www/phpversion
para confirmar que se esta cargando la versión correcta de PHP.
Creamos la carpeta con el siguiente comando:
$ sudo mkdir /var/www/phpversion
Creamos un archivo index.php con el siguiente comando:
$ sudo vi /var/www/phpversion/index.php
Presionamos «i» despues le agregamos el siguiente contenido:
<?php
phpinfo();
?>
Después presiona «Esc» y a continuación ingresa «:wq» para guardar y salir de VI.
Para crear el archivo usaremos el siguiente comando:
$ sudo vi /etc/apache2/sites-available/phpversions.conf
Presionamos «i» para insertar texto y escribimos el siguiente codigo resaltamos las lineas importantes para definir el dominio y la versión de PHP:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName php56.local
DocumentRoot /var/www/phpversion
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
<FilesMatch \.php> # Apache 2.4.10+ can proxy to unix socket
SetHandler "proxy:unix:/var/run/php/php5.6-fpm.sock|fcgi://localhost/"
</FilesMatch>
</VirtualHost>
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName php70.local
DocumentRoot /var/www/phpversion
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
<FilesMatch \.php> # Apache 2.4.10+ can proxy to unix socket
SetHandler "proxy:unix:/var/run/php/php7.0-fpm.sock|fcgi://localhost/"
</FilesMatch>
</VirtualHost>
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName php71.local
DocumentRoot /var/www/phpversion
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
<FilesMatch \.php> # Apache 2.4.10+ can proxy to unix socket
SetHandler "proxy:unix:/var/run/php/php7.1-fpm.sock|fcgi://localhost/"
</FilesMatch>
</VirtualHost>
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName php72.local
DocumentRoot /var/www/phpversion
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
<FilesMatch \.php> # Apache 2.4.10+ can proxy to unix socket
SetHandler "proxy:unix:/var/run/php/php7.2-fpm.sock|fcgi://localhost/"
</FilesMatch>
</VirtualHost>
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName php73.local
DocumentRoot /var/www/phpversion
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
<FilesMatch \.php> # Apache 2.4.10+ can proxy to unix socket
SetHandler "proxy:unix:/var/run/php/php7.3-fpm.sock|fcgi://localhost/"
</FilesMatch>
</VirtualHost>
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName php74.local
DocumentRoot /var/www/phpversion
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
<FilesMatch \.php> # Apache 2.4.10+ can proxy to unix socket
SetHandler "proxy:unix:/var/run/php/php7.4-fpm.sock|fcgi://localhost/"
</FilesMatch>
</VirtualHost>
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName php80.local
DocumentRoot /var/www/phpversion
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
<FilesMatch \.php> # Apache 2.4.10+ can proxy to unix socket
SetHandler "proxy:unix:/var/run/php/php8.0-fpm.sock|fcgi://localhost/"
</FilesMatch>
</VirtualHost>
Despues presiona «Esc» y a continuacion ingresa «:wq» para guardar y salir de VI.
El siguiente paso es habilitar el archivo de virtualhost con la herramienta a2ensite.
$ sudo a2ensite phpversions.conf
Verificamos que no haya errores en la configuración con el siguiente comando:
$ sudo apache2ctl configtest
Reiniciamos apache para que apliquen las configuraciones con el siguiente comando:
$ sudo systemctl restart apache2
Probando nuestra configuración Multi PHP en Ubuntu Server 20.04
Para poder realizar pruebas de nuestro virtualhost necesitamos configurar el archivo /etc/hosts
con el siguiente comando:
$ sudo vi /etc/hosts
presiona «i» para poder editarlo y dentro de el agregaremos al final las siguientes lineas que corresponde a los dominios creados en nuestra configuración de virtualhost:
127.0.0.1 php56.local
127.0.0.1 php70.local
127.0.0.1 php71.local
127.0.0.1 php72.local
127.0.0.1 php73.local
127.0.0.1 php74.local
127.0.0.1 php80.local
Si tu Ubuntu Server 20.04 no cuenta con interfaz grafica esta configuración la deberas de realizar en todos los equipos en donde quieras realizar la comprobación sustituyendo la ip 127.0.0.1 por la ip de tu servidor en mi caso uso la 192.168.1.110 quedando de la siguiente forma:
192.168.1.110 php56.local
192.168.1.110 php70.local
192.168.1.110 php71.local
192.168.1.110 php72.local
192.168.1.110 php73.local
192.168.1.110 php74.local
192.168.1.110 php80.local
Después de configurar el archivo abre un navegador e introduce la url del dominio y observa el rersultado:
http://php56.local
http://php70.local
http://php71.local
http://php72.local
http://php73.local
http://php74.local
http://php80.local
0 comentarios