El autor seleccionó el COVID-19 Relief Fund para que reciba una donación como parte del programa Write for DOnations.
El servidor web HTTP Apache ha evolucionado a través de los años para trabajar en entornos diversos y satisfacer diferentes necesidades. Un problema importante, que HTTP Apache tiene que resolver, al igual que cualquier servidor web, es cómo administrar los diferentes procesos para presentar una solicitud de protocolo http. Esto implica abrir un socket, procesar la solicitud, mantener la conexión abierta durante un período determinado, administrar los nuevos eventos que se producen a través de esa conexión y devolver el contenido producido por un programa escrito en un lenguaje específico (como PHP, Perl o Python). Estas tareas se realizan y se controlan con un módulo de procesamiento múltiple (MPM).
HTTP Apache viene con tres MPM diferentes:
MPM Event es un módulo de procesamiento múltiple rápido disponible en el servidor web HTTP Apache.
PHP-FPM es el administrador de procesos FastCGI para PHP. El protocolo FastCGI se basa en la Interfaz de Acceso Común (CGI), un protocolo que se encuentra entre las aplicaciones y los servidores web, como HTTP Apache. Permite a los programadores desarrollar aplicaciones de forma separada del comportamiento de los servidores web. Los programas ejecutan los procesos de manera independiente y pasan su producto al servidor web a través de este protocolo. Cada vez que una aplicación necesite procesar una nueva conexión, se creará un nuevo proceso.
Combinar el módulo MPM Event en HTTP Apache con el administrador de proceso de FastCGI para PHP (PHP-FPM) le permite a un sitio web cargar más rápido y administrar más conexiones simultáneas, mientras utiliza menos recursos.
En este tutorial, cambiará el módulo de procesamiento múltiple predeterminado de pre-fork a event y utilizará el administrador de procesos PHP-FPM para gestionar el código PHP en lugar del clásico mod_php
en HTTP Apache, con el propósito de mejorar el rendimiento de la pila LAMP.
Para completar esta guía, necesitará lo siguiente:
Ubuntu hereda la secuencia de comandos para habilitar o deshabilitar los módulos de HTTP Apache de su distribución principal, Debian. En este paso, utilizará este conjunto de herramientas para deshabilitar el módulo Pre-fork y habilitar el módulo Event.
También, detendrá HTTP Apache, deshabilitará el módulo PHP 7.2
, vinculado al módulo Pre-fork, y, luego, deshabilitará Pre-fork para habilitar de inmediato el módulo Event.
Primero, detendrá el servicio de HTTP Apache:
- sudo systemctl stop apache2
Ahora, puede deshabilitar el módulo PHP 7.2
, que está enlazado al módulo Pre-fork:
- sudo a2dismod php7.2
Luego, deshabilite el módulo Pre-fork MPM:
- sudo a2dismod mpm_prefork
Ahora, habilite el módulo Event MPM:
- sudo a2enmod mpm_event
Cambió el MPM de pre-fork a event y eliminó la conexión del módulo PHP 7.2
ubicado entre PHP y HTTP Apache. En el siguiente paso, instalará el módulo php-fpm
, así como los módulos de las bibliotecas y del proxy relacionados. Configurará HTTP Apache para que también pueda comunicarse con PHP.
En esta etapa, cambió el MPM de Pre-fork a Event a fin de modificar la manera en que HTTP Apache procesa las conexiones. Sin embargo, durante ese proceso deshabilitó el módulo de PHP que conectaba HTTP Apache con cualquier programa que se ejecute en PHP.
En este paso, instalará el procesador de PHP-FPM para que HTTP Apache pueda procesar los programas en PHP nuevamente. También instalará las bibliotecas de dependencias y habilitará los módulos para que ambos puedan cooperar de una manera fluida y más rápida que antes.
Primero, instale php-fpm
. El siguiente comando instalará el paquete PHP-FPM y habilitará automáticamente el servicio php7.2-fpm
, que está integrado con systemd, de modo que el servicio comience en el momento del inicio:
- sudo apt install php-fpm
Para poder comunicarse, HTTP Apache y PHP necesitan una biblioteca que habilite esa capacidad. Ahora, instalará libapache2-mod-fcgid
, que puede servir como una interfaz entre los programas con servidores web, y es específica para HTTP Apache. Esta comunicación se realizará a través de un socket UNIX.
Instale esta biblioteca:
- sudo apt install libapache2-mod-fcgid
Instaló php-fpm
y libappache2-mod-fcgid
, pero ninguno está habilitado aún.
Primero, habilite el módulo php-fpm
con el siguiente comando:
- sudo a2enconf php7.2-fpm
Segundo, habilite el módulo del proxy
de HTTP Apache:
- sudo a2enmod proxy
Tercero, habilite el módulo del proxy
de FastCGI en HTTP Apache:
- sudo a2enmod proxy_fcgi
Nota: con la siguiente línea puede leer la configuración de la interacción entre los programas en PHP y HTTP Apache a través de un socket UNIX:
- cat /etc/apache2/conf-enabled/php7.2-fpm.conf
Ahora, todo está listo para iniciar HTTP Apache. Primero, realizará una comprobación de configuración:
- sudo apachectl configtest
OutputSyntax OK
Después de eso, puede proceder a reiniciar HTTP Apache, ya que se inició automáticamente al instalar la biblioteca de FastCGI, libapache2-mod-fcgid
:
- sudo systemctl restart apache2
Instaló el módulo php-fpm
, configuró HTTP Apache para trabajar con él, habilitó los módulos necesarios para que el protocolo CGI funcione e inició los servicios correspondientes.
Ahora que Apache tiene el módulo Event MPM habilitado y PHP-FPM está activo y ejecutándose, es momento de verificar que todo funcione según lo previsto.
Ejecutará algunas pruebas para verificar que los cambios de configuración se hayan aplicado. La primera prueba comprobará qué módulo de procesamiento múltiple está utilizando HTTP Apache. La segunda verificará que PHP esté utilizando el administrador de FPM.
Ejecute el siguiente comando para comprobar el servidor HTTP Apache:
- sudo apachectl -M | grep 'mpm'
El resultado será el siguiente:
Outputmpm_event_module (shared)
Puede repetir el mismo proceso para el módulo proxy
y FastCGI:
- sudo apachectl -M | grep 'proxy'
El resultado mostrará lo siguiente:
Outputproxy_module (shared)
proxy_fcgi_module (shared)
Si quiere ver la lista completa de los módulos, puede eliminar la segunda parte del comando, después de -M
.
Ahora, es momento de verificar si PHP está utilizando el administrador de procesos de FastCGI. Para ello, escribirá una pequeña secuencia de comandos PHP que le mostrará toda la información relacionada con PHP.
Ejecute el siguiente comando para escribir un archivo con el siguiente nombre:
- sudo nano /var/www/your_domain/info.php
Añada el siguiente contenido al archivo info.php
:
<?php phpinfo(); ?>
Ahora, visite la URL de su servidor y anexe info.php
al final como se muestra: http://your_domain/info.php
.
La entrada de la API del servidor será FPM/FastCGI.
Elimine el archivo info.php
después de esta comprobación, de modo que no se divulgue públicamente información sobre el servidor:
- sudo rm /var/www/yourdomain.com/info.php
Verificó el estado de funcionamiento del módulo MPM, los módulos que administran el FastCGI y la utilización del código PHP.
Optimizó su pila LAMP original, de modo que se aumentó el número de conexiones para crear nuevos procesos de HTTP Apache, PHP-FPM administrará el código PHP de manera más eficiente y mejoró la utilización general de los recursos.
Consulte la documentación del proyecto del servidor HTTP Apache para obtener más información sobre los diferentes módulos y los proyectos relacionados.
Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.
This textbox defaults to using Markdown to format your answer.
You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!