Optimizar o acelerar a Apache web server
Con este procedimiento que explicamos en este segmento, vamos a optimizar o acelerar a Apache Web Server, para que las páginas de PHP que sirva carguen hasta un 90% más rápidas.
Realmente lo que hace que nuestro servidor web acelere su respuesta a solicitudes de clientes, es un módulo llamado PHP-FPM, es una versión avanzada de FastCGI y que se usa para sitios con alto tráfico de visitas. Hace unos años implemente un servidor web con Apache para un cliente cuyo sitio web desbordaba las 1000 visitas por minuto (el cliente no me había proporcionado ese dato), y entonces Apache colapsaba (hasta el WAF interpretaba tanto tráfico como un ataque, por lo que tuve que desactivarlo). Implementando esta solución Apache volvía funcionar más fuerte y más rápido que nunca.
Acelerar a Apache web server con PHP-FPM
Instalamos a PHP-FPM. La instalación del servidor web Apache la hacemos con el procedimiento de siempre que ya hemos visto en este blog, solo que ahora adicionamos estos pasos:
Primero miramos la versión de PHP activada como módulo de Apache
a2query -m | grep php
Como yo tengo la versión 4 de PHP, instalo la versión 4 de FPM
sudo apt install php7.4-fpm libapache2-mod-fcgid
Deshabilitamos a Prefork y a PHP 7.4, y habilitamos worker, fastcgi y otros respectivamente:
sudo a2dismod php7.4 sudo a2dismod mpm_prefork sudo a2enmod mpm_worker sudo a2enmod proxy_fcgi setenvif proxy sudo a2enmod headers sudo a2enmod rewrite sudo a2enmod userdir
Aplicamos los siguientes ajustes al archivo /etc/php/7.4/fpm/php.ini
file_uploads = On
allow_url_fopen = On
memory_limit = 512M
upload_max_filesize = 200M
post_max_size = 200M
max_execution_time = 360
max_input_time = 360
date.timezone = America/La_Paz
Podemos renombrar el archivo del pool, de www.conf al que queramos (puede ser el nombre de nuestra página)
sudo mv /etc/php/7.4/fpm/pool.d/www.conf /etc/php/7.4/fpm/pool.d/mi_pagina.conf
Luego abrimos nuestro archivo del pool y le aplicamos los siguientes parámetros
Comenta la línea listen = /run/php/php7.4-fpm.sock y la cambiamos para que escuche por socket 127.0.0.1:9000
listen = 127.0.0.1:9000 (puerto por el que PHP-FPM recibirá las conexiones del virtual host de Apache)
Aplicamos estos otros ajustes en el mismo pool
pm = dynamic pm.max_children = 12000 pm.start_servers = 8 (número de procesos hijos que el pool creará al iniciar el proceso padre “php7.0-fpm”, este no puede ser mayor a pm.max_spare_servers) pm.min_spare_servers = 2 (este número debe ser menor o igual al de pm.start_servers) pm.max_spare_servers = 8 pm.max_requests = 1200 (ó 0 para dejarlo sin límite) rlimit_files = 16384 (opcional)
Ajustes en Apache
Abrimos el archivo de configuración de nuestro virtual host, y le adicionamos la siguiente línea justo encima <Directory «/var/www/nuestra_pagina«>
ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/var/www/nuestra_pagina/$1 timeout=1800
Iniciamos el servicio de PHP-FPM
sudo service php7.4-fpm start
Reiniciamos a Apache Web Server
sudo service apache2 restart
Ya con esto tenemos a nuestro servidor web Apache funcionando como un bólido.
Apache y PHP-FPM con varios dominios o sitios
Para que PHP-FPM nos ayude con múltiples dominios o sitios, solo debemos crear un pool por cada sitio, dentro del directorio de siempre /etc/php/7.4/fpm/pool.d/. Por ejemplo, creamos el pool de otro_sitio.conf:
touch /etc/php/7.4/fpm/pool.d/otro_sitio.conf
Y le copiamos el contenido del primer pool que trabajamos, con la slavedad de que el socket debe tener definido otro puerto, por ejemplo el 9001:
listen = 127.0.0.1:9001
Y el virtualhost de Apache debe apuntar a ese nuevo socket
ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9001/var/www/otro_sitio/$1 timeout=1800
Verificando el funcionamiento de PHP-FPM
Con los siguientes comandos podemos verificar el funcionamiento de PHP-FPM
sudo ps -faux | grep fpm sudo netstat -putan | grep fpm
El ajuste que acabamos de ver para acelerar a Apache Web Server, no interfiere con otros módulos de aplicaciones que tengamos funcionando con Apache, como por ejemplo, Flask. Es totalmente transparente.
Y eso es todo.
Puedes ver cómo optimizar el rendimiento de tu servidor Linux
También puedes ver cómo optimizar tu máquina Linux
Valora este artículo

