Node.js es un entorno de tiempo de ejecución de JavaScript de código abierto y multiplataforma que se puede usar para ejecutar JavaScript fuera del navegador web. Se usa más comúnmente para crear aplicaciones web con conexiones bidireccionales en tiempo real, donde tanto el cliente como el servidor pueden iniciar la comunicación, lo que les permite intercambiar datos libremente. Node.js utiliza un modelo de E/S sin bloqueo y controlado por eventos que lo hace perfecto para aplicaciones con uso intensivo de datos que se ejecutan en dispositivos distribuidos.
En este tutorial, instalaremos Node.js y lo configuraremos para que se ejecute como servidor backend; luego, configuraremos Apache como servidor proxy frontend para Node.js.
Requisitos
- Un nuevo CentOS 8 VPS en la plataforma en la nube de Atlantic.net.
- Una contraseña raíz configurada en su servidor.
Paso 1:crear el servidor en la nube de Atlantic.Net
Primero, inicie sesión en su servidor en la nube de Atlantic.Net. Cree un nuevo servidor, eligiendo CentOS 8 como sistema operativo con al menos 1 GB de RAM. Conéctese a su servidor en la nube a través de SSH e inicie sesión con las credenciales resaltadas en la parte superior de la página.
Una vez que haya iniciado sesión en su servidor CentOS 8, ejecute el siguiente comando para actualizar su sistema base con los últimos paquetes disponibles.
dnf update -y
Paso 2:instalar Node.js
Puede instalar el repositorio de Node.js usando el siguiente comando:
curl -sL https://rpm.nodesource.com/setup_12.x | bash -
Una vez que el repositorio está instalado, puede instalar Node.js simplemente ejecutando el siguiente comando:
dnf install nodejs -y
Una vez que se haya completado la instalación, puede verificar la versión instalada de Node.js con el siguiente comando:
node -v
Deberías obtener el siguiente resultado:
v12.16.2
También puede verificar la versión de NPM con el siguiente comando:
npm -v
Deberías obtener el siguiente resultado:
6.14.4
Paso 3:Cree una aplicación Node.js de muestra
Primero, creemos un directorio para contener la aplicación Node.js:
mkdir project
A continuación, cambie el directorio a proyecto y cree una aplicación Node.js de muestra con el siguiente comando:
cd project nano app.js
Agregue los siguientes contenidos:
var http = require('http'); http.createServer(function (req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Welcome to Node.js Server'); }).listen(8080, "127.0.0.1"); console.log('Server running at http://127.0.0.1:8080/');
Guarde y cierre el archivo cuando haya terminado.
Su aplicación Node.js ahora está lista para funcionar en el puerto 8080. A continuación, inicie la aplicación con el siguiente comando:
node app.js
Deberías obtener el siguiente resultado:
Server running at http://127.0.0.1:8080/
El resultado anterior indica que su aplicación Node.js funciona correctamente.
A continuación, presione CTRL + C para detener la aplicación.
Paso 4:instalar y configurar PM2 para administrar la aplicación Node.js
PM2 es un administrador de procesos para la aplicación Node.js. Le permite mantener activa la aplicación Node.js para siempre, administrar Node.js, recargar Node.js sin tiempo de inactividad y facilitar las tareas comunes de administración del sistema.
Puede instalarlo usando el NPM como se muestra a continuación:
npm i -g pm2
Después de instalar PM2, cambie el directorio al proyecto e inicie la aplicación Node.js con PM2 como se muestra a continuación:
pm2 start app.js
Una vez que la aplicación se haya iniciado correctamente, debería obtener el siguiente resultado:
------------- __/\\\\\\\\\\\\\____/\\\\____________/\\\\____/\\\\\\\\\_____ _\/\\\/////////\\\_\/\\\\\\________/\\\\\\__/\\\///////\\\___ _\/\\\_______\/\\\_\/\\\//\\\____/\\\//\\\_\///______\//\\\__ _\/\\\\\\\\\\\\\/__\/\\\\///\\\/\\\/_\/\\\___________/\\\/___ _\/\\\/////////____\/\\\__\///\\\/___\/\\\________/\\\//_____ _\/\\\_____________\/\\\____\///_____\/\\\_____/\\\//________ _\/\\\_____________\/\\\_____________\/\\\___/\\\/___________ _\/\\\_____________\/\\\_____________\/\\\__/\\\\\\\\\\\\\\\_ _\///______________\///______________\///__\///////////////__ Runtime Edition PM2 is a Production Process Manager for Node.js applications with a built-in Load Balancer. Start and Daemonize any application: $ pm2 start app.js Load Balance 4 instances of api.js: $ pm2 start api.js -i 4 Monitor in production: $ pm2 monitor Make pm2 auto-boot at server restart: $ pm2 startup To go further checkout: http://pm2.io/ ------------- [PM2] Spawning PM2 daemon with pm2_home=/root/.pm2 [PM2] PM2 Successfully daemonized [PM2] Starting /root/project/app.js in fork_mode (1 instance) [PM2] Done. ┌─────┬────────┬─────────────┬─────────┬─────────┬──────────┬────────┬──────┬───────────┬──────────┬──────────┬──────────┬──────────┐ │ id │ name │ namespace │ version │ mode │ pid │ uptime │ ↺ │ status │ cpu │ mem │ user │ watching │ ├─────┼────────┼─────────────┼─────────┼─────────┼──────────┼────────┼──────┼───────────┼──────────┼──────────┼──────────┼──────────┤ │ 0 │ app │ default │ N/A │ fork │ 1437 │ 0s │ 0 │ online │ 0% │ 31.1mb │ root │ disabled │ └─────┴────────┴─────────────┴─────────┴─────────┴──────────┴────────┴──────┴───────────┴──────────┴──────────┴──────────┴──────────┘
A continuación, habilite la aplicación Node.js para que se inicie en el momento del arranque con el siguiente comando:
pm2 startup
Este comando creará un archivo de servicio systemd para la aplicación Node.js y permitirá que se inicie después de reiniciar el sistema como se muestra a continuación:
[PM2] Init System found: systemd Platform systemd Template [Unit] Description=PM2 process manager Documentation=https://pm2.keymetrics.io/ After=network.target [Service] Type=forking User=root LimitNOFILE=infinity LimitNPROC=infinity LimitCORE=infinity Environment=PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin Environment=PM2_HOME=/root/.pm2 PIDFile=/root/.pm2/pm2.pid Restart=on-failure ExecStart=/usr/lib/node_modules/pm2/bin/pm2 resurrect ExecReload=/usr/lib/node_modules/pm2/bin/pm2 reload all ExecStop=/usr/lib/node_modules/pm2/bin/pm2 kill [Install] WantedBy=multi-user.target Target path /etc/systemd/system/pm2-root.service Command list [ 'systemctl enable pm2-root' ] [PM2] Writing init configuration in /etc/systemd/system/pm2-root.service [PM2] Making script booting at startup... [PM2] [-] Executing: systemctl enable pm2-root... Created symlink /etc/systemd/system/multi-user.target.wants/pm2-root.service → /etc/systemd/system/pm2-root.service. [PM2] [v] Command successfully executed. +---------------------------------------+ [PM2] Freeze a process list on reboot via: $ pm2 save [PM2] Remove init script via: $ pm2 unstartup systemd
También puede listar su aplicación activa con el siguiente comando:
pm2 list
Deberías obtener el siguiente resultado:
┌─────┬────────┬─────────────┬─────────┬─────────┬──────────┬────────┬──────┬───────────┬──────────┬──────────┬──────────┬──────────┐ │ id │ name │ namespace │ version │ mode │ pid │ uptime │ ↺ │ status │ cpu │ mem │ user │ watching │ ├─────┼────────┼─────────────┼─────────┼─────────┼──────────┼────────┼──────┼───────────┼──────────┼──────────┼──────────┼──────────┤ │ 0 │ app │ default │ N/A │ fork │ 1437 │ 104s │ 0 │ online │ 0.1% │ 39.7mb │ root │ disabled │ └─────┴────────┴─────────────┴─────────┴─────────┴──────────┴────────┴──────┴───────────┴──────────┴──────────┴──────────┴──────────┘
Paso 5:configurar Apache como un proxy front-end para Node.js
A continuación, deberá instalar y configurar el servidor web Apache como servidor frontend para acceder a la aplicación Node.js.
Primero, instale el servidor web Apache con el siguiente comando:
dnf install httpd -y
A continuación, cree un archivo de configuración de host virtual de Apache para la aplicación Node.js con el siguiente comando:
nano /etc/httpd/conf.d/example.conf
Agregue las siguientes líneas:
<VirtualHost *:80> ServerAdmin [email protected] ServerName node.example.com ErrorLog /var/log/httpd/error.log CustomLog /var/log/httpd/access.log combined ProxyRequests On ProxyPass / http://localhost:8080 ProxyPassReverse / http://localhost:8080 </VirtualHost>
Guarde y cierre el archivo cuando haya terminado. Luego, inicie el servidor web Apache y habilítelo para que comience al reiniciar con el siguiente comando:
systemctl start httpd systemctl enable httpd
Paso 6:acceda a la aplicación Node.js
En este punto, el servidor web Apache está configurado para acceder a la aplicación Node.js. A continuación, abra su navegador web y escriba la URL http://node.example.com. Será redirigido a la página de la aplicación Node.js como se muestra a continuación:
Conclusión
¡Felicidades! Ha implementado con éxito la aplicación Node.js con Apache como servidor front-end. Ahora puede comenzar a crear su aplicación Node.js para el entorno de producción:¡pruébelo en el alojamiento VPS de Atlantic.Net!