Uno de los stacks (o pilas) más conocidos en el mercado del hosting es el famoso LAMP, que es un acrónimo derivado de Linux, Apache, MySQL/MariaDB y PHP (o a veces Python), sin embargo existe otro stack similar que recibe el nombre de LEMP, y que está compuesto por Linux, Nginx (se pronuncia “Engine-X”, de ahí la “E”), MySQL/MariaDB y PHP.
Estos stacks básicamente son un conjunto de software que hoy en día es la base de la mayoría de los servidores Linux que existen en el mundo, y en esta oportunidad vamos a ver cómo instalar un servidor LEMP.
Cabe mencionar que en realidad “servidor” LEMP no es el término más correcto, lo correcto como decíamos es stack LEMP o pila LEMP, sin embargo mucha gente opta por llamarlo servidor LEMP porque hace referencia a un servidor que tiene instalado el stack LEMP, así vamos a considerarlo como válido en este caso.
Contenido
¿Qué es un servidor LEMP?
Como decíamos, un servidor LEMP es un server destinado al alojamiento web y que tiene las siguientes tecnologías instaladas: Linux, Nginx, MySQL (o MariaDB) y PHP, los cuales funcionan como base para el sistema operativo, despacho de sitios, bases de datos e intérprete de PHP respectivamente.
Este stack es muy parecido a otro de nombre el llamado servidor LAMP, que simplemente reemplaza Apache por Nginx como servidor web. Si bien hace 10 años el stack LAMP era muchísimo más usado, hoy en día es LEMP quien lleva la ventaja, dado que Nginx es considerado un webserver muchísimo mejor que el viejo y querido Apache, de hecho de acuerdo con estadísticas de W3Techs, Nginx tiene una cuota de mercado de 34,1% actualmente (agosto de 2021) frente al 31,7% de Apache.
Sobre los componentes de este stack no hay mucho más que explicar, son los 4 ya mencionados, aunque podemos hacer un pequeño repaso de cada uno de ellos antes de meternos de lleno en el asunto de la instalación de LEMP.
El componente principal de un servidor LEMP es, por supuesto, Linux. El sistema operativo gratuito más querido y usado del mundo tiene una fuerte presencia en el mundo del hosting, y por supuesto en esta pila se vuelve infaltable al tratarse del sistema operativo que usará nuestro server. Cabe mencionar que no se suele usar Linux como tal, sino una de sus muchas distros, por ejemplo CentOS, Ubuntu, Almalinux, Debian, etc.
Nginx por su lado es un nombre menos conocido que Linux, pero claro, para cualquiera que lleve un tiempo en el mercado del hosting probablemente no será algo nuevo. Nginx es probablemente el mejor servidor web del mundo hoy en día, de hecho muchas veces hemos hablado de sus bondades y su excelente rendimiento frente al clásico Apache. Quizá el único competidor que está a su altura es LiteSpeed.
MySQL es un archiconocido motor de bases de datos relacionales, el más usado dentro de su nicho y uno de los sistemas de bases de datos más populares a nivel mundial. Como alternativamente a MySQL hay quienes prefieren utilizar MariaDB, que es un derivado de MySQL nacido luego de que Oracle comprara este último, un poco a raíz del temor de que se convirtiera en un software 100% de pago. Son muy similares entre sí, aunque se considera que MariaDB tiene un mejor rendimiento.
Finalmente tenemos a PHP, un lenguaje de programación que muchos quieren dar por muerto, pero que una y otra vez ha demostrado lo contrario, teniendo hoy en día una cuota de mercado de más del 70%, es decir, estadísticamente 7 de cada 10 sitios web usan PHP. Su facilidad de uso, baja curva de aprendizaje, fácil implementación y el hecho de ser gratuito hacen que este lenguaje sea el dominante en la industria del hosting.
Cómo instalar un servidor LEMP en Linux
En esta oportunidad veremos cómo realizar la instalación de LEMP en un entorno CentOS 7 y también en Ubuntu 20.04 LTS, aunque primero veamos cómo se realiza el proceso en CentOS. Si te interesa ver la instalación en Ubuntu entonces desplázate hacia abajo hasta la siguiente sección del artículo.
Primero lo primero: asegúrate de tener respaldos de cualquier información importante o sensible del sistema donde se realice la instalación, y como siempre, recuerda que no tomamos responsabilidad por cualquier problema que este tutorial pueda provocar en el sistema donde se ejecute el proceso de instalación de LEMP.
Instalar Server LEMP en CentOS
Sin más que agregar, ingresa a tu servidor por medio de SSH como root o con un usuario sudo, y demos inicio (quienes utilicen un usuario sudo recuerden agregar “sudo” al comienzo de cada comando).
Obviamente en este caso la parte de Linux ya está hecha, dado que el sistema operativo a usar es CentOS, así vamos directamente con la instalación del webserver. Para instalar Nginx vamos a añadir el repositorio Epel, un repo muy bueno y muy recomendado que incluye gran cantidad de software útil que podemos instalar fácilmente.
yum install epel-release
Cada vez que la terminal/ssh te solicite confirmación presiona “y” o “s” según el idioma de tu instalación de CentOS.
Con el repo de Epel instalado es hora de proceder a instalar Nginx:
yum install nginx
Y puedes iniciar Nginx inmediatamente con el siguiente comando:
systemctl start nginx
Para que Nginx arranque de forma automática luego de un reinicio no olvides configurarlo en systemctl de esta forma:
systemctl enable nginx
Y eso es todo para la instalación de Nginx. Así que vamos a proceder ahora con otro de los componentes de nuestro stack, en este caso el motor para las bases de datos, que será MariaDB.
Para instalar MariaDB ejecutemos el siguiente comando:
yum install mariadb-server mariadb
Y a continuación iniciamos el servicio MariaDB de esta forma:
systemctl start mariadb
También podemos agregarlo a systemctl para que arranque junto con el sistema en caso de reinicios:
systemctl enable mariadb
Algo muy importante respecto a MariaDB es que no viene con un password de root configurado, así que vamos a configurar uno rápidamente, para lo cual ejecutaremos un asistente muy útil de la siguiente forma:
mysql_secure_installation
Esta herramienta no solo nos permitirá establecer el password de root de MariaDB, sino que además nos solicitará confirmación respecto a varios puntos básicos de la seguridad del servicio.
Con Nginx y MariaDB listos es hora de pasar al componente final, que es nada más ni nada menos que nuestro querido PHP. En este caso vamos a instalar la versión 7.4. Para instalar esta versión de PHP fácilmente haremos uso de un repositorio llamado Remi, igual de bueno y útil que Epel. Una vez tienes esta parte lista, si tienes phpMyAdmin instalado (o bien desde la consola), puedes proceder a crear tu base de datos MySQL.
Instalemos el repo Remi de la siguiente forma:
yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
Y ahora vamos a habilitar la versión de PHP que deseamos instalar, en este caso la 7.4:
yum-config-manager --enable remi-php74
La instalación de PHP es super sencilla, solo que hay un detalle de por medio y es cuáles librerías deseamos tener instaladas, lo cual dependerá en gran parte de los requerimientos de programación de los sitios. Por otro lado, si estás siguiendo este tutorial solo para pruebas, entonces puedes directamente realizar una instalación básica:
yum install php php-mysqlnd php-fpm
Esta instalación básica de PHP contiene el propio PHP junto a las librerías de MySQL (para conectar con MariaDB) y de FPM (que se usará como servicio/daemon en conjunto con Nginx). Si deseas instalar otras librerías puedes hacerlo de la misma forma, con un comando similar a este:
yum install php-librería
Por supuesto tienes que reemplazar “librería” por la librería de PHP deseada, por ejemplo gd, gettext, fileinfo, etc.
Antes de echar PHP a correr como servicio por medio de PHP-FPM, tenemos que hacer una configuración básica del mismo, para lo cual tenemos que editar el archivo /etc/php-fpm.d/www.conf, en este ejemplo usaremos nano como editor, puedes usar el mismo u otro que te guste:
nano -w /etc/php-fpm.d/www.conf
Aquí debemos configurar las siguientes directivas:
user = nginx group = nginx listen = /var/run/php-fpm.sock listen.owner = nginx listen.group = nginx listen.mode = 0660
Guardamos los cambios e iniciamos PHP-FPM con el siguiente comando:
systemctl start php-fpm
Finalmente lo agregamos para que arranque junto con un posible reinicio del server:
systemctl enable php-fpm
Y eso es todo en este caso, si has seguido todos los pasos ya tendrás una instalación de LEMP en CentOS lista, ahora por supuesto te toca configurarla según tus requerimientos.
Instalación de Servidor LEMP en Ubuntu
El proceso es un servidor con sistema operativo Ubuntu es igual de sencillo que en CentOS, puede que incluso más sencillo, ya que no necesitamos activar repos adicionales, así que vamos a ponernos manos a la obra.
Lo primero que haremos es actualizar la información de todos los paquetes disponibles:
apt update
Y entonces sí podemos proceder con la instalación del servidor Nginx:
apt install -y nginx
Y a continuación haremos exactamente lo mismo para MariaDB:
apt install -y mariadb-server
Por supuesto si lo deseamos podemos correr ambos comandos combinados en uno solo, el resultado final será el mismo en cualquier caso.
Ahora que tenemos MariaDB instalado vamos a realizar el mismo proceso de securización y configuración de clave root que hicimos en CentOS:
mysql_secure_installation
Como siempre podemos personalizar las opciones que nos vaya indicando la herramienta, así que esa parte la dejamos a gusto del consumidor.
Lo siguiente es realizar la instalación de PHP. El default (dependiendo de cuándo realices este proceso) debería ser PHP 7.4 o bien uno de la rama 8.x, cualquiera de los dos estará bien. Sin más preámbulos, realicemos la instalación ejecutando el siguiente comando:
apt install -y php-fpm php-mysql
Al igual que en el caso de CentOS debemos tener en mente que esta instalación del ejemplo solo incluye librerías básicas, si tienes algún requerimiento de software particular puede que necesites instalar otras librerías adicionales por supuesto.
Recordemos que en Ubuntu los servicios se iniciarán automáticamente una vez instalados. Lo que sí haremos por las dudas es asegurarnos de agregarlos para que arranquen con el booteo del sistema:
systemctl enable nginx systemctl enable php-fpm systemctl enable mariadb
Y todo listo, con esto ya tendremos nuestro stack LEMP corriendo sobre Ubuntu, ahora como siempre toca realizar las configuraciones que mejor se adapten a nuestros requerimientos.
Conclusión
En esta oportunidad hemos visto en qué consiste un servidor LEMP y también como instalarlo en algunas distros muy populares como lo son CentOS y Ubuntu. LEMP es un acrónimo que refiere al software que compone el stack, en este caso Linux, Nginx, MySQL/MariaDB y PHP. Esta combinación de software es una de las más utilizadas en la industria del hosting, y se encuentra detrás de millones de sitios web a nivel mundial.
El stack LEMP es muy fácil de instalar, distros como Ubuntu ya incluyen todo el software necesario en sus repositorios predeterminados, mientras que en el caso de otras distribuciones como CentOS solo hace falta instalar un par de repositorios adicionales, y el proceso de instalación en todos los casos es muy sencillo, consistiendo en unos pocos comandos.
No caben dudas de que un servidor LEMP es de lo mejor para despachar sitios basados en PHP-MySQL, siendo fácil de instalar y usar, y por supuesto dando resultados excelentes, incluso mejores en comparación a su alternativa más popular, el stack LAMP.