En post anteriores hemos visto como levantar una instancia EC2 y cómo conectarnos a ella vía SSH pero esto nos sirve de poco. Por ello, en este post veremos cómo desplegar una aplicación hecha con NodeJS.
Desde nuestro terminal (y una vez conectados, vía SSH), lo primero que haremos será actualizar la lista de paquetes disponibles y sus versiones con el siguiente comando:
apt-get update
Posteriormente instalaremos NodeJS y su gestor de paquetes npm:
apt-get install -y nodejs npm
La opción -y del comando install nos sirve para que por defecto acepte los mensajes de confirmación.
Después clonaremos desde un repositorio GitHub la aplicación que queremos desplegar (en este caso hemos escogido un ejemplo que usan los chicos de codely.tv):
git clone https://github.com/juanmaguitar/fullstack-mini-project.git "$HOME/application"
La directiva «$HOME/application» creará un directorio «application» donde se clonará la aplicación.
Una vez que hemos hecho el clone, vamos a posicionarnos en un commit concreto (que sabemos que funciona):
cd application git checkout 99c6efa
Ahora procederemos a realizar la instalación de la aplicación (posicionados dentro del directorio application):
npm install
Y por último procederemos a arrancarla:
node app.js
El mensaje de respuesta del terminal será el siguiente:

Tal como nos indica el mensaje, la aplicación estará disponible en el puerto 3000 (sustituid la ip por la de vuestro servidor) por lo que si introducimos la siguiente url en el navegador:
http://35.180.116.253:3000
Pero esto no será así, porque si recordáis, cuando levantamos nuestra EC2, el Secuity Group (SG) que creamos solo incluía una política de conexión de entrada (inbound) que era la de la conexión SSH.
Para poder ver nuestra aplicación funcionando, deberíamos permitir la conexión entrante al puerto 3000 por lo que para ello deberíamos añadir esta política al SG (no es necesario reiniciar).
Con esto, ya tendríamos nuestra aplicación desplegada mostrando un magnífico «hello world»:

En el siguiente post os explicaré como hacer que vuestra aplicación arranque automáticamente cuando el servidor se reinicie usando pm2.
Espero que os haya servido de ayuda, y os animo a probar a desplegar otro tipo de aplicaciones.
2 comments On EC2: Desplegando una aplicación NodeJS.
me sirvio de mucho tu post, te lo agradezo.
tengo una duda y es que si hay alguna forma en la que no tenga que colocar el puerto si no solo la direccion.
por ejemplo http://www.miapp.com:3000
que solo sea http://www.miapp.com
Hola, ¿sí encontraste cómo hacerlo?