En este momento estás viendo Instalación de Nginx y la pila LEMP en Debian 11 «Bullseye» 3

Instalación de Nginx y la pila LEMP en Debian 11 «Bullseye» 3

Instalación de Nginx y la pila LEMP en Debian 11 «Bullseye» 3


Instalacion y configuración de PHP

Ya hemos visto como hacer la instalación y configuración de ssh y UFW, y como instalar un servidor web nginx y un servidor de bases de datos MariaDB. El siguiente paso es instalar PHP y ver como se administra nginx.

Sumario

  • Instalación de PHP
  • Configuración de Nginx
    • Creación de bloques de servidor
  • Administrar el servidor web Nginx
  • Ficheros y directorios importantes en Nginx

Apache integra el intérprete PHP en cada solicitud, pero Nginx necesita un software externo para gestionar el procesamiento de PHP y actuar como puente entre el intérprete PHP y el servidor web, lo que permite un mayor rendimiento general de los sitios web basados en PHP.

Para ello tenemos que instalar el paquete «php-fpm» (PHP fastCGI process manager), y configurarlo para que Nginx pase solicitudes PHP a este software para su procesamiento. Como lo vamos a hacer en remoto, desde nuestra máquina cliente Ubuntu 20.04, nos conectamos al servidor con ssh.

ssh usuario@ip_servidor

Instalación de PHP

También necesitaremos «php-mysql», un módulo que permite a PHP comunicarse con las bases de datos basadas en MySQL. Con el siguiente comando, los paquetes PHP básicos se instalarán automáticamente como dependencias. Como siempre hay que actualizar la lista de paquetes de los repositorios.

sudo apt install php-fpm php-mysql

Nos pedirá confirmación, con «S» y «enter» terminará la instalación.

Configuración de Nginx. Creación de bloques de servidor.

Al igual que con Apache creamos «hosts virtuales», con Nginx tenemos que crear «bloques de servidor», que tienen la misma funcionalidad para alojar varios dominios en un solo servidor.

Nginx tiene un bloque de servidor habilitado por defecto para servir contenidos desde el directorio /var/www/html, al igual que Apache. Pero si queremos alojar más de un sitio web, es recomendable cambiar la estructura de esta ruta a /var/www/ y colgar de este directorio los dominios que vamos a servir.

No obstante, mantendremos /var/www/html para las solicitudes que reciba el servidor y que no coincidan con ningún dominio alojado.

Vamos a crear el primer bloque. Creamos el directorio con el siguiente comando

sudo mkdir -p /var/www/weblinus.com.local/public_html

Utilizamos la opción -p para crear cualquier directorio principal necesario

Podemos eliminar el fichero de configuración proporcionado por defecto por Nginx (no es necesario), o cambiarle el nombre, para ello ejecutamos

sudo rm -f /etc/nginx/sites-enabled/default

El siguiente paso será cambiar la propiedad del directorio creado. Para ello haremos uso de la variable $USER, y asignaremos la propiedad del directorio al usuario del sistema. O podemos asignarlo con www-data que es el usuario de Nginx.

sudo chown -R $USER:$USER /var/www/weblinus.com.local

Los permisos deberían ser correctos si hemos modificado el valor «umask», pero podemos comprobarlo ejecutando

sudo chmod -R 755 /var/www/weblinus.com.local

Para configurar este bloque tenemos que editar un fichero en el directorio sites-available de Nginx, que se encuentra en la ruta /etc/nginx/sites-available/

sudo nano /etc/nginx/sites-available/weblinus.com.local.conf

El fichero estará vacío. Fijate en la extensión .conf, si no la añades no funcionará. Tenemos que introducir el siguiente contenido

server {
    listen 80;
    server_name weblinus.com.local www.weblinus.com.local;
    root /var/www/weblinus.com.local;
    #root /var/www/weblinus.com.local/public_html;

    index index.html index.htm index.php;

    location / {
        try_files $uri $uri/ =404;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
     }

    location ~ /\.ht {
        deny all;
    }

} 

Analicemos este fichero

listen: Indicamos el puerto en el que Nginx escuchará. En este caso, configuramos el puerto 80, el predeterminado para HTTP.

server_name: definimos los nombres de dominio y/o direcciones de IP a los que debe responder este bloque de servidor.

root: define el document root en el que se almacenan los contenidos que este sitio web servirá.

index: Esta directiva establece el orden de prioridad que Nginx dará a los ficheros de índice de este sitio web. Lo habitual es dar prioridad a los ficheros index.html sobre los index.php para establecer, de manera rápida, una página inicial de mantenimiento en las aplicaciones de PHP. Estas opciones de configuración se pueden modificar para adaptarlas a las necesidades de nuestra aplicación web.

location /: En este primer bloque de ubicación incluimos la directiva try_files, que comprobará la existencia de ficheros o directorios coincidentes con una solicitud de URI. Si Nginx no encontrase el recurso solicitado, mostrará un error 404.

location ~ .php$: Este bloque de ubicación gestiona el funcionamiento de PHP orientando al fichero de configuración del servidor «fastcgi-php.conf» y al fichero «php7.4-fpm.sock», que establece el socket que se asocia con «php-fpm».

location ~ /.ht: Este bloque de ubicación gestiona los ficheros .htaccess, que Nginx no procesa. Añadiendo la directiva «deny all», si alguno de los ficheros .htaccess se introducen en el document root, no se servirán los contenidos solicitados.

Una vez creado este fichero lo guardamos y cerramos. El siguiente paso, para activar este bloque, será establecer un enlace con el fichero de configuración del directorio «sites-enabled» de Nginx.

sudo ln -s /etc/nginx/sites-available/weblinus.com.local.conf /etc/nginx/sites-enabled/

Y verificamos si hay algún error de sintaxis

sudo nginx -t

Para aplicar estas configuraciones tenemos que recargar Nginx

sudo systemctl reload nginx

Y con esto hemos terminado la configuración del bloque, pero el «document root» en /var/www/weblinus.com.local/public_html, lo tenemos vacío. Tenemos que crear un fichero «index.html» en esta ruta y probar que todo funciona como debe. Editamos,

sudo nano /var/www/weblinus.com.local/public_html/index.html

Y creamos un documento html, por ejemplo (copia y pega cambiando datos para tu dominio)

<html>
  <head>
    <title>weblinus.com</title>
  </head>
  <body>
    <h1>!!!Funciona!!!</h1>
    <p>Este es el sitio web <strong>weblinus.com</strong>.</p>
  </body>
</html>

Para comprobar si funciona, abrimos un navegador e introducimos nuestro dominio o la IP del servidor

http://weblinus.com.local
o
http://IP_del_servidor

Y veremos nuestra página recién creada.

Cuando creemos el fichero definitivo a servir «index.php», tendremos que eliminar el fichero «index.html» del document root o cambiarle el nombre, ya que si no lo hacemos, este tendrá preeminencia sobre el «index.php».

Si queremos crear nuevos sitios tenemos que repetir todos los pasos creando nuevos bloques.

Y finalmente tenemos toda la pila LEMP instalada y configurada.

Administrar el servidor web Nginx

Para administrar nuestro servidor web con Nginx, tenemos algunos comandos, que utilizan «systemctl». Vamos a verlos.

Para conseguir que Nginx se inicie con el reinicio del sistema

sudo systemctl enable nginx

Para deshabilitar esta función

sudo systemctl disable nginx

Para verificar el estado en Nginx

sudo systemctl status nginx

Para iniciar el servidor web

sudo systemctl start nginx

Si queremos recargar el servidor

sudo systemctl reload nginx

Para detener el servidor Nginx

sudo systemctl stop nginx

Y para reiniciar el servidor Nginx

sudo systemctl restart nginx

Ficheros y directorios importantes en Nginx

A modo de resumen veamos los directorios y ficheros de configuración más importantes de Nginx.

/var/www/htmlel contenido web real, que por defecto solo consta de la página predeterminada de Nginx que vimos antes, se presenta desde el directorio /var/www/html. Esto se puede cambiar, como hemos visto, modificando los archivos de configuración de Nginx, para servir otros sitios con el mismo servidor.
/etc/nginxdirectorio de configuración de Nginx. En él encontramos todos los archivos de configuración de Nginx.
/etc/nginx/nginx.confarchivo de configuración principal de Nginx. Esto se puede modificar para realizar cambios en la configuración general de Nginx.
/etc/nginx/sites-available/directorio en el que se guardan bloques de servidor por cada sitio creado. Nginx no utilizará los archivos de configuración de este directorio a menos que estén vinculados al directorio sites-enabled. Normalmente, toda la configuración del bloque de servidor se realiza en este directorio y luego se habilita estableciendo un enlace con el otro directorio.
/etc/nginx/sites-enabled/En este directorio se almacenan los bloques de servidor habilitados por sitio. Normalmente, estos se crean estableciendo vínculos con los archivos de configuración del directorio sites-available.
/etc/nginx/snippetseste directorio contiene fragmentos de configuración que pueden incluirse en otras partes de la configuración de Nginx. Los segmentos de configuración potencialmente repetibles reúnen las condiciones para la conversión a fragmentos.
/var/log/nginx/access.logcada solicitud a nuestro servidor web se registra en este archivo de registro, a menos que Nginx esté configurado para hacer algo diferente.
/var/log/nginx/error.logcualquier error de Nginx se guardará en este registro.

Si tienes algún comentario que hacer, al pie del post tienes un formulario para hacerlo.

Y si quieres contactar conmigo por cualquier otro asunto relacionado con el sitio, o te quieres suscribir para recibir un correo-e una vez al mes con las nuevas publicaciones, en la página de contacto , tienes otro formulario.

Deja una respuesta

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.