¿Cómo instalar Node.js y NGINX en Debian?

Actualizado el 16 de agosto, 2016. Por BlueHosting.

El mundo del desarrollo evoluciona rápidamente y es importante adaptarse a las nuevas tecnologías y ofertas en el mercado. Node.js es una plataforma de JavaScript que puede entregar contenido de manera dinámica y adaptable. JavaScript suele ser un lenguaje de navegador que está del lado del cliente, como HTML o CSS. Alternativamente, Node.js es una plataforma de JavaScript que está del lado del servidor, comparable a PHP. Node.js a menudo trabaja con otras aplicaciones de servidor populares como NGINX o Apache. En esta guía, NGINX es configurado para manejar solicitudes de archivos estáticos de front-end, y Node.js es configurado para manejar las solicitudes de archivos en back-end.

Instalar y configurar NGINX

Antes de comenzar la instalación de los paquetes de NGINX y Node.js, recomendamos seguir nuestra guía de conceptos básicos de seguridad.

Nota
Los pasos de este tutorial requieren que el usuario posea privilegios root en el servidor virtual privado. Asegúrese de ejecutar los pasos a continuación como root o usando el prefijo sudo.

  1. Para instalar NGINX ejecute:

    apt-get install nginx
    
  2. Inicie el servicio NGINX:

    service nginx start
    
  3. Diríjase al directorio sites-available de NGINX:

    cd /etc/nginx/sites-available/
    
  4. Cree un nuevo archivo de sitios disponibles dentro de ese directorio, remplazando ejemplo.com con su dominio real o dirección IP:
    Archivo: /etc/nginx/sites-available/ejemplo.com

    #Nombra a un servidor y declara el puerto de escucha
    server {
      listen 80;
      server_name ejemplo.com www.ejemplo.com;
    
      #Configura el directorio root que sirve de forma pública
      #Configura el archivo index que en el cual se sirvirá
      root /var/www/ejemplo.com;
          index index.html index.htm;
    
      #Estas líneas crean un bypass para ciertos nombres de rutas
      #www.ejemplo.com/test.js ahora está enrutado al puerto 3000 
      #en lugar del puerto 80
      location /test.js {
          proxy_pass http://localhost:3000;
          proxy_set_header Host $host;
      }
    }
    
  5. Cambie al directorio sites-enabled de NGINX:

    cd /etc/nginx/sites-enabled/
    
  6. Cree un enlace simbólico (symlink) al nuevo ejemplo en el archivo de sites-available:

    ln -s /etc/nginx/sites-available/ejemplo.com
    
  7. Elimine en enlace simbólico predeterminado:

    rm default
    
  8. Cargue la nueva configuración de NGINX:

    service nginx reload
    

Crear los directorios y el archivo Index HTML

Ya tiene configurado su NGINX. Sin embargo, el bloque del servidor ejemplo.com apunta a directorios y archivos que aún no han sido creados.

  1. Cree los directorios /var/www y /var/www/ejemplo.com.

    mkdir -p /var/www/ejemplo.com
    
  2. Diríjase al siguiente directorio:

    cd /var/www/ejemplo.com
    
  3. Cree el archivo Index HTML:
    Archivo: /var/www/ejemplo.com/index.html

    <!DOCTYPE html>
    <html>
    <body>
    
    <br>
    <br>
    
    <center>
    <p>
    <b>
    Si no ha completado nuestra guía, el siguiente botón no funcionará.
    </b>
    </p>
    </center>
    
    <center>
    <p>
    El botón está enlazado para probar test.js. La solicitud de test.js es pasada a través de NGINX y luego es gestionada por el servidor  Node.js.
    </p>
    </center>
    
    <center>
    <a href="test.js">
    <button type="button">Ir a test.js</button>
    </a>
    </center>
    
    </body>
    </html>
    

Instalar Node.js y escribir un servidor web

Ahora NGINX está escuchando en el puerto 80 y proporcionando el contenido. También está configurado para pasar las solicitudes de /test.js al puerto 3000. El próximo paso es instalar Node.js y luego escribir un servidor con Node.js. El nuevo servidor escuchará en el puerto 3000.

  1. Instale el gestor de versiones de Node, o Node Version Manager:

    curl https://raw.githubusercontent.com/creationix/nvm/v0.20.0/install.sh | bash
    
  2. Cierre y vuelva a abrir su terminal.

  3. Instale Node.js:

    nvm install 0.10
    
  4. Estando aún en el directorio /var/www/ejemplo.com, cree un servidor Node.js:
    Archivo: /var/www/ejemplo.com/server.js

    //nodejs.org/api for API docs
    //Node.js web server                         
      var http = require("http"),                           //Import Node.js modules
          url = require("url"),                             
          path = require("path"),
          fs = require("fs");
    
    http.createServer(function(request, response) {       //Create server 
    var name = url.parse(request.url).pathname;           //Parse URL
    var filename = path.join(process.cwd(), name);        //Create filename
    fs.readFile(filename, "binary", function(err, file) { //Read file
          if(err) {                                         //Tracking Errors
              response.writeHead(500, {"Content-Type": "text/plain"});
              response.write(err + "\n");
              response.end();
              return;
          }
          response.writeHead(200);                          //Header request response 
          response.write(file, "binary");                   //Sends body response
          response.end();                                   //Signals to server that 
     });                                                  //header and body sent
      }).listen(3000);                                      //Listening port 
      console.log("Server is listening on port 3000.")      //Terminal output
    

    La muestra del servidor Node.js es extraída de la propia API de Node.js.

  5. Ejecute una nueva sesión de screen:

    screen
    
  6. Presione return y arranque el servidor Node.js:

    node server.js
    
  7. Salga de screen presionando CTRL+a y luego d.

Cree un archivo Test.js

NGINX está escuchando en el puerto 80 y pasando cualquier solicitud de /test.js por el puerto 3000. Node.js está escuchando en el puerto 3000 y sirviendo a cualquier solicitud de archivo. El próximo paso es crear el archivo /test.js.

  1. Cree el archivo:
    Archivo: /var/www/ejemplo.com/test.js

    <!DOCTYPE html>
    <html>
    <body>
    
    <center>
    <h2> 
    Su servidor Node.JS está funcionando.
    </h2>
    </center>
    
    <center>
    <p>
    El botón abajo es técnicamente dinámico. Ahora está usando JavaScript tanto del lado del cliente como del lado del servidor. 
    </p>
    </center>
    <br>
    
    <center>
    <button type="button"
    onclick="document.getElementById('sample').innerHTML = Date()">
    Mostrar fecha y hora.
    </button>
    <p id="sample"></p>
    </center>
    
    </body>
    </html>
    
  2. Pruebe el servidor NGINX usando su dominio o dirección IP. Use el botón "Ir a test.js" para probar que su servidor Node.js esté sirviendo archivos. En la página de prueba, el botón "Mostar fecha y hora" ejecutará una pequeña prueba JavaScript del lado del cliente que devuelve la hora actual.

Ahora Node.js y NGINX están trabajando en conjunto. Enrute las solicitudes a un servidor o a otro dependiendo de sus necesidades. Node.js ofrece una enorme API con diversas herramientas. Con Node.js, un desarrollador puede mantenerse dentro de un lenguaje JavaScript mientras trabaja del lado del cliente o del servidor.

Para próximos pasos, investigue sobre tecnologías como WebSockets, iframes o framesets. Y para el desarrollo en JavaScript, pruebe Express.js, Ember.js, jQuery o los módulos del Node Package Manager.

Recursos adicionales

Puede consultar los siguientes recursos en busca de información adicional con respecto a este tema. Aunque este material es provisto esperando que sea útil, tenga en cuenta que no podemos dar fe de la actualidad o precisión de los contenidos externos.

¿QUÉ DESEAS SABER?

Intentaremos leer tu mente...