NodeJS en la nube con Nodejitsu y Nodester
Elegí estas dos opciones PaaS porque son gratis, fáciles y excelentes para arrancar con una aplicación de NodeJS en la nube.
Los pasos los voy a mostrar con Linux, pero no deberían variar en Windows, o la Manzanita.
Antes de arrancar, es necesario tener nuestro package.json en orden, pueden ver del tema en este post.
Arranquemos creando un web server con Express de la forma simple:
mkdir sitioEnNode
cd sitioEnNode
npm install express
node_modules/express/bin/express
Ahora que tenemos nuestro servidor web con Express vamos a ver que tenemos creado el package.json donde tenemos las dependencias (por ejemplo a jade), asi que primero vamos a instalarlas:
npm install
Con esto vamos a instalar desde npm las dependencias declaradas en el package.json.
Iniciamos la aplicación para probar que todo esté en orden e ingresamos a http://localhost:3000:
node app.js
sitioEnNode server listening on port 3000 in development mode
Nodejitsu
Primero ingresamos a Nodejitsu, nos creamos un usuario y lo activamos
Luego nos queda instalar el cliente:
npm install -g jitsu
Si estas en linux, necesitas permisos de root para instalar con npm como global (parámetro -g), para eso ingresa sudo antes de toda la linea anterior.
Ahora nos queda autenticarnos, ya que es la primera vez que usamos el cliente:
jitsu login
Eso es todo, ahora hagamos un deploy!, vamos a la carpeta que creamos antes con nuestro web server:
cd sitioEnNode
jitsu deploy
Nos va a preguntar:
prompt: subdomain (sitioEnNode): sitioEnNode //nombre del subsominio
prompt: scripts.start (server.js): app.js //js del server
prompt: version (0.0.0): 0.6.12 //version de node
Estas preguntas son para configurarlas en nuestro package.json (si no estan las propiedades, las crea)
Y eso es todo para Nodejitsu, simplemente entramos al sub-dominio y tenemos el deploy de la app.
Nodester
Con Nodester es distinto, pero no mas difícil, utiliza Git para los deploys por lo que en realidad nuestro deploy es un repositorio más (nos proporciona otras formas también).
Primero tenemos que pedir un cupón para el acceso (por lo general no tarda mas de 2 días)
curl -X POST -d "email=you@gmail.com" http://nodester.com/coupon
Despues de recibir el cupón, instalamos el cliente
npm install nodester-cli -g
nodester user setup <user> <pass>
nodester user setkey
Para seguir con el ejemplo, vamos a deployar la misma aplicación que creamos al principio, así que nos movemos a la carpeta y creamos una app de nodester
cd sitioEnNode
nodester app create sitioEnNode app.js
El create nos va a dar el puerto donde va a estar corriendo la app, asi que confirmemos que tengamos nuestro app.js en ese puerto (o, en este ejemplo no va a ser necesario cambiar nada porque el autogenerado de express ya viene pensado para usar el puerto del proceso o 3000 si no tiene)
nodester app info sitioEnNode
Nos va a dar una url al repo de git donde se inició la app, por ejemplo: git@nodester.com:/node/git/algo/caracteresLocos, entonces ahora agregamos un remoto a ese repo:
En caso de no tener un repo git en esa carpeta, primero tenemos que iniciarlo y comitear los archivos
git init
git add .
git commit -m "commit inicial"
git remote add nodester git@nodester.com:/node/git/algo/caracteresLocos
git push nodester master
Y listo, cada vez que queramos subir cambios es un push al remoto nodester (último comando)
Acordate que es git, el comando push va a subir SOLO lo que se encuentre commiteado
Dominios Personalizados
Para cerrar con el deploy vamos a configurar un dominio personalizado. El subdominio alcanza para algunos casos, pero en otros queremos registrar nuestro dominio y apuntarlo al deploy.
A la fecha de este post Nodester y Nodejitsu no poseen DNS registrados en nic.com
Teniendo en cuenta eso, vamos a hacerlo con A-Record en nic.com.
Después de registrar el dominio, vamos a nuestra cuenta de nic.com, sección dominios y le damos al boton Launch.
Eso nos va a llevar a la pagina de administracion de dominios (Domain Manager), en esa pantalla vamos a tener una sección “DNS Manager”, la cual va a tener información cargada, si no esta la información y recién registran esperen un rato (mas o menos una hora).
Dentro de esa información van a ver esta linea (con una IP real):
A @ XXX.XXX.XXX.XXX
Y mas abajo un link launch, click a ese link!.
Lo vamos a hacer es modificar esa IP a la que nos da Nodester o Nodejitsu.
Les recomiendo no modificar el nombre del host ( @ ), ya que está relacionado con otras configuraciones.
Les dejo las IPs de Nodester y Nodejitsu
Luego de modificar y guardar, tienen que esperar un par de horas, pero mientras esperamos vamos a avisar que tenemos un dominio:
Nodejitsu
En el package.json agregamos una propiedad más “domain” donde ponemos nuestro/s dominio/s
//...otras configuraciones
"subdomain": "sitioEnNode",
"domains": [
"sitioEnNode.com",
"www.sitioEnNode.com"
],
//...otras configuraciones
Nodester
En la consola ejecutamos el appdomain de nodester para setear nuestro dominio.
nodester appdomain add sitioEnNode sitioEnNode.com
nodester appdomain add sitioEnNode www.sitioEnNode.com
Bueno, con eso ya tendríamos una aplicación en NodeJS deployada y con dominio copado, que tal?
Si tienen dudas, quieren agregar algo o cambiar, comenten!
Algunos Links:</p>