Como instalar la última version de NodeJS en Ubuntu (VirtualBox) y trabajar en Windows

Respuesta rápida

Escribir las líneas de código Bash una a una en la consola Linux, escribir y guardar el código javascript para montar el servidor, ejecutar el archivo guardado en la consola Linux e introducir la dirección en el navegador.

Respuesta completa

Antes de comenzar, primero se debe haber configurado VirtualBox correctamente siguiendo los pasos del post Cómo instalar y configurar VirtualBox para comunicar SO Host Windows y Guest Ubuntu. Por lo tanto, en este post se da por hecho de que contamos con el trabajo anterior realizado. A partir de entonces solo hace falta instalar NodeJS. Para los que todavía no lo tienen muy claro…

¿Qué es NodeJS?

Malamente hablando, es una alternativa a PHP, ya que te permite programar con javascript en la parte del servidor. Existen otras alternativas a PHP como Ruby on Rails (programando en Ruby) o Django (programando en Python), pero el potencial de NodeJS es la facilidad de manejar un solo lenguaje de programación tanto en la parte del cliente como en la parte del servidor. Además, si lo combinas con MongoDB (alternativa a MySQL), también las llamadas y la estructura de la base de datos se hace en javascript. Como dato adicional, esta optimizado para que sea ligero, rápido, escalable, asíncrono y con arquitectura orientada a eventos, de tal modo que si se tiene pensado hacer una web o una aplicación que corra a tiempo real, esta es una buena elección.

Instalando NodeJS

La última versión de NodeJS se encuentra en el repositorio de Chris-Lea. A resumidas cuentas, hay que copiar las siguientes líneas, una a una en la consola Linux:

sudo apt-get install python-software-properties
sudo add-apt-repository ppa:chris-lea/node.js
sudo apt-get update
sudo apt-get install nodejs

Una vez finalizado se puede comprobar la versión de NodeJS con su página oficial. En mi caso:

node --version
#v0.10.21

Ahora, para testear que funciona, haremos nuestro Hola Mundo. Para ello se crea un archivo -yo la he puesto en la carpeta personal- llamado hiWorld.js y dentro pegamos el siguiente código javascript:

//hiWorld.js
var http = require('http');
http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hello World\n');
}).listen(8000);
console.log('Server running');

Este código sencillamente hace correr una página web en el localhost a través del puerto 8000 donde se muestra el texto Hello World. Buscando un símil con wampServer, sencillamente es activar el servidor. Por tanto, lo único que hay que hacer para que funcione es arrancar el archivo con el comando node en la consola Linux:

node hiWorld.js

Todo esto se ha escrito dentro de la maquina virtual, y lo que nos interesa ahora es poder visualizarlo en el SO Host Windows. Por lo tanto, habrá que introducir la IP de la máquina virtual y el puerto correspondiente.

http://192.168.1.138:8000

Para mi gusto, por comodidad, preferiría obviar introducir el puerto. Así que para ello se cambia a poner el puerto por defecto 80.

//hiWorld.js
...
}).listen(80);
...

Pero, el puerto 80 necesita privilegios de administración. Por lo tanto, para levantar el servidor habrá que añadir sudo:

sudo node hiWorld.js

Y finalmente se podrá acceder a la página escribiendo en la dirección la IP:

http://192.168.1.138

A su vez, tampoco me gusta ver la dirección IP. ¿Y si pudiera escribir un nombre más humano, como por ejemplo, http://ubuntuchacho.com? Se puede. Para ello habrá que engañar a nuestro ordenador de tal modo que cuando se escriba la dirección ubuntuchacho.com, éste redireccione a la IP que nosotros queramos.
Nos ponemos manos a la obra, hay que ir al archivo C:\Windows\System32\drivers\etc\hosts, dar permisos de escritura al usuario normal y añadir la siguiente línea (en mi caso, añado mi ejemplo):

#direccionIP    nombreDominio.com
192.168.1.138	ubuntuchacho.com

Y… ¡Ya está! Ahora cada vez que se introduzca en el navegador ubuntuchacho.com entraremos a nuestra web NodeJS de nuestra máquina virtual.