Cómo instalar una aplicación Node.js con Apache 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.
Con el saldo inicial de cada tarifa puedes usar el servidor cloud de IONOS durante 1 mes de forma gratuita (o hasta que se agote el saldo) y disfrutar de la combinación perfecta de rendimiento y seguridad.
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
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
- Copias de seguridad automáticas y fácil recuperación
- Gestión y planificación intuitiva
- Protección contra las amenazas basadas en IA
- Incluye crédito inicial de $5250 el primer mes
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.
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.