Configuración de PHP-FPM en Linux

Configuración de PHP-FPM en Linux

Leer 9 minutos

No vamos a tocar en la configuración básica del servidor Nginx en sí y su funcionalidad, ya lo hicimos en nuestro artículo anterior. Pero algunos parámetros deben ser considerados.

Definir y especificar el número de controladores y el número de conexiones por procesador. Para ello, en el archivo /etc/nginx/nginx. conf especificaremos los valores:

worker_processes 1; worker_connections 1024;

La idea básica al elegir estos valores es que el número de clientes atendidos es igual al número de handlers multiplicado por el número de conexiones de cada procesador. En nuestro caso, son 1.024 clientes. Para evitar problemas de entrada-salida, siga la regla 1 del procesador por núcleo de procesador. Puede determinar el número de núcleos mediante el comando

cat /proc/cpuinfo | grep procesador procesador : 0

Mi procesador tiene un núcleo. Por lo tanto, el número de procesadores es uno. El número de conexiones se puede añadir en función de las necesidades. Este parámetro ya está seleccionado en la práctica.

Por razones de seguridad, se puede activar la directiva

server_tokens off

Del manual: "Permite o prohíbe emitir la versión de Nginx en los mensajes de error y en el campo "Servidor" del título de la respuesta".

Esta directiva se añade a la sección http/server/local del archivo de configuración.

Especifiquemos el tamaño de los datos transmitidos por el servidor:

client_max_body_size 20m; client_body_buffer_size 128k;

Esta directiva se añade a la sección http/server/local del archivo de configuración.

Configurar caché para archivos estáticos. Esto es para ahorrar recursos del servidor y ancho de banda. Deshabilite el registro y establezca la fecha de caducidad del encabezado en 100 días para los archivos estáticos.

location ~* \..(jpg|jpeg|gif|png|css|js|ico|xml)$ { access_log off; log_not_found off; expires 360d; }

Para interactuar con PHP-FPM, puede especificar un socket Unix. Para hacer esto, necesitamos escribir en nuestro halo de configuración:

# Pasar scripts PHP a PHP-FPM ubicación ~* \.php$ { fastcgi_index index.php; fastcgi_pass 127.0.0.1:9000; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param SCRIPT_NAME $fastcgi_script_name; }

Mirando hacia adelante, en la configuración de PHP-FPM, se debe especificar que escuche en la IP y puerto especificados en nuestra configuración. Esto se hace mediante la directiva listening del fichero de configuración del pool.

Por razones de seguridad, puede impedir el acceso a los archivos ocultos.

location ~ /\. { access_log off; log_not_found off; deny all; }

La configuración de PHP-FPM en sí puede dividirse en 2 pasos: establecer los parámetros globales que se lleva a cabo en el archivo

/etc/php5/fpm/php-fpm.conf

y la configuración del pool. La configuración del pool se especifica en los archivos de directorio

/etc/php5/fpm/pool.d/

Los parámetros globales no son tan interesantes y se pueden leer en la documentación, pero vamos a considerar los parámetros principales de la configuración de los pools.

Cada pool se configura con un archivo separado. Si haces un comando

ls -l /etc/php5/fpm/pool. d/

veremos que el sistema ya tiene un fichero de configuración para el pool www. Veamos la configuración en su ejemplo.

Un punto importante en la configuración es elegir el número de handlers que se utilizan para ejecutar scripts PHP. Su número debe ser elegido sabiamente. Muy pocos manejadores no permitirán un procesamiento eficiente y rápido de las peticiones, pero demasiados agotarán los recursos que el servidor requiere para otras tareas. El número de procesadores debe elegirse teniendo en cuenta que incluso en picos de peticiones al servidor, la utilización de sus recursos debe permanecer dentro de límites razonables y no llevar a su sobrecarga.

Ahora veamos un poco el fichero de configuración y especifiquemos las siguientes opciones. Ah, sí, en el fichero de configuración, las líneas que empiezan por el símbolo ";" son comentarios y no se consideran directivas.

Especifica el modo dinámico de creación de procesos, así el número de procesos PHP-FPM iniciados dependerá directamente de la carga en el servidor.

pm = dinámico

Establecer el número máximo de procesos hijos.

pm.max_hijos = 6

A continuación, debe especificar el número de procesos hijo que se ejecutarán en cuanto se cargue el servidor. Por defecto, este valor es 2. Puedes aumentarlo si los recursos lo permiten; vamos a fijarlo en 3.

pm.start_servidores = 3

También debes especificar el número mínimo y máximo de procesos inactivos. Hagamos que el número mínimo sea igual al número de procesos en ejecución en el arranque del servidor. Y fijaremos el número máximo en base a que no debe exceder el número máximo permitido de procesos hijo.

pm.min_spare_servers = 3 pm.max_spare_servers = 5

Estos valores se dan a modo de ejemplo y explicación. Pero en cada situación concreta pueden variar. Los valores óptimos dependen de las capacidades del servidor y los recursos disponibles, el número y la complejidad del código PHP, el número de consultas, y la carga en el servidor. Estos parámetros sólo pueden obtenerse mediante la aplicación práctica y las pruebas del sitio creado.

Consideremos ahora los ajustes específicos.

En primer lugar, configuraremos el registro de información sobre los scripts que se ejecutan lentamente. Esta información será útil para aclarar las razones de los retrasos en el sitio. En primer lugar, estableceremos un umbral de tiempo, después del cual la ejecución del script se considerará lenta.

request_slowlog_timeout = 10s

Las unidades de tiempo pueden especificarse en segundos (s), minutos (m), horas (h) o días (d). Nosotros hemos especificado un tiempo de 10 segundos.

Ahora especificaremos también el nombre del fichero donde se enviará la información.

slowlog = /var/log/slowphp.log

Ahora, este archivo puede ser estudiado para el estudio de scripts "lentos".

Si desea ejecutar scripts en un entorno aislado o entorno chroot. Esta opción se suele utilizar por motivos de seguridad. Debe configurar la opción chroot para habilitar esta función.

Cuando configure esta opción, debe recordar que esto implicará cambios en el procesamiento de los scripts PHP.

Todas las rutas de archivos se verán ahora relativas al directorio especificado, y los s cripts PHP no podrán acceder a sockets ubicados fuera del directorio especificado.

Para mantener múltiples sitios, puede que necesite añadir pools adicionales. Esto le permite configurar diferentes ajustes para cada sitio individualmente. Para crear un pool adicional, copie nuestro archivo

/etc/php5/fpm/pool.d/www.conf

con un nuevo nombre, por ejemplo

/etc/php5/fpm/pool.d/www2.conf

Abra un nuevo archivo y cambie el nombre del pool. Para ello, en la parte superior del archivo, cambie la línea [www] por [www2].

Y cambia la línea

listen = /var/run/php5-fpm.sock

en

listen = /var/run/www2.sock

En caso de que queramos que el handler escuche en el par ip:puerto, la directiva listen tendrá el siguiente aspecto

listen = 127.0.0.1:9000

A continuación reiniciamos el servicio

/etc/init. d/php5-fpm restart

GPUDedicTR1