Servidor web NGINX con PHP 8.4


  • Al utilizar PHP-FPM (FastCGI Process Manager), el motor intérprete de PHP corre como un servicio aparte, el cual puede recibir peticiones a través de un socket TCP/IP o UNIX tradicional.
  • De esta forma se tienen dos servicios: Nginx para manejar el protocolo HTTP y PHP-FPM para interpretar código PHP. Lo cual resulta más eficiente, ya que se invoca a PHP sólo cuando es necesario y mejora mucho la eficiencia de memoria.



  • Instalamos en Debian 13 el servicio php-fpm y otras extensiones que vamos a necesitar para crear un servidor Dokuwiki:
    aptitude install php-fpm php-cli php-mcrypt php-gd php-xml php-mbstring
    
  • Algunas órdenes relativas al servicio:
    service php8.4-fpm status, start, stop, restart
    


  • Su fichero de configuración es /etc/php/8.4/fpm/pool.d/www.conf.
  • Aunque las opciones que vienen por defecto nos pueden servir para hacer un uso del servidor, algunas de las opciones que podemos modificar son:
    • Usuario y grupo sobre el que se ejecutará FPM.
    • Socket desde el que escuchará las peticiones.
    • Prioridad del proceso.
    • Número de procesos hijo que se crearán.
    • Peticiones máximas para cada proceso.
  • De momento lo dejamos tal como está. Los parámetros de configuración principales podrían quedar de la siguiente forma:
    [...]
    
    user = www-data
    group = www-data
    
    [...]
    
    listen.owner = www-data
    listen.group = www-data
    listen.mode = 0660
    
    [...]
    
    pm = dynamic
    pm.max_children = 75
    pm.start_servers = 3
    pm.min_spare_servers = 3
    pm.max_spare_servers = 10
    
    [...]
    
  • La configuración varía de acuerdo a las necesidades del servidor. En este caso se utilizan como mínimo 3, y como máximo 10, procesos servidores spare (listos para procesar solicitudes); y un máximo de 75, trabajando en modo dinámico (los procesos hijos se crean/matan a medida que son necesarios).
  • Además se debe especificar el usuario y grupo con los que correrán los procesos hijos: Utilizar el usuario “www-data” por defecto de sistemas Debian y derivados.


  • A continuación, vamos a ver el fichero de configuración global de PHP. Este fichero se encuentra en /etc/php/8.4/fpm/php.ini.
  • Entre el gran número de opciones y configuraciones diferentes, vamos a indicar una por motivos de seguridad: Debemos buscar la línea cgi.fix_pathinfo y cambiar el valor por defecto 1 por 0.


  • Con esto ya tendríamos la parte de PHP mínimamente configurada, aunque antes de continuar también debemos configurar Nginx para que sea capaz de reconocer y procesar este tipo de webs. Para ello, editamos /etc/nginx/sites-available/default.
  • Aquí, en el apartado index debemos añadir: index.php. El orden de la lista de archivos index marcará la prioridad. Por ejemplo, si el primero de la lista es el html y este no existe, intentará cargar el siguiente htm y, si no existe, el siguiente php en nuestro caso.
  • También debemos añadir, o asegurarnos de que está correctamente configurado, dentro de “server”:
    index index.php index.html index.htm index.nginx-debian.html;
    
    server_name _;
    
    location / {
       try_files $uri $uri/ =404;
    }
    
    # pass the PHP scripts to FastCGI server
    
    location ~ \.php$ {
       include snippets/fastcgi-php.conf;
       
       fastcgi_pass unix:/var/run/php/php8.4-fpm.sock;
    }


  • El fichero html del servidor web lo copiamos con un nuevo nombre: index.php. Y añadimos en el cuerpo del documento algunos cambios para comprobar que ahora es el primer fichero visualizado en el servidor, según el orden indicado en el apartado anterior.
  • También añadimos una instrucción en PHP para comprobarlo: En este ejemplo mostrará la información acerca de la versión y configuración del PHP instalado en el servidor.
    <?php
     phpinfo();
    ?>
    


  • doc/tec/net/web_nginx_php/inicio.txt
  • Última modificación: 2025/11/10 17:05
  • por euloxio