NodeJS Server: Instalar servidor de producción

Vamos a instalar un servidor de producción para aplicaciones de ReactJs con Node.js

PREREQUISITOS

  • Un servidor con Debian 9 instalado y todas las medidas de seguridad requeridas.
  • Un nombre de dominio asociado al servidor y una ip estática.
  • Instalado un servidor web como Apache2.
  • Configuración de certificados usando Let’s Encrypt.

Paso 1: Instalar Node.js y NPM

Para instalar Node.js primero se debe de descargar el script de instalación.

curl -sL https://deb.nodesource.com/setup_13.x | -E bash -

Instalar Node.js, NPM y los paquetes adicionales.

apt-get install gcc g++ make build-essential nodejs -y

Actualizar el sistema.

apt-get update && apt-get upgrade -y

Verificar las versiones.

node -v
npm -v

Paso 2: Crear una prueba de aplicación Node.js

Creamos una aplicación de prueba (las aplicaciones de node usualmente corren en los puertos 3000 o 3001 pero se pueden modificar).

mkdir -p /var/www/html/app
nano /var/www/html/app/server.js

Ahora se copia lo siguiente.

const http = require('http');

const hostname = '192.168.43.31';
const port = 3000;

const server = http.createServer((req, res) => {
	res.statusCode = 200;
  	res.setHeader('Content-Type', 'text/plain');
  	res.end('This is the Main App!\n');
});

server.listen(port, hostname, () => {
  	console.log(`Server running at http://${hostname}:${port}/`);
});

Se guarda el archivo y se sale.

Paso 3: Instalar PM2

PM2 es un administrador de procesos para aplicaciones de Node.js. Hace posible demonizar las apps para que corran en el background como un servicio.

Utilice NPM para instalar la última versión de PM2.

npm i -g pm2@latest

Para poder utilizar la aplicación como servicio primero nos colocamos en la carpeta donde se creo.

cd /var/www/html/app/

Luego ejecutamos.

pm2 start #nombre_de_la_app

Para hacer que PM2 se ejecute cada vez que se inicia el servidor, se ejecuta el comando.

pm2 startup systemd

Para guardar la lista de procesos de PM2 se ejecuta.

pm2 save

Para saber más sobre pm2 puede visitar este enlace.

Paso 4: Accesar prueba desde explorador web

Accesar a la dirección y puerto que se estableció en la aplicación de Node en server.js:

const hostname = '192.168.43.31';
const port = 3000;

Entonces se ingresa la URL:

http://192.168.43.31:3000

IMPORTANTE: La dirección 192.168.43.31 se puede cambiar por la que sea necesaria.

Paso 5: Instalar Python 3

Ejecutar

apt install python3

Verificar instalación.

python3 -v

Paso 6: Instalar ReactJS

Ejecutar

npm install -g create-react-app

Paso 7: Instalar Nestjs

Ejecutar

npm i @nestjs/cli

Paso 8: Instalar MongoDB como motor de BD

Importar la llave pública.

wget -qO - https://www.mongodb.org/static/pgp/server-4.2.asc | apt-key add -

La operación debe responder con OK. Sin embargo, si se recive un error se debe instalar gnupg.

apt-get install gnupg

Se vuelve a intentar la importación de la llave pública.

Se debe crear la lista de archivos.

echo "deb http://repo.mongodb.org/apt/debian stretch/mongodb-org/4.2 main" | tee /etc/apt/sources.list.d/mongodb-org-4.2.list

Se actualiza el sistema.

apt-get update -y

Instalamos mongoDB.

apt-get install -y mongodb-org

Se inicia y se revisa el estado.

systemctl start mongod
systemctl status mongod