Instalar una infraestructura LEMP con Nginx en tu Raspberry

Este es uno de los capítulos del tutorial La Raspberry Pi. Primera primeros pasos.. Encontrarás los enlaces a todos los de capítulos, al final de este artículo.

Durante los diferentes capítulos de este tutorial, me he apoyado siempre en Apache como servidor web. Sin embargo, existen otras alternativas como puede ser Nginx que pueden ser tan válidas, y que últimamente, al menos a mi me dan mejor resultado. Así, que finalmente me he decidido a migrar la infraestructura LAMP de mi Raspberry, y también la del VPS a una infraestructura LEMP. ¿Una infraestructura LEMP? Si, se trata de una solución igual a la anterior, pero donde únicamente cambiamos el servidor web de Apache a Nginx. Si te preguntas de donde viene la E del acrónimo, indicarte que en inglés Nginx se pronuncia engine X.

Si quieres saber como montar una infraestructura LEMP, sigue leyendo este artículo, donde no solo te explico mis motivos para cambiar de Apache a Nginx, sino también te cuento como lo hice.

Instalar una infrasctructura LEMP

¿Porque me he decidido por una infraestructura LEMP?

Hace algún tiempo que estuve trasteando con Nginx. Sin embargo, en mis equipos no había montado este servidor WEB, aduciendo que quería mantener un clon de los hospedajes. Me refiero a que quería tener la misma estructura donde tengo alojadas las diferentes páginas, para que todo fuera lo mas parecido posible. Se trataba de reproducir en condiciones de laboratorio lo que sucedía en el hospedaje. De esta manera podía tener la misma configuración, y resolver los problemas que pudieran surgir en el hospedaje.

Sin embargo con el paso del tiempo la cosa ha ido evolucionando poco a poco. Finalmente decidí dar el salto, y cambiar parte de los hospedajes por un VPS. Desde este VPS podía servir varias páginas web, y lo tenía todo bajo mi control.

Llegados a este punto, ya ante la insistencia de Ángel de uGeek, me decidí a sustituir LAMP por LEMP, es decir Apache por Nginx, y el resultado ha sido realmente fructuoso. Por varios motivos,

  • LEMP sirve las páginas más rápido, o al menos esa es mi impresión. Por supuesto, todo esto es completamente subjetivo, no he hecho ningún tipo de medición, que pueda aportar para demostrarlo.
  • Consume menos recursos. Y esto si que lo he comprobado haciendo una monitorización. Y te puedo decir que he pasado de un 50% de consumo de RAM a un 35%, utilizando LEMP.
  • Las aplicaciones web son mas estables. Hasta el momento utilizando LAMP he tenido muchos problemas con el servidor de bases de datos MariaDB. Hoy en día con LEMP, todo funciona razonablemente mejor, y no he tenido ningún problema.

¿Que es LEMP?

Como te decía en la introducción, LEMP, no es mas que un acrónimo de,

  • Linux
  • Nginx. Este es el servidor web.
  • MySQL/MariaDB. El gestor de base de datos.
  • PHP/Perl/Python. El lenguaje de programación.

Instalando una infraestructura LEMP en tu Raspberry Pi

Tal y como hemos hecho en otros capítulos de este tutorial, te comentaré como es el proceso que he seguido para la instalación de una infraestructura LEMP en la Raspberry Pi. De la infraestructura LEMP, lo que ya tenemos instalado es Linux.

Como de costumbre y antes de comenzar con el proceso de instalación, actualizaremos nuestra Raspberry y nuestro sistema. Para ello, ejecutaremos las siguientes órdenes,

  • Actualizar la Raspberry Pi. En su caso puede ser necesario reiniciarla.
sudo rpi-update
  • Actualizar el sistema,
sudo apt update
sudo apt upgrade

Instalando Nginx, el servidor web de tu infraestructura LEMP

El primer paso que voy a realizar para tener mi infraestructura LEMP en funcionamiento es instalar es el servidor web, es instalar Nginx. Como ya te he comentado, en otros artículos de este tutorial, un servidor web, nos va a servir para infinidad de cosas, desde algo tan sencillo como alojar una página web estática o cosas mas complejas.

Para instalar el servidor web, solo tienes que ejecutar la siguiente orden,

sudo apt install nginx

Si hemos configurado un cortafuegos, tendrás que abrir los puertos. Si no tienes muy claro como hacer esto, te recomiendo que le pegues un vistazo al artículo Primeros pasos con tu VPS. Si bien este artículo habla de un VPS, es totalmente aplicable a la Raspberry Pi.

Una vez completada la instalación, podemos comprobar si todo ha ido correctamente, para ello desde Firefox, Chrome o le navegador que utilices te diriges a la dirección IP de tu Raspberry Pi. En mi caso particular,

http://192.168.1.48

Instalar MariaDB

Para instalar MariaDB ejecuta la siguiente orden,

sudo apt install mariadb-server

Estate atento, porque durante el proceso de instalación te preguntará la contraseña a utilizar. Esta contraseña la necesitarás posteriormente para instalar otras aplicaciones web.

Una vez instalado el servicio debemos segurizarlo. Para ello, ejecutaremos la siguiente orden,

sudo mysql_secure_installation

Instalar PHP

Una vez tenemos instalados tanto el servidor de páginas web Nginx, como el motor de bases de datos MariaDB, vamos a instalar el lenguaje PHP. Uno de los inconvenientes de Nginx es que no tiene procesamiento nativo de PHP como sucede con Apache. Así que es necesario instalar php-fpm fastCGI process manager. Así, le Nginx, pasará las solicitudes PHP a php-fpm para procesarlas.

Además necesitamos instalar el módulo de PHP que se encarga de gestionar la comunicación con MariaDB, tal y como hicimos en el caso de la infraestructura LAMP con Apache2,

sudo apt install -y php7.0 php7.0-fpm php7.0-mysql

Ahora tenemos que hacer un sencillo cambio en la configuración de nuestra instalación. Tenemos que editar el archivo php.ini con derechos de administrador y des-comentar la configuración del parámetro cgi.fix_pathinfo. Para comentar en la configuración de php.ini tan solo tenemos que añadir un punto y como al inicio. Con lo que tan solo tendremos que quitar ese punto y coma para descomentarlo.

Así, utilizando nano editamos la configuración,

sudo nano /etc/php/7.0/fpm/php.ini

Buscamos cgi.fix_pathinfo en el archivo, quitamos el punto y como del principio, y configuramos el parámetro a 0. Es decir, la cosa quedará de la siguiente manera,

cgi.fix_pathinfo=0

Ahora reiniciamos el preprocesador, ejecutando la siguiente orden,

sudo systemctl restart php7.0-fpm

Configurar Nginx

Lo último que nos queda es configurar Nginx, para ello editamos el archivo /etc/nginx/sites-available/default, de forma que nos quede con este aspecto,

server {
    listen 80 default_server;
    listen [::]:80 default_server;

    root /var/www/html;
    index index.php index.html index.htm index.nginx-debian.html;

    server_name server_domain_or_IP;

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

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

    location ~ /\.ht {
        deny all;
    }
}

Una vez tengas el archivo de configuración tal y como te he mencionado, guarda el archivo. Pero, lo que puedes hacer como siguiente paso es comprobar que la configuración es correcta. Para ello, ejecuta,

sudo nginx -t

En el caso de que haya cualquier error, lo corriges y punto. Si todo ha ido bien, tan solo reinicia el servidor web. Para reiniciar, ejecuta,

sudo systemctl reload nginx

Y ya lo tienes

Conclusiones

Desde luego si, todavía nos has montado tu infraestructura LAMP, antes de hacerlo prueba LEMP. Te recomiendo que leas este nuevo capítulo del tutorial y saques tus propias conclusiones. Es mas, te animaría a que instalaras LEMP siguiendo los pasos de este capítulo y lo probaras tu mismo. Esta es la mejor forma de convencerse.

Desde luego, tener una infraestructura LAMP o LEMP es un paso primordial para tener otra multitud de servicios, o simplemente para alojar tu propia página web. Así que te animo a que te montes tu página web en ru Raspberry con LEMP.


Más información,

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *