Saltar al contenido principal.

Instalando php-fpm y nginx en Debian 8



Desde el servidor estable y rápido depende de la suerte del sitio. Su trabajo lento y las caídas frecuentes pueden asustar tanto a los visitantes como a los motores de búsqueda. Este último también reducirá la calificación del sitio de frenado en los resultados de búsqueda y no estará en el top 10, sino en el top 100 para todas las consultas.

El uso de un montón de nginx y php-fpm para el mantenimiento del sitio le permite aumentar la velocidad de su trabajo, así como la estabilidad del sistema en general. Además, al rechazar el uso de apache, simplificamos un poco el sistema e incluso lo protegemos. Después de todo, si no hay apache, entonces el atacante no podrá usar, por ejemplo, el archivo .htaccess para sus propios fines.



El paquete nginx + php-fpm es bastante fácil de configurar y es compatible con muchos CMS populares: WordPress, MODX, DLE, varios marcos. Todo esto puede funcionar sin apache voluminoso.

Al instalar un servidor web, no lo haga sin crear usuarios. Lo ideal sería crear un usuario separado para cada sitio. Así que podemos proteger otros sitios si uno de los usuarios es hackeado. Los ejemplos en este artículo están escritos teniendo en cuenta el hecho de que creó usuarios de acuerdo con las instrucciones .



Primero, instale los módulos básicos: php-fpm, mysql, curl, GD. Todo lo demás es necesidad individual.

  # aptitude instale nginx php5-fpm php5-mysqlnd php5-curl php5-gd 

Los archivos de configuración se encuentran en el directorio / etc / php5 / fpm / .

Contenido del artículo:

Configuramos php-pool para servicio de solicitudes.

Inicialmente, php-fpm solo tiene un grupo llamado www. Lo utilizaremos como base para otras piscinas.



Abra el archivo de configuración /etc/php5/fpm/pool.d/www.conf , considere algunas variables y seleccione valores para ellas.

La primera variable es el nombre del grupo. Está encerrado entre corchetes y no puede coincidir con el nombre de ningún usuario existente en el sistema.

[www]

A continuación indicamos el nombre del usuario y su grupo, en cuyo directorio de inicio se encuentra el sitio.

  usuario = nombre de usuario
 grupo = www-data 

Especifique que la agrupación debería funcionar como un zócalo de Unix. La variable $ pool será reemplazada con el nombre.

listen = /var/run/php-$pool.sock

Determinamos el uso del modo estático, en el que se crea una cierta cantidad de procesos de grupo durante el inicio de fpm. Sirven todas las solicitudes entrantes.

pm = static

¿Por qué tal elección? :) Esta es la opción más económica. Cada proceso de la agrupación ocupará la cantidad de RAM asignada a la variable memory_limit más varios megabytes por módulo conectado, caché, etc. En la versión estática, todas las solicitudes serán procesadas solo por los procesos creados, y las nuevas no se generarán (y ocuparán una valiosa memoria). Como resultado, obtenemos un consumo de memoria fijo.

Especifique el número requerido de procesos que atienden las solicitudes. Se selecciona en función de la carga de trabajo.

pm.max_children = 3

Recomiendo agregar los siguientes parámetros al final del archivo de configuración del grupo.

Directorio para colocar archivos temporales:

  php_admin_value [upload_tmp_dir] = "/ var / www / username / tmp" 

El directorio para almacenar archivos de sesión:

  php_admin_value [session.save_path] = "/ var / www / username / session" 

Por razones de seguridad, el acceso a estos directorios solo debe estar disponible para el usuario, con los permisos de los cuales se inicia el grupo php-fpm. Además, no utilice el mismo directorio para almacenar archivos de sesión y para archivos temporales.

El límite de memoria para ejecutar scripts debe seleccionarse en función de los requisitos del sitio. Para empezar:

  php_admin_value [memory_limit] = 50M 

Especifique un parámetro requerido que elimine la vulnerabilidad :

  php_admin_value [cgi.fix_pathinfo] = 0 

Las variables sendmail_path y open_basedir no se indican específicamente. Se pasarán como parámetros fast-cgi en el archivo de configuración nginx. Por lo tanto, para cada sitio específico puede definir su propia configuración. :)

Después de especificar todos los parámetros necesarios, debe volver a cargar la configuración de php-fpm con el comando:

  # service php5-fpm reload 

Procesando scripts php utilizando nginx

Queda por configurar nginx para que funcione con php-fpm. Configuración preparada

  servidor {
  server_name example.com ;
  escucha 80;
  access_log / var / log / nginx / example.com .access.log;
  error_log / var / log / nginx / example.com .error.log;
  juego de caracteres utf-8;
  índice index.php;
  raíz / var / www
  ubicación / {
   try_files $ uri $ uri / /index.php$args;
  }
  ubicación ~ \ .php $ {
   try_files $ uri = 404;
   fastcgi_pass unix: /run/php-www.sock;
   fastcgi_index index.php;
   incluye fastcgi_params;
   fastcgi_param SCRIPT_FILENAME $ document_root $ fastcgi_script_name;
   fastcgi_param PHP_VALUE "sendmail_path = / usr / sbin / sendmail -t -i -fmail@example.com";
   fastcgi_param PHP_ADMIN_VALUE "open_basedir = / var / www / example.com /: / var / save_path /: / var / tmp_dir /";
  }
 } 

example.com reemplaza con tu dominio.

Descripción de los parámetros :

try_files $uri =404; mostrará el error 404 en el navegador del usuario, en lugar del mensaje sin archivo de entrada especificado , en caso de que ocurra este error.

fastcgi_pass - ruta al socket php-fpm.

  fastcgi_pass unix: /run/php-www.sock; 

La siguiente variable establece la ruta a sendmail y el parámetro que especifica la dirección de correo electrónico del administrador del sitio. Reemplace mail@example.com con su propio .

  fastcgi_param PHP_VALUE "sendmail_path = / usr / sbin / sendmail -t -i -fmail@example.com"; 

Enumeramos los directorios para open_basedir: el directorio con el sitio, el directorio para guardar archivos temporales, el directorio para los archivos de sesión.

  fastcgi_param PHP_ADMIN_VALUE "open_basedir = / var / www / example.com /: / var / save_path /: / var / tmp_dir /"; 

Si necesitas pasar varios parámetros, debes hacerlo de esta manera:

  fastcgi_param PHP_ADMIN_VALUE "sendmail_path = / usr / sbin / sendmail -t -i -fmail@example.com \ nopen_basedir = / var / www / example.com /: / var / save_path /: / var / tmp_dir /"; 

Como puede ver, los parámetros están separados por un salto de línea: \ n .

Guardamos todos los cambios que hicimos y reiniciamos nginx.

  # servicio nginx recargar 


¿Cómo calificas el artículo?
Звёзд: 1Звёзд: 2Звёзд: 3Звёзд: 4Звёзд: 5 ( 8 calificaciones, promedio: 2.63 de 5)
Cargando ...

” 4 Comentarios “ Instalando php-fpm y nginx en Debian 8

  1. Buenas tardes La directiva raíz en la configuración httpd con un punto y coma probablemente debería estar cerrada ... y la configuración misma debería colocarse en / etc / nginx / sites-enabled con el nombre de la dirección del sitio.

  2. ¿Por qué crear usuarios para cada sitio por separado?
    ¿Qué significa que si un usuario es hackeado, entonces otros sitios estarán seguros?

    ¿Necesito crear diferentes usuarios? Si solo trabajo en el sistema, inicie sesión en el sistema a través de SSH a través de un certificado.
    DB tampoco busca en internet.

    Gracias

Añadir un comentario

Su correo electrónico no será publicado.