Cómo configurar Apache y PHP para sitios web de alto tráfico en un servidor Linux

Casi todos los tutoriales sobre cómo instalar la pila LAMP (Linux, Apache, MySQL, PHP) recomendarán que utilice el módulo Apache incorporado para procesar scripts PHP. Por ejemplo, en Ubuntu, habilitaría esto cuando use un comando como sudo apt install libapache2-mod-phppara instalar un paquete. Esto a su vez obligaría a Apache a usar mpm_prefork. Cada vez que un visitante accede a su sitio web, se iniciará un nuevo proceso para manejar esa conexión. Esto funciona bien cuando hay poco tráfico.

Sin embargo, se convierte en un gran problema si se produce una explosión repentina de tráfico. Por ejemplo, una publicación de Reddit puede incluir su sitio web, y si la publicación se vuelve popular, puede obtener miles de visitantes en solo unos minutos.

En el mejor de los casos, si Apache puede manejar la ráfaga de tráfico, algunos visitantes desafortunados pueden tener que esperar entre treinta y sesenta segundos hasta que se cargue la página, lo cual es absurdo en el mundo actual. En el peor de los casos, el servidor comenzará a demorarse mucho y algunas conexiones simplemente se interrumpirán por falta de recursos. En este caso, los visitantes verán un error en sus navegadores.

No es un buen escenario de ninguna manera, ya que potencialmente perdió la atención de cientos o miles de lectores, clientes o fanáticos interesados.

Desafortunadamente, PHP es un gran acaparador de recursos de cualquier manera. Pero con mpm_eventApache puede manejar ráfagas repentinas de tráfico de una manera mucho más eficiente. Sin embargo, se recomienda que su servidor tenga al menos 2 GB de RAM y 2 núcleos de CPU, reales o virtuales, e incluso más si espera tener picos de tráfico intensos, como más de diez visitantes por segundo. Si está utilizando un servidor privado virtual, agregue más núcleos de CPU virtuales a su situación y almacenamiento SSD. La RAM es secundaria.

Cómo utilizar Apache MPM Event y PHP-FPM en distribuciones basadas en Debian

En Debian, Ubuntu u otras distribuciones de esta familia, simplemente evite instalar el paquete “libapache2-mod-php”. Cuando instala Apache, utiliza el evento MPM de forma predeterminada. Pero al instalar el paquete mencionado, un script deshabilita el evento MPM y habilita el prefork de MPM. El módulo PHP de Apache solo puede funcionar (de forma segura) con mpm_prefork. Por supuesto, sin “libapache2-mod-php”, no tiene procesador para archivos PHP. Por tanto, utilizará PHP-FPM en lugar del módulo PHP incluido en Apache. Así es como instalaría una pila LAMP en un servidor nuevo. Puede adaptar los pasos según los requisitos de su aplicación web.

Primero, inicie sesión como root. Luego, instale Apache.

En este punto, puede ver que Apache sí se envía con el evento MPM habilitado de forma predeterminada.

Apache Php Fpm Comprobar Mpm Debian

Instale PHP-FPM.

Verá instrucciones sobre cómo habilitar el procesador PHP en Apache.

Apache Php Fpm Enable Php Instrucciones

Habilite el protocolo FastCGI.

Habilite la configuración predeterminada de PHP-FPM para Apache.

Nota: en futuras versiones de Debian / Ubuntu, este comando podría cambiar a otra cosa, por ejemplo a2enconf php7.6-fpm, porque PHP-FPM sería una versión diferente.

Reinicie Apache.

Instale el resto de sus requisitos para su aplicación PHP. He aquí un ejemplo:

Esto instalaría un servidor de base de datos y el módulo PHP MySQL para que su aplicación PHP pueda conectarse a una base de datos.

Cómo utilizar Apache MPM Event y PHP-FPM en distribuciones basadas en RedHat

La otra opción de distribución de servidor popular es RedHat o CentOS. De la misma manera que anteriormente, se ofrecerá un ejemplo de una instalación limpia de Apache con el evento MPM habilitado y PHP-FPM.

Inicie sesión como root e instale Apache.

A diferencia de las distribuciones basadas en Debian, aquí verá que Apache usa MPM prefork de forma predeterminada, al menos en el último CentOS 7 disponible en el momento de escribir este artículo.

Apache Php Fpm Check Mpm Centos

Para habilitar el evento MPM, debe editar un archivo de configuración.

Esto agregará un # firmar para comentar (desactivar) la línea LoadModule mpm_prefork_module modules/mod_mpm_prefork.so.

Apache Php Fpm Mpm Conffile en Centos

Ahora descomente (active) la línea #LoadModule mpm_event_module modules/mod_mpm_event.so quitando el anterior # firmar con el siguiente comando.

Inicie Apache y habilítelo para que se inicie automáticamente en el arranque.

Compruebe si Apache ahora usa el evento MPM.

Apache Php Fpm Mpm Event Enabled Status Centos

Instale PHP-FPM y el módulo FastCGI.

Cree “/etc/httpd/conf.d/php.conf” para instruir a Apache sobre cómo procesar archivos PHP. Copie TODO el contenido a continuación y péguelo todo a la vez en la terminal, luego presione ENTER.

El mérito de esta gran configuración es para Debian. Otras fuentes recomiendan un archivo de configuración simple como:

<FilesMatch .php$>
SetHandler "proxy:fcgi://127.0.0.1:9000"
</FilesMatch>

Pero esto es vulnerable a algunos ataques, y si ciertos servicios fallan, puede exponer archivos PHP al público, lo que a su vez podría exponer contraseñas, códigos y datos confidenciales almacenados.

Reinicie Apache.

Inicie PHP-FPM y habilite su inicio automático en el arranque.

Conclusión

Ahora tiene un servidor Apache que escala mucho mejor con el tráfico. Sin embargo, recuerde que está usando la configuración predeterminada, como lo que es “mejor” para la mayoría de las personas. Si realmente desea aprovechar al máximo su servidor HTTP, debe leer sobre varias variables que puede ajustar. Los valores correctos para estos dependen en gran medida de los recursos de su servidor, el tráfico esperado y la aplicación PHP.

¿Es útil este artículo?

Puedes compartirlo con algun conocido(a) que le pueda resultar de ayuda

Deja una respuesta

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