INSTALA DIFERENTES VERSIONES DE PHP EN UBUNTU 20.04
Introducción
Es necesario tener instaladas diferentes versiones de PHP porque hay diferentes aplicaciones, servidores, clientes o circunstancias, y aquí te decimos como lograrlo.
PHP, es acrónimo de “PHP: Hypertext Preprocessor
” un lenguaje de ‘scripting’ de propósito general y de código abierto que está especialmente pensado para el desarrollo web. Un amplio conjunto de funciones integradas, hace que sea uno de los mayores lenguajes usados para el desarrollo web hoy en día. Sin embargo es necesario tener instaladas diferentes versiones de PHP porque tenemos diferentes aplicaciones, servidores, clientes, etc… y aquí te decimos como lograrlo.
Requisitos
- 1 Instalación de Ubuntu 20.04
- Ejecutar comandos con sudo
Paso 1: Añadir el repositorio Ondrej PHP al sistema
Ejecutamos el comando apt
para instalar software-properties-common
:
sudo apt install software-properties-common -y
El paquete software-properties-common
proporciona la utilidad de línea de comandos apt-add-repository
, que usaremos para añadir el repositorio de PPA (archivo de paquete personal) ondrej/php
.
Ahora, agregamos al repositorio de nuestro sistema ondrej/php
. El PPA ondrej/php
tendrá versiones más actualizadas de PHP que los repositorios oficiales de Ubuntu y también nos permitirá instalar diferentes versiones de PHP en el mismo sistema:
sudo add-apt-repository ppa:ondrej/php
Ahora actualizamos nuestro repositorio:
sudo apt update -y
Paso 2: Instalar las diferentes versiones de PHP
Comenzamos haciendo la primera instalación de PHP y algunos de los módulos más primordiales, como por ejemplo php7.1
, php7.1-fpm
, php7.1-mysql
, libapache2-mod-php7.1
, y libapache2-mod-fcgid
con los siguientes comandos:
sudo apt install php7.1 php7.1-fpm php7.1-mysql libapache2-mod-php7.1 libapache2-mod-fcgid -y
php7.1
es un metapaquete que se utiliza para ejecutar aplicaciones de PHP.php7.1-fpm
ofrece el intérprete Fast Process Manager, que se ejecuta como demonio y recibe solicitudes de Fast/CGI.php7.1-mysql
conecta PHP con la base de datos de MySQL.libapache2-mod-php7.1
ofrece el módulo PHP para el servidor web de Apache.libapache2-mod-fcgid
contiene un mod_fcgid que inicia varias instancias de programas de CGI para gestionar solicitudes simultáneas.
Ahora vamos por las versiones PHP que necesitemos realizando el mismo paso anterior excepto por el módulo libapache2-mod-fcgid como sigue:
sudo apt install php7.2 php7.2-fpm php7.2-mysql libapache2-mod-php7.2 -y
sudo apt install php7.4 php7.4-fpm php7.4-mysql libapache2-mod-php7.4 -y
sudo apt install php8.0 php8.0-fpm php8.0-mysql libapache2-mod-php8.0 -y
Paso 3: Iniciar servicios y verificar estado de las diferentes versiones de PHP
Después de instalar nuestras diferentes versiones de PHP tenemos que iniciar los servicios de cada una de ellas y verificar su estado así:
sudo systemctl start php7.1-fpm
sudo systemctl status php7.1-fpm
Entonces debemos ver algo similar a esto:
● php7.1-fpm.service - The PHP 7.1 FastCGI Process Manager
Loaded: loaded (/lib/systemd/system/php7.1-fpm.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2021-08-13 20:38:24 CDT; 5h 28min ago
Docs: man:php-fpm7.1(8)
Main PID: 880 (php-fpm7.1)
Status: "Processes active: 0, idle: 2, Requests: 0, slow: 0, Traffic: 0req/sec"
Tasks: 3 (limit: 6983)
Memory: 21.8M
CGroup: /system.slice/php7.1-fpm.service
├─ 880 php-fpm: master process (/etc/php/7.1/fpm/php-fpm.conf)
├─1048 php-fpm: pool www
└─1049 php-fpm: pool www
Ahora, repetimos el proceso para php7.2-fpm
:
sudo systemctl start php7.2-fpm
sudo systemctl status php7.2-fpm
● php7.2-fpm.service - The PHP 7.2 FastCGI Process Manager
Loaded: loaded (/lib/systemd/system/php7.2-fpm.service; enabled; vendor preset: enabled)
Active: active (running) since Sat 2021-08-14 01:52:35 CDT; 14min ago
Docs: man:php-fpm7.2(8)
Main PID: 23807 (php-fpm7.2)
Status: "Processes active: 0, idle: 2, Requests: 0, slow: 0, Traffic: 0req/sec"
Tasks: 3 (limit: 6983)
Memory: 5.8M
CGroup: /system.slice/php7.2-fpm.service
├─23807 php-fpm: master process (/etc/php/7.2/fpm/php-fpm.conf)
├─23808 php-fpm: pool www
└─23809 php-fpm: pool www
Y así sucesivamente para cada una de nuestras versiones:
sudo systemctl start php7.4-fpm
sudo systemctl status php7.4-fpm
● php7.4-fpm.service - The PHP 7.4 FastCGI Process Manager
Loaded: loaded (/lib/systemd/system/php7.4-fpm.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2021-08-13 20:38:24 CDT; 5h 31min ago
Docs: man:php-fpm7.4(8)
Main PID: 881 (php-fpm7.4)
Status: "Processes active: 0, idle: 2, Requests: 0, slow: 0, Traffic: 0req/sec"
Tasks: 3 (limit: 6983)
Memory: 13.1M
CGroup: /system.slice/php7.4-fpm.service
├─ 881 php-fpm: master process (/etc/php/7.4/fpm/php-fpm.conf)
├─1037 php-fpm: pool www
└─1038 php-fpm: pool www
sudo systemctl start php8.0-fpm
sudo systemctl status php8.0-fpm
● php8.0-fpm.service - The PHP 8.0 FastCGI Process Manager
Loaded: loaded (/lib/systemd/system/php8.0-fpm.service; enabled; vendor preset: enabled)
Active: active (running) since Sat 2021-08-14 01:54:54 CDT; 15min ago
Docs: man:php-fpm8.0(8)
Process: 29279 ExecStartPost=/usr/lib/php/php-fpm-socket-helper install /run/php/php-fpm.sock /etc/php/8.0/fpm/pool.d/www.conf >
Main PID: 29276 (php-fpm8.0)
Status: "Processes active: 0, idle: 2, Requests: 0, slow: 0, Traffic: 0req/sec"
Tasks: 3 (limit: 6983)
Memory: 7.5M
CGroup: /system.slice/php8.0-fpm.service
├─29276 php-fpm: master process (/etc/php/8.0/fpm/php-fpm.conf)
├─29277 php-fpm: pool www
└─29278 php-fpm: pool www
Paso 4: Habilitar los módulos para que Apache 2 funcione con varias versiones de PHP.
Por último, debemos habilitar varios módulos para que nuestro servicio de Apache2 pueda funcionar con varias versiones de PHP:
sudo a2enmod actions fcgid alias proxy_fcgi
actions
se utiliza para ejecutar secuencias de comandos de CGI en función del tipo de medio o el método de solicitud.fcgid
es una alternativa de alto rendimiento demod_cgi
que inicia una suficientes instancias del programa de CGI para gestionar solicitudes simultáneas.alias
proporciona la asignación de las distintas partes del sistema de archivos del host en el árbol de documentos y la redirección de URL.proxy_fcgi
le permite a Apache reenviar solicitudes a PHP-FPM.
Finalmente reiniciamos el servicio de Apache 2:
sudo systemctl restart apache2
Con estos pasos ya habremos aprendido a instalar diferentes versiones de PHP para que las podamos usar en diferentes ocasiones de acuerdo a nuestras necesidades para el desarrollo de nuestros diferentes proyectos.