Toda aplicación web tiene dos divisiones fundamentales: el frontend y el backend. A la hora de decidir qué lenguaje utilizar para el desarrollo, un programador a menudo considera la disponibilidad de un framework que facilite sus tareas. Este factor, junto con la facilidad de despliegue a producción y mantenimiento futuro, suele determinar qué herramientas emplear para un determinado trabajo. En esta guía aprenderás cómo instalar stack MEAN en Ubuntu 20.04 (MongoDB, Express, Angular y Node)
Antes de comenzar, repasemos los componentes del stack y su propósito:
- MongoDB es un sistema de bases de datos no relacionales que goza de gran popularidad. En vez de utilizar tablas para almacenar datos, lo hace en documentos con una estructura similar a JSON.
- Express es un framework minimalista para el desarrollo de aplicaciones que empleen NodeJS. Provee muchas herramientas que lo hacen ideal para la creación de APIs.
- Angular es un framework para el desarrollo de aplicaciones web dinámicas para distintas plataformas. Actualmente Google se encarga del mantenimiento de Angular.
- Node actúa como el cimiento del stack, respondiendo ante eventos y manejando de forma eficiente las conexiones a la aplicación.
Requisitos previos para instalar stack MEAN en Ubuntu
- Completar los pasos detallados en las guías Configuración inicial de un servidor con Ubuntu 20.04, Cómo instalar y configurar MongoDB en Ubuntu 20.04 y Cómo asegurar MongoDB para producción.
- Verificar que exista una regla en el cortafuegos de Donweb que permita el tráfico entrante al puerto 8000/TCP. Si necesitas asistencia, puedes consultar el artículo Firewall en la sección de ayuda.
Paso 1: Instalación de Node
Entre las alternativas disponibles para instalar Node y herramientas relacionadas, la más directa es a través de NVM (Node Version Manager). En primer lugar, instala el gestor mediante el siguiente comando. Reemplaza v0.38.0 con la versión más actual que se encuentre disponible en el link anterior.
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh | bash
A continuación, abre una nueva terminal o ejecuta source ~/.bashrc
para poder incorporar las variables de entorno necesarias para NVM. Luego instala la versión estable más reciente de Node (16.14.0 en este caso):
nvm install 'lts/*'
nvm list # Verifica las versiones disponibles
Es importante destacar que junto con esta instalación también se agrega npm
, el gestor de paquetes de Node. Para verificar las versiones instaladas puedes usar los siguientes comandos:
node --version
npm --version
Después de tener disponible ambas utilidades, en el próximo paso instalaremos el resto de los componentes necesarios.
Paso 2: Instalación de Express y Angular
Ahora que dispones de npm
, ejecuta los siguientes comandos para iniciar un nuevo proyecto en un nuevo directorio llamado app. A continuación, instalarás Express, Angular, y el driver de MongoDB para Node en ese directorio que alojará tu aplicación. En particular, npm init
genera el archivo package.json para guardar los metadatos del proyecto.
mkdir app && cd app
npm init -y
npm install express @angular/cli mongodb
En caso de que se te pregunte si deseas compartir datos de uso de forma anónima con Google, ingresa n y presiona Enter.
Paso 3: Creación del archivo index.js
Para comenzar, crea el archivo index.js:
nano index.js
y agrega el siguiente contenido:
const express = require('express');
const MongoClient = require('mongodb').MongoClient;
const app = express();
const usuario = process.env.USUARIO_MONGO;
const pass = process.env.PASS_MONGO;
app.get('/', (req, res) => {
MongoClient.connect('mongodb://${usuario}:${pass}@localhost:27017',
{ useNewUrlParser: true, useUnifiedTopology: true }, (err, client) => {
if (err) throw err;
const db = client.db('sistema');
db.collection('usuarios').findOne({}, (findErr, result) => {
if (findErr) throw findErr;
const { nombre, edad, estado } = result;
res.send(`${nombre} tiene ${edad} años y se encuentra ${estado}.`);
client.close();
});
});
});
app.listen(8000);
module.exports = app;
Por motivo de que MongoDB requiere autenticación, necesitarás indicar el usuario y la contraseña que utilizarás para acceder a la base de datos. Incluir las credenciales en texto plano dentro de un archivo de código es una mala idea por cuestiones de seguridad. Por lo general, se prefiere colocar cualquier dato sensible en variables de entorno y acceder a estas desde el código.
Para crear temporariamente las variables USUARIO_MONGO y PASS_MONGO, haz lo siguiente luego de reemplazar tu_contraseña_aqui por el dato correspondiente a adminsistema:
export USUARIO_MONGO="adminsistema"
export PASS_MONGO="tu_contraseña_aqui"
Ahora sí puedes servir el archivo index.js a través de Node:
node index.js
El resultado debería ser el siguiente al abrir el navegador con la IP del servidor y el puerto 8000:
En este punto ya dispones de una aplicación simple funcionando con Node, Express, y MongoDB. La inclusión de Angular en el esquema del desarrollo está fuera del alcance de este artículo por su complejidad.
Conclusión
En este artículo aprendiste cómo instalar los componentes del stack MEAN en Ubuntu 20.04. Además, escribiste una aplicación simple con Node, Express y MongoDB, incluyendo la autenticación mediante variables de entorno.