sábado, 20 de agosto de 2016

Ejemplo Bluemix: Hola Mundo

Para empezar tienes que tener tú ambiente de desarrollo instalado!!!!!
NOTA: Recuerda, estoy haciendo un ejemplo sobre un ambiente de desarrollo windows.

Listo, primer paso.
Crea un directorio para trabajar, por ejemplo:

cd c:\
mkdir trabajo
cd trabajo

Ahora ejecuta el siguiente comando:
npm init

completa la información que te pide el comando:





La información que viene entre parentesis en cada renglón es información por defecto de la aplicación. Después de ingresar toda la información, va a confirmar que la información que ingresaste es correcta:



 Ahora crea el archivo server.js con un editor de texto cualquiera (es muy importante que se llame server.js, sino no funcionará). Por ejemplo notepad e ingresa el siguiente código:

var express = require("express"); //requiere el paquete express de nodejs
var app = express();   //la aplicación utiliza express

var serverPort = 3000; //El puerto por el cual recibirá peticiones la aplicación
var serverHost = 'localhost'; //nombre del servidor

var server = app.listen(serverPort, serverHost, function() { //crea una aplicación escuchando con la información que indiquemos
    var host = server.address().address; //obtiene la dirección del servidor
    var port = server.address().port; //obtiene el puerto por el cual esta escuchando
    console.log('Recibiendo peticiones en http://%s:%s', host, port); //despliega mensaje en consola
});

Ya que hemos indicado que la aplicación requiere express ahora necesitamos instalar el paquete, de la siguiente forma:

npm install express --save


Así se instalan todos los paquetes en NodeJS, estos puedes ser creados por terceros o nosotros y los puedes encontrar en: https://www.npmjs.com/

Ahora ejecuta tú aplicación con el siguiente comando:
npm start

La aplicación no hace más que mandar el mensaje a consola.




Ahora agregaremos la función get de html al archivo js que hemos creado. Anexa el siguiente código:

app.get('/', function(req, res) {
    res.send('Hola mundo');
});

Los métodos que acepta una página cualquiera en internet son:
  •  Post, todos los parámetros pasan ocultos
  • Get, todos los parámetros pasan en la url
NOTA: Más información en: http://www.w3schools.com/tags/ref_httpmethods.asp
Ahora el código se debe ver como sigue:

var express = require("express");
var app = express();

var serverPort = 3000;
var serverHost = 'localhost';
app.get('/', function(req, res) {
    res.send('Hola mundo');
});

var server = app.listen(serverPort, serverHost, function() {
    var host = server.address().address;
    var port = server.address().port;
    console.log('Recibiendo peticiones en http://%s:%s', host, port);
});

Ejecuta nuevamente la aplicación:
npm start

La salida en consola sigue siendo la misma:



Abre el navegador de tú preferencia y ve a la URL que aparece en consola. La salida en el navegador debe ser similar a la siguiente:



Listo!!!! Ya tienes tú primer ejemplo en nodejs

Ahora modificaremos nuestro ejemplo y lo subiremos a Bluemix!!!!

 1. Abre tú cuenta de bluemix, sino la haz abierto aun hazlo desde aquí.
2. Módifica server.js de la siguiente forma:

var express = require("express");
var app = express();

var serverPort = process.env.VCAP_APP_PORT || 3000; //Estamos indicando que utilice la variable de ambiente de bluemix para el puerto
var serverHost = process.env.VCAP_APP_HOST || 'localhost';//Estamos indicando que utilice la variable de ambiente de bluemix para el host
app.get('/', function(req, res) {
    res.send('Hola mundo');
});

var server = app.listen(serverPort, serverHost, function() {
    var host = server.address().address;
    var port = server.address().port;
    console.log('Recibiendo peticiones en http://%s:%s', host, port);
});
Para ver más información sobre las variables de ambiente de Bluemix, las puedes encontrar aquí.

Ahora crea un archivo llamado manifet.yml en la carpeta que estas usando para tú ejemplo con el siguiente código:

---
applications:
- name : ejemplonodejspmb
  instances : 1
  memory : 256M

En la línea name estamos indicando como se llamará nuestra aplicación en bluemix. Debe ser único en todo bluemix, por lo cual no debes copiarlo literalmente.
En la linea instances estamos indicando cuantas instancia de nuestra aplicación tendremos (para resilencia)
En la línea memoría estamos indicando la memoria que tendrá cada instancia

Lo anterior es lo más esencial, pero sí necesitas explorar más, la documentación de cloud fundry es bastante extensa para este archivo.

Antes de publicar, conviene crear el archivo  .cfignore , sin el todos los archivos que componen la aplicación serán cargados a la nube, Bluemix tiene la capacidad de integrar los paquetes que necesita tú aplicación. Crea el archivo con el siguiente código para evitar que los paquetes de NodeJS sean cargados:

node_modules


Ahora vamos a desplegar a Bluemix nuestra aplicación, las regiones disponibles actualmente las puedes encontrar aquí. En mi caso desplegaré la aplicación en USA ejecutando el siguiente comando:

cf l -a api.ng.bluemix.net

NOTA: para ver otros comandos disponibles para CLI (Cloud Foundry Line Command, siempre se me olvida) están disponibles aquí.
Si tienes éxito en ingresar debes ver una pantalla como esta:





 Ahora estamos listos para desplegar la aplicación, ejecuta el siguiente comando desde el directorio donde se encuentra tú aplicación:

cf push

Si tienes éxito debes ver tú aplicación en ejecución en la consola de bluemix:

Haz click en VerApp:

Ahora puedes ver tú app con un subdominio en bluemix.

Listo!!!! Tienes el ejemplo de Hola mundo funcionando en la nube con una plataforma lista para trabajar!!!!!!