DestacadasDEVOPSPHP

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.1php7.1-fpmphp7.1-mysqllibapache2-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 de mod_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.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *