Como crear un servidor en AWS con varios sitios NODE Express Mongo
Published: 2019-07-23 03:31:51

---
title: Como crear un servidor en AWS con varios sitios NODE Express Mongo
published: true
description: Instalar varias aplicaciones en un servidor AWS
tags:
---


Amazon tiene una oferta de servicios muy amplia para IT (Amazon Web Services AWS). Uno de esos servicios es Lightsail; un servicio de Máquina Virtual análogo a Digital Ocean o Vulture.
Una máquina virtual es un sistema operativo completo donde tenemos la libertad de instalar lo que queramos, esto implica que también tenemos la obligación de administrarlo y estar pendiente de las actualizaciones de seguridad.


####¿Porque elegir Lightsail?

Aprender a usar Lightsail nos da la posibilidad de comenzar a utilizar AWS. Este es el primer paso para construir una Virtual Private Cloud VPC que pueda conectarse con otros servicios de Amazon. El precio de los servidores es muy competitivo y es adecuado para comenzar a hacer pruebas.


####Paso 1 : Crear una cuenta en AWS

Una vez creada la cuenta hay que seguir 5 pasos para configurar la seguridad de la cuenta creada, en resumen tenemos que crear una cuenta secundaria (de desarrollador) que no tenga permisos de facturación para que sea la cuenta con la que trabajemos.

En uno de los pasos se requiere utilizar un smartphone para realizar autenticación MFA. Aquí les sugiero instalar la autenticación con otro dispositivo - para tener dos-. Esto nos ahorrará dolores de cabeza porque si pierdes el dispositivo ya no podrás ingresar como cuenta maestra.

Video de Amazon
https://www.youtube.com/watch?v=Ip5NaS7RS6g

![](https://thepracticaldev.s3.amazonaws.com/i/byvwnefu7fkj3knz7prt.png)

###Registrar Cuenta

El procedimiento es muy sencillo y hay muchos tutoriales al respecto

https://portal.aws.amazon.com/gp/aws/developer/registration

###El servicio que usaremos es Lightsail

https://aws.amazon.com/es/lightsail/


##Instrucciones Básicas  - Crear instancia de Lightsail


En resumen AWS nos permite usar configuraciones predeterminadas  para nuestro servidor usando el servicio de BITNAMI, esto quiere decir que podemos elegir un servidor previamente configurado con los programas que necesitamos para que funcione como servidor NODE.

Debemos crear una instancia MEAN (Mongo Express Angular Node). ¿Por qué no elegir la opción NODE? - porque MEAN incluye la configuración de base de datos.

![](https://thepracticaldev.s3.amazonaws.com/i/sgsi735zwa2m68bppmnm.png)

Una vez creado el servidor lo podremos ver ya listo en web

![](https://thepracticaldev.s3.amazonaws.com/i/3t1adboahmzvelene4mq.png)


En nuestro panel de control también estará listo

![](https://thepracticaldev.s3.amazonaws.com/i/23hq7mp4ksw4m713uth9.png)



Para conectarnos al sistema operativo podemos utilizar una conexión SSH o directamente con la terminal web.
![](https://thepracticaldev.s3.amazonaws.com/i/d9yp3y2eqaemnos8p8ku.png)

![](https://thepracticaldev.s3.amazonaws.com/i/dnq95ekaax77hoc8bs7y.png)


Nuestro  servidor tiene como servidor web apache y lo que haremos es configurar varios sitios node - express, para lograr esto tendremos un directorio con todas las aplicaciones y un servidor mongo.

Este es el contenido del servidor, el directorio “apps” es donde estan nuestros sitios web/ aplicaciones.

![](https://thepracticaldev.s3.amazonaws.com/i/fo912dyk3vn9lcz3puy9.png)


Lo único que falta configurar es la seguridad del servidor mongo

Vamos a requerir la contraseña del usuario actual “BITNAMI” de nuestra sesión esta contraseña esta en el archivo bitnami_applicaction_password

Para ver el password ejecuta 

cat bitnami_applicaction_password

Copiar el password

Ejecutamos el siguiente comando para entrar como administrador a mongo

mongo admin --username root --password MY_BITNAMI_APPLICATION_PASSWORD


Lo que necesitamos hacer es crear una base de datos y agregar un usuario

Use lab_celeb

db.createUser( {user:”el usuario” , pwd: “el password”, roles:[“dbOwner”]})

Para importar un archivo de json a una coleccion

mongoimport -u root -p BitnamiPassword --authenticationDatabase "admin" --db lab_celeb --collection celebridades --file ./seed_celebridad.json --jsonArray


Paso 2: Organizar las aplicaciones  

En el directorio “home” (el directorio donde entramos al iniciar en la consola) monte un directorio con todas las aplicaciones

mkdir apps

cd apps

Para montar una aplicación hacemos un git clone directamente en el directorio apps. Después un npm install y en caso de los proyectos con VUE  npm run build

![](https://thepracticaldev.s3.amazonaws.com/i/b3mos95jb15gi41sg6yt.png)


La conexión con MONGO va a requerir que usemos un usuario y password.

![](https://thepracticaldev.s3.amazonaws.com/i/s3mq3zz6mq70h17hlk52.png)


Para correr la aplicación en modo desarrollo usamos nodemon. En producción usamos el package “forever”

Instalar forever:
sudo npm install -g forever
https://www.npmjs.com/package/forever



##Para ejecutar una aplicación

Forever start app.js

Finalmente debemos actualizar el firewall para que pueda recibir conexiones a otros puertos. De forma predeterminada solo está habilitado la comunicación con el puerto 80

Para que puedan funcionar nuestra aplicación

Entrar a Firewall

Para definir que puertos abrir organice las aplicaciones de la siguiente forma: puerto 3000 al 3020 estarán dedicados a APIs. Puertos del 4000 al 4020 estarán dedicados al las aplicaciones front.

###Asignar una IP Fija al servidor

Hasta este momento el servidor tiene una IP que cambiará cada vez que se reinicie el servidor. Para asegurar que nuestro servidor tiene una IP determinada debemos crear una IP estática y asigarla al servidor


![](https://thepracticaldev.s3.amazonaws.com/i/ts9o4n13oj0w7mpvwenm.png)

![](https://thepracticaldev.s3.amazonaws.com/i/fw6r0hpr9q67w4y8ld09.png)