Configuración de PHP-FPM en Linux

Configuración de PHP-FPM en Linux

Nataliya Oteir 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 para 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 por cada procesador. Así que 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 processor
processor : 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. En la práctica, este parámetro ya está seleccionado.

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 fichero de configuración.

Configuremos la 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:

# Pass PHP scripts to PHP-FPM
    location ~* \.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;
    }

En la configuración de PHP-FPM, debemos 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 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: la configuración de 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 pueden ser leídos en la documentación, pero los principales parámetros de la configuración de pools los consideraremos.

Cada pool se configura con un fichero independiente. Si hacemos 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.

Especificar el modo dinámico de creación de procesos, por lo que el número de procesos PHP-FPM iniciados dependerá directamente de la carga del servidor.

pm = dynamic

Establezca el número máximo de procesos hijo.

pm.max_children = 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. Puede aumentarlo si los recursos lo permiten; fijémoslo en 3.

pm.start_servers = 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 sobre la base de que no debe exceder el número máximo permitido de procesos hijos.

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 de los recursos disponibles, del número y complejidad del código PHP, del número de consultas y de la carga del 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, a partir 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:port, la directiva listen tendrá el siguiente aspecto

listen = 127.0.0.1:9000

Luego reiniciamos el servicio

/etc/init. d/php5-fpm restart

How useful was this post?

Click on a star to rate it!
Рейтинг: 0/5 - 0 голосов