permalink

11

Publicando tu aplicación #nodejs

Una vez escritas tus aplicaciones, el siguiente paso, es buscar hosting. Recuerdo hace unos cuantos meses cuan díficil era conseguir un servicio de hosting que soportara node.js, mucho menos uno que lo ofreciera de manera gratuita, particularmente tarde en conseguir una invitación para Nodester como un mes en nodejitsu otros 2 meses y así. Actualmente todo este tema esta bastante maduro, y ahora hay algunos que lo único que ocupas es instalar las herramientas para la consola y ya estas listo.

En estos días, hay empresas que se dedican solo a ofrecer servicios para node.js, lo cual esta bastante bien mientras hay otras cuantas que ofrecen el servicio como parte de su stack. En este post veremos algunos de ellos y como funcionan. Si no te interesa un servicio de terceros y prefieres alojar tu propio servicio ve aqui.

Para mantener un orden, tratare de listar cada una de los sitios que ofrecen este servicio (sin ningún orden, bueno los que solo ofrecen node.js hosting primero):

Es una lista larga. Asi que no hay excusa para que no empieces a usar node.js pues como mencione en el artículo anterior, la comunidad
esta bastante preocupada en ofrecer lo mejor para todos, y pues todos los servicios listados anteriormente son bastante eficientes. Yo les voy a hablar de los que son Open Source pues bien merecido se lo tienen.

Nodester

Nodester Logo

Empezare con nodester (100% Open Source) pues fue de los primeros (o él primero) en ofrecer hosting de manera gratuita. En uno de los videos se explica que la principal razón por lo que lo hacian de gratis es porque no habia ningún otro servicio que lo ofreciera. Tienen como fílosofia PaaS (Plataforma como Servicio). Aparte tiene como respaldo los servidores de Amazon y Rackspace, además implementa una RESTful API diseñada para no utilizar VPSs.

Para empezar a usar a nodester ocupas, tener instalado curl: * Muchos de los pasos funcionan para cloudno.de, beje.us.

curl -X POST -d "email=correo@electronico.com"

http://nodester.com/coupon

Cruza los dedos y espera por tu cupon, ellos semanalmente (a veces hasta 3 veces por semana), envian cupones a todos los que estan en la lista de espera. Si quieres acelerar el proceso escribles un twitt a @nodester.

Una vez aceptado, instala las herramientas de consola:

> npm install -g nodester-cli
> nodester user setup USUARIO PASSWORD
> nodester user setkey ARCHIVO.PEM

Y crea tu aplicación:

> nodester app create APPNOMBRE SERVER.js
// donde SERVER.js es tu archivo con el que inicia la aplicación.

Debo de aceptar que es de las APIs más fáciles de utilizar, además esta basada en git, lo cual es de gran ayuda.

> nodester app create myapp
> nodester app info myapp
> git remote add nodester LA_URL_QUE_VIENE_DE_APP_INFO_
// y luego simplemente haz un push:
> git push nodester master

Ve a http://myapp.nodester.com y podras ver tu aplicación ya en nodester. Puedes encontrar más información en la documentación de nodester. Por el momento Nodester se encuentra trabajando en un script que permita crear un servidor nodester propio en nuestro localhost, datacenter o nube publica.

nodejistu

Nodejitsu

Tienen como filosofia SaaS (Software como servicio) y el Open Source & Repositorios extras, además proveen bases de datos noSQL como: “couchdb”, “mongodb”, “redis” a través de los principales proveedores.

La forma más fácil de iniciar con nodejistu es a través de telnet o nc:

> telnet nodejitsu.com
// ó
> nc jitsu.com 23

Ambos métodos son bien funcionales, ya que nodejistu esta en “extended private beta” ocupas un poquito de suerte para lograr entrar, pero si eres bueno con él IRC entra a freenode y unete a el canal de nodejitsu :: #nodejistu y pide por ella (así consegui el mio). Update: Al parecer por los momentos no estan ofreciendo invitaciones pero si en los próximos dias. Esten atentos.

Bueno una vez que ya estas dentro lo que puedes hacer es bien simple:

> npm install jitsu -g
> jistu login // El clásico auth
> jitsu deploy // en el folder de tu aplicación.
// Listo

Super fácil, ¿eh? Claro durante cada uno de los pasos te piden información acerca del nombre de tu aplicación y otras cosas. De preferencia ten tu propio package.json aquí un artículo de como construirlo o instalate el require-analyzer con npm install require-analyzer -g.

Una vez finalizado el jistu deploy te mostrara la url de tu aplicación que por lo general es: http://APPNOMBRE.nodejistu.com

Heroku

Heroku sera del último que hable pues los demás actuan de similar forma. Si ya haz trabajado con heroku todo el proceso es similar. De igual forma heroku ofrece servidores de node.js gratuitos (claro si quieres aumentar la capacidad de tu server tienes que pagar). Para empezar tienes que tener tu estación de trabajo lista para trabajar con heroku, ocupas una cuenta y que tus keys esten autorizadas, de igual forma necesitas tener instalado el toolbelt instalado:

// en el caso de un UBUNTU
> apt-add-repository 'deb http://toolbelt.herokuapp.com/ubuntu ./' curl http://toolbelt.herokuapp.com/apt/release.key | apt-key add -
> apt-get update
> apt-get install heroku-toolbelt // en el caso de MacOS ya existe un paquete
> curl http://assets.heroku.com/heroku-toolbelt/heroku-toolbelt.pkg
> toolbelt.pkg

Luego haz heroku login para identificar tu sistema en heroku. Una vez hecho esto ya estas listo para hacer un deploy, de igual forma que con nodejistu ocupas tu package.json donde esten especificados todos los módulos que estas ocupando, como sigue:

// Package.json
{
  "name": "node-example",
  "version": "0.0.1",
  "dependencies": {
     "express": "2.2.0"
  }
}

Si queres probar tu paquete haz npm install y si termina en “OK” es porque esta bien hecho. Ya que heroku es un servicio un poco rubyista ocupas un Procfile donde describas el servicio que usas:

// Guardas esta linea con el nombre de:
Procfile web: node SERVER.js

Luego de esto haz los commits necesarios con git y luego:

> heroku create --stack cedar 

// Y haz deploy
> git push heroku master 

// Según la documentación de heroku ocupas iniciar manualmente el Procfile
> heroku ps:scale web=1 

// Si quieres probar si todo salio bien:
> heroku ps

Ahora bien la aplicación debe estar ejecutandose en los servidores, pero necesitas manualmente establecer el ambiente del servidor a producción

<code>&gt; heroku config:add NODE_ENV=production</code>

Si quieres leer más acerca de workers y todo el rollo de escalabilidad en heroku visita este link.

En conclusión

Como pueden ver existen una cantidad bastante considerable de servicios de hosting para node.js y muchos de ellos grátis, ¿excelente no? Si necesitas montar tu propio servicio existen ya muchos métodos bastante efectivos como el propio nodester o haibu, este último es el servidor que usa nodejitsu para su plataforma, asi que todo el trabajo que necesitas hacer es instalarlos en tu propio servidor, de igual forma existen métodos donde no ocupas de toda una plataforma, particularmente encontre de mucha ayuda este post de clock.co.uk, ellos usan una técnica bastante útil y aparte le sacan provecho a la versionización de los proyectos.

Definiciones:

  • SaaS: es un modelo de distribución de software donde el software y los datos que maneja se alojan en servidores de la compañía de tecnologías de información y comunicación (TIC) y se accede con un navegador web a través de internet. La empresa TIC provee el servicio de mantenimiento, operación diaria, y soporte del software usado por el cliente. Regularmente el software puede ser consultado en cualquier computador, esté presente en la empresa o no. Se deduce que la información, el procesamiento, los insumos y los resultados de la lógica de negocio del software están hospedados en la compañía de TIC.

Goodie:

El goodie de esta semana, es más que una buena práctica de npm, lo más lógico al instalar paquetes con npm necesitas hacer sudo verdad. Bueno lo más apropiado es no usar sudo, por el simple hecho de que hay modulos que interactuan con muchas otras cosas y desde el momento que lo instalas con sudo todos sus procesos necesita hacerlos como master lo cual no es muy bueno que digamos. Para este pequeño capricho o problema podemos cambiar los permisos a el directorio personal (que es donde se instalan los modulos) y cambiar de propietario a tu perfil de usuario mediante:

<code>&gt; sudo chown -R $USER /usr/local</code>

Una vez hecho esto ya no ocupas hacer:

<code>&gt; sudo npm install -g package</code>

disclaimer Hay muchas compañias que ofrecen hosting para node.js si se me olvida alguno, dejalo en los comentarios ;)

Gracias por leer hasta el final y no te olvides de darle un follow a @NodeHispano y dejar tu comentario.

Autor de éste Artículo

Alejandro Morales, Hondureño, Estudiante universitario, Astrolover, HTML5, CSS3, node.js aficionado. Gran observador de la conducta humana. Conocido en la internet y IRC como “alejandromg”. Puedes seguirlo en twitter, o ver en lo que esta trabajando en github, o en forrst.

  • roro89

    Excelente artículo muchas gracias.

  • Juanlu

    hola tengo problemas con Nodester, sigo los pasos pero no llega a arrancar la aplicación ¿me puedes ayudar?

    Gracias

    • carlosro_ec

      Hola Juanlu, puedes publicar el LOG de la app para poder ver el motivo de la falla.
      Saludos

  • Lordthesoft

    Hola tengo mi propio VPS mande un ticket para q me instalaran Nodejs , ya lo hicieron! fue su respuesta! amm donde puedo checar que esta instalado correctamente ?

    • carlosro_ec

      Hola Lordthesoft, puedes acceder a tu VPS a traves de SSH y ejecutar el siguiente comando

      $ node -v

      con eso verificas la instalación. Saludos

  • http://www.calbertts.com/ Carlos Alberto Castaño G.

    Gracias por la información!

  • http://www.facebook.com/daniel12san Daniel Vargas

    Hola tengo una pregunta haber si alguien me puede ayudar tengo un vps en dreamhost con node instalado, como puedo publicar una aplicacion de node para que al momento que accedan a mi dominio el servidor de node inicie, para no tener que hacerlo yo desde la consola

  • Jhontona

    Bueno el post, thanks

  • J

    Excelentes posts!, muchas gracias!

  • Escorpion178

    Excelente, gracias!!!