Cómo instalar una aplicación Node.js con Apache en Ubuntu 16.04

Node.js es un entorno de ejecución de JavaScript que te permite crear fácilmente aplicaciones de servidor. Utilizando el gestor de procesos PM2, puedes configurar una aplicación Node.js que se ejecute como un servicio en Ubuntu 16.04.

Ejecución de scripts Node.js como servicio

Aunque los scripts Node.js de open source pueden ejecutarse desde la línea de comandos utilizando la pantalla, ejecutar los scripts como un servicio utilizando el gestor de procesos PM2 proporciona a los scripts un comportamiento más robusto. Cuando se ejecutan como un servicio de esta manera, los scripts se reiniciarán automáticamente si el servidor se reinicia o el script se bloquea.

PM2 es un gestor de procesos para Node.js, con una amplia gama de funciones que puedes utilizar para controlar y gestionar tus scripts Node.js. Visita la página web oficial de PM2 para obtener más información sobre su uso.

Requisitos

  • Un servidor cloud con Linux (Ubuntu 16.04).
  • Un nombre de dominio que funcione y que esté vinculado al servidor.
  • Un servidor web Apache funcional, instalado y en funcionamiento.

Prueba del servidor cloud gratis con IONOS

Prueba ahora el servidor cloud de forma gratuita - ¡Dispón de 30 días para probar el servidor Cloud de IONOS sin coste!

REST API
Tráfico ilimitado
Virtualización VMware
sudo apt-get update
sudo apt-get install curl

Descarga el archivo de paquetes personales (PPA) de Node.js. Contiene una versión de Node.js más reciente que los repositorios de Ubuntu:

curl -sL https://deb.nodesource.com/setup_6.x -o nodesource_setup.sh

Ejecuta el comando nodesource_setup.sh para añadir el PPA a la caché de paquetes de tu servidor:

sudo bash nodesource_setup.sh
Nota

Este script actualizará el servidor automáticamente. No es necesario ejecutar apt-get update una segunda vez.

Después, instala Node.js:

sudo apt-get install nodejs

Esto también instalará automáticamente npm.

Por último, instala el paquete build-essential para npm:

sudo apt-get install build-essential

Crear una aplicación Node.js de ejemplo

Para este ejemplo, empezaremos creando un directorio separado en la raíz de documentos de tu página web para alojar aplicaciones Node.js:

sudo mkdir /var/www/html/nodejs

Crea el archivo file hello.js en este directorio:

sudo nano /var/www/html/nodejs/hello.js

Añade el siguiente contenido de ejemplo al archivo:

#!/usr/bin/env nodejs
var http = require('http');
http.createServer(function (request, response) {
    response.writeHead(200, {'Content-Type': 'text/plain'});
    response.end('Hello World! Node.js is working correctly.\n');
}).listen(8080);
console.log('Server running at http://127.0.0.1:8080/');

Guarda y sal del archivo y haz que el archivo sea ejecutable:

sudo chmod 755 hello.js

Instalar PM2

Utiliza npm para instalar PM2 con el comando:

sudo npm install -g pm2

Inicia el script de ejemplo hello.js que acabas de crear con el comando:

sudo pm2 start hello.js

Como root, añade PM2 a los scripts de inicio, para que se reinicie automáticamente si se reinicia el servidor:

sudo pm2 startup systemd

Backup Cloud con IONOS!

¡Deja atrás el tiempo de inactividad! La mejor forma de respaldar tu negocio con tu propio asesor personal incluido.

Simple
Seguro
Integral

Configurar Apache

Para acceder al script Node.js desde la web, instala los módulos de Apache proxy y proxy_http con los comandos:

sudo a2enmod proxy
sudo a2enmod proxy_http

Una vez completada la instalación, reinicia Apache para que los cambios tengan efecto:

sudo service apache2 restart

A continuación, tendrás que ajustar la configuración del proxy de Apache. Es necesario insertar las siguientes directivas en el bloque de comandos VirtualHost del archivo de configuración principal de Apache del sitio.

Por lo general, este archivo de configuración de Apache suele ser /etc/apache2/sites-available/example.com.conf en Ubuntu.

Nota

La ubicación y el nombre del archivo de configuración de Apache de un sitio pueden variar.

Edita este archivo con el editor que prefieras, por ejemplo, con el comando:

sudo nano /etc/apache2/sites-available/example.com.conf

Desplázate por el archivo hasta que encuentres el bloque de comandos VirtualHost, que tendrá el siguiente aspecto:

<virtualhost *:80></virtualhost>
ServerName example.com
    <directory " var www example.com html"></directory>
    AllowOverride All
    

Añade lo siguiente al bloque de comandos de VirtualHost:

ProxyRequests Off
    ProxyPreserveHost On
    ProxyVia Full
    <proxy *></proxy>
        Require all granted
    
    <location nodejs></location>
        ProxyPass http://127.0.0.1:8080
        ProxyPassReverse http://127.0.0.1:8080
    

Asegúrate de poner estas líneas fuera de cualquier bloque de comandos del directorio. Por ejemplo:

<virtualhost *:80></virtualhost>
ServerName example.com
    ProxyRequests Off
    ProxyPreserveHost On
    ProxyVia Full
    <proxy *></proxy>
        Require all granted
    
    <location nodejs></location>
        ProxyPass http://127.0.0.1:8080
        ProxyPassReverse http://127.0.0.1:8080
    
     <directory " var www example.com html"></directory>
     AllowOverride All
     

Guarda y sal del archivo, luego reinicia Apache para que los cambios tengan efecto:

sudo services apache2 restart`

Después de reiniciar Apache, puedes probar la aplicación viéndola en un navegador. Deberías ver el siguiente mensaje del archivo de prueba que creaste anteriormente:

Hello World! Node.js is working correctly.