Índice
Introducción
Hoy te traemos los pasos de como configurar un servidor Nodejs en Ubuntu. Node.js es un entorno de tiempo de ejecución de JavaScript (de ahí su terminación en .js haciendo alusión al lenguaje JavaScript). Este entorno de tiempo de ejecución en tiempo real incluye todo lo que se necesita para ejecutar un programa escrito en JavaScript. . La plataforma funciona en Linux, macOS, FreeBSD y Windows. Aunque es posible ejecutar aplicaciones de Node.js vía línea de comandos, en este tutorial nos enfocaremos en su ejecución como un servicio. Esto significa que se reiniciarán durante el inicio o ante un fallo y que pueden usarse de forma segura en un entorno de producción.
Acá te guiaremos, como configurar un entorno de Node.js listo para producción en un servidor único Ubuntu 20.04. Este servidor ejecutará una aplicación de Node.js administrada por PM2 y suministrara a los usuarios acceso seguro a la aplicación mediante un proxy inverso de Nginx. El servidor de Nginx brindará HTTPS usando un certificado gratuito proporcionado por Let’s Encrypt.
Requisitos previos
Para comenzar debemos contar con lo siguiente:
- Un servidor Ubuntu 20.04, este debe disponer de usuario no root con privilegios sudo y un firewall activo.
- Un nombre de dominio que apunte a la IP pública de su servidor. En este tutorial se usará el nombre de dominio example.com en todo momento.
- Nginx instalado y configurado con SSL mediante certificados de Let’s Encrypt.
Una vez que cumpla con los requisitos previos, dispondrá de un servidor en el que funcionará la página de marcador de posición predeterminada de su dominio en https://example.com/.
Paso 1: Instalar Node.js
Lo primero que debemos hacer es instalar la versión más reciente de LTS de Node.js con los archivos de paquete de NodeSource.
Primero, instale el PPA de NodeSource para poder acceder a su contenido. Nos aseguramos de estar en su directorio de inicio y utilice curl para recuperar la secuencia de comandos de instalación para la versión más reciente LTS de Node.js de sus archivos.
$ cd ~
$ curl -sL https://deb.nodesource.com/setup_14.x -o nodesource_setup.sh
Puede inspeccionar el contenido de esta secuencia de comandos con nano o su editor de texto preferido:
$ nano nodesource_setup.sh
Cuando termine de inspeccionar la secuencia, ejecútela con sudo:
$ sudo bash nodesource_setup.sh
El PPA se agregará a su configuración y su caché de paquetes locales se actualizará de forma automática. Luego de ejecutar la secuencia de comandos de configuración de Nodesource, puede instalar el paquete de Node.js.
$ sudo apt install nodejs
Para verificar la versión de Node.js que instaló después de estos pasos iniciales, escriba lo siguiente:
$ nodejs -v
Output
v14.4.0
Nota: Cuando la instalación se realiza a partir del PPA de NodeSource, el ejecutable de Node.js se llama nodejs, en lugar de node.
El paquete nodejs contiene el binario nodejs y npm un administrador de paquetes para módulos de Node, por lo que no tendrá que instalar npm por separado.
npm utiliza un archivo de configuración en su directorio de inicio para hacer un seguimiento de las actualizaciones. Se creará la primera vez que ejecute npm. Ejecute este comando para verificar que npm esté instalado y crear el archivo de configuración:
$ npm -v
Output
6.14.5
Para que algunos paquetes de npm funcionen (por ejemplo, aquellos para los cuales de sebe compilar código de fuente), deberá instalar el paquete build-essential:
$ sudo apt install build-essential
Ahora dispondrá de las herramientas necesarias para trabajar con paquetes npm para los que se deba compilar código de la fuente.
Ahora que está instalado el tiempo de ejecución de Node.js, escribiremos una la aplicación de Node.js.
Paso 2: Instalar PM2
A continuación, instalaremos PM2, un administrador de procesos para aplicaciones de Node.js. PM2 permite implementar demonios en aplicaciones para que puedan funcionar en segundo plano como servicios.
Use npm para instalar la última versión de PM2 en su servidor:
$ sudo npm install pm2@latest -g
La opción -g indica a npm que instale el módulo de forma global, de modo que esté disponible en todo el sistema.
Primero, usaremos el comando pm2 start para ejecutar su aplicación, miAplicacion.js, en segundo plano:
$ pm2 start miAplicacion.js
Las aplicaciones que se ejecutan en PM2 se reiniciarán de forma automática si la aplicación se bloquea o se detiene, pero podemos dar un paso adicional para que se cargue en el inicio del sistema usando el subcomando startup. Este subcomando genera y configura una secuencia de comandos de inicio para iniciar PM2 y sus procesos administrados al iniciarse el servidor:
$ pm2 startup systemd
En la última línea del resultado obtenido se incluirá un comando que se ejecutará con privilegios de superusuario a fin de configurar PM2 para que se cargue en el inicio:
Output
[PM2] Init System found: systemd
sammy
[PM2] To setup the Startup Script, copy/paste the following command:
sudo env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup systemd -u sammy –hp /home/sammy
Ejecute el comando del resultado con su nombre de usuario en lugar de sammy:
$ sudo env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup systemd -u sammy --hp /home/sammy
Como paso adicional, podemos guardar la lista de procesos de PM2 y los entornos correspondientes:
$ pm2 save
De esta manera, habrá creado una unidad de systemd que ejecuta pm2 para su usuario en el inicio. Esta instancia de pm2, a su vez, ejecuta miAplicacion.js.
Inicie el servicio con systemctl:
$ sudo systemctl start pm2-sammy
Si en este momento se encuentra un error, es posible que necesite reiniciar, lo que puede hacer con sudo reboot.
Compruebe el estado de la unidad de systemd:
$ systemctl status pm2-sammy
Además de los subcomandos que ya abarcamos, PM2 proporciona muchos que le permiten administrar o buscar información sobre sus aplicaciones.
Detenga una aplicación con este comando (especifique App name o id de PM2):
$ pm2 stop app_name_or_id
Reinicie una aplicación:
$ pm2 restart app_name_or_id
Liste las aplicaciones actualmente administradas por PM2:
$ pm2 list
Obtenga información sobre una aplicación específica usando su App name:
$ pm2 info app_name
El monitor de procesos de PM2 se puede extraer con el subcomando monit. Con esto, se muestra el estado y el uso de CPU y memoria de la aplicación:
$ pm2 monit
Tenga en cuenta que si se ejecuta pm2 sin argumentos, también se mostrará una página de ayuda con uso de ejemplos.
Ahora que su aplicación de Node.js funciona y PM2 la administra, configuraremos el proxy inverso.
Conclusión
¡Exito! Si todos los pasos están ejecutados correctamente podremos hacer funcionar su aplicación de Node.js detrás de un proxy inverso de Nginx en un servidor de Ubuntu 20.04. Esta configuración de proxy inverso es suficientemente flexible como para proporcionar a sus usuarios acceso a otras aplicaciones o a contenido web estático que desee compartir.
Te puede interesar
Aperturar puertos en el firewall de Ubuntu Linux
Comprimir y descomprimir archivos en Linux .gz, .tar.gz, y .zip