Ver páginaRevisiones antiguasEnlaces a esta páginaExportar a PDFExportación a ODTVolver arriba Esta página es de solo lectura. Puedes ver la fuente pero no puedes cambiarla. Pregunta a tu administrador si crees que esto es incorrecto. ====== Servidor web NGINX con PHP 8.4 ====== {{ doc:tec:net:web_nginx_php:php_logo.png?nolink |}} \\ * 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. \\ <WRAP center round help> - [[https://www.redeszone.net/2016/12/02/procesar-paginas-web-php-nginx-fpm/|Procesar páginas web NGNIX php-FPM]] - [[https://elbauldelprogramador.com/instalacion-optimizacion-servidor-web-nginx-i/|Instalación y optimización de un servidor web con Nginx (I)]] - [[https://geekytheory.com/como-configurar-multiples-dominios-y-subdominios-en-nginx|Cómo configurar múltiples dominios y subdominios en Nginx]] </WRAP> \\ ===== Instalación y configuración ===== * Instalamos en Debian 13 el servicio ''php-fpm'' y otras extensiones que vamos a necesitar para crear un servidor Dokuwiki: <code> aptitude install php-fpm php-cli php-mcrypt php-gd php-xml php-mbstring </code> * Algunas órdenes relativas al servicio: <code> service php8.4-fpm status, start, stop, restart </code> \\ ==== Configuración de FPM ==== * 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: <code> [...] 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 [...] </code> * 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. \\ ==== Configuración de PHP ==== * 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''. \\ ==== Configuración de NGINX ==== * 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”: <code> 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; } </code> \\ ===== Comprobación ===== * 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. <code> <?php phpinfo(); ?> </code> \\ doc/tec/net/web_nginx_php/inicio.txt Última modificación: 2025/11/10 17:05por euloxio