GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo configurar Apache como servidor proxy frontend para Node.js CentOS 8

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!


Linux
  1. Cómo instalar el servidor proxy Squid en CentOS 7

  2. Cómo configurar un servidor OpenVPN en CentOS 7

  3. Cómo configurar servidores virtuales Apache en CentOS

  4. Configurar el servidor DHCP en CentOS 8:¿cómo hacerlo?

  5. Cómo configurar VSFTPD en CentOS 8

Cómo configurar SSH en CentOS y RHEL

Cómo configurar un servidor TeamSpeak en CentOS 7

Cómo configurar un servidor dedicado Mount &Blade:Warband en CentOS

Cómo configurar un servidor de Minecraft en CentOS 7

Cómo crear un proxy HTTP usando Squid en CentOS 8

Cómo instalar NGINX como proxy inverso para Apache en Ubuntu 18.04