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
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 manifest.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!!!!!!