GNU/Linux >> Linux Esercitazione >  >> Linux

Come configurare Apache come server proxy frontend per Node.js CentOS 8

Node.js è un ambiente di runtime JavaScript multipiattaforma open source che può essere utilizzato per eseguire JavaScript al di fuori del browser web. È più comunemente utilizzato per creare applicazioni Web con connessioni bidirezionali in tempo reale, in cui sia il client che il server possono avviare la comunicazione, consentendo loro di scambiare dati liberamente. Node.js utilizza un modello I/O non bloccante basato su eventi che lo rende perfetto per le applicazioni ad alta intensità di dati che vengono eseguite su dispositivi distribuiti.

In questo tutorial, installeremo Node.js e lo configureremo per essere eseguito come server back-end; quindi configureremo Apache come server proxy frontend per Node.js.

Prerequisiti

  • Un nuovo VPS CentOS 8 sulla piattaforma Atlantic.net Cloud.
  • Una password di root configurata sul tuo server.

Fase 1:crea un server cloud Atlantic.Net

Per prima cosa, accedi al tuo server Atlantic.Net Cloud. Crea un nuovo server, scegliendo CentOS 8 come sistema operativo con almeno 1 GB di RAM. Collegati al tuo Cloud Server tramite SSH e accedi utilizzando le credenziali evidenziate in alto nella pagina.

Dopo aver effettuato l'accesso al server CentOS 8, esegui il comando seguente per aggiornare il sistema di base con gli ultimi pacchetti disponibili.

dnf update -y

Passaggio 2 – Installa Node.js

Puoi installare il repository Node.js usando il seguente comando:

curl -sL https://rpm.nodesource.com/setup_12.x | bash -

Una volta installato il repository, puoi installare Node.js semplicemente eseguendo il seguente comando:

dnf install nodejs -y

Una volta completata l'installazione, puoi verificare la versione installata di Node.js con il seguente comando:

node -v

Dovresti ottenere il seguente output:

v12.16.2

Puoi anche controllare la versione NPM con il seguente comando:

npm -v

Dovresti ottenere il seguente output:

6.14.4

Passaggio 3:crea un'applicazione Node.js di esempio

Innanzitutto, creiamo una directory per contenere l'applicazione Node.js:

mkdir project

Quindi, cambia la directory in project e crea un'applicazione Node.js di esempio con il comando seguente:

cd project
nano app.js

Aggiungi i seguenti contenuti:

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/');

Salva e chiudi il file quando hai finito.

La tua applicazione Node.js è ora pronta per essere pubblicata sulla porta 8080. Quindi, avvia l'applicazione con il seguente comando:

node app.js

Dovresti ottenere il seguente output:

Server running at http://127.0.0.1:8080/

L'output sopra indica che la tua applicazione Node.js funziona correttamente.

Quindi, premi CTRL + C per interrompere l'applicazione.

Fase 4 – Installa e configura PM2 per gestire l'applicazione Node.js

PM2 è un process manager per l'applicazione Node.js. Ti consente di mantenere in vita l'applicazione Node.js per sempre, di gestire Node.js, di ricaricare Node.js senza tempi di inattività e di facilitare le comuni attività di amministrazione del sistema.

Puoi installarlo utilizzando l'NPM come mostrato di seguito:

npm i -g pm2

Dopo aver installato PM2, cambia la directory nel progetto e avvia l'applicazione Node.js con PM2 come mostrato di seguito:

pm2 start app.js

Una volta che l'applicazione è stata avviata correttamente, dovresti ottenere il seguente output:

                        -------------

__/\\\\\\\\\\\\\____/\\\\____________/\\\\____/\\\\\\\\\_____
 _\/\\\/////////\\\_\/\\\\\\________/\\\\\\__/\\\///////\\\___
  _\/\\\_______\/\\\_\/\\\//\\\____/\\\//\\\_\///______\//\\\__
   _\/\\\\\\\\\\\\\/__\/\\\\///\\\/\\\/_\/\\\___________/\\\/___
    _\/\\\/////////____\/\\\__\///\\\/___\/\\\________/\\\//_____
     _\/\\\_____________\/\\\____\///_____\/\\\_____/\\\//________
      _\/\\\_____________\/\\\_____________\/\\\___/\\\/___________
       _\/\\\_____________\/\\\_____________\/\\\__/\\\\\\\\\\\\\\\_
        _\///______________\///______________\///__\///////////////__


                          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 │
└─────┴────────┴─────────────┴─────────┴─────────┴──────────┴────────┴──────┴───────────┴──────────┴──────────┴──────────┴──────────┘

Quindi, abilita l'avvio dell'applicazione Node.js all'avvio con il comando seguente:

pm2 startup

Questo comando creerà un file di servizio systemd per l'applicazione Node.js e ne consentirà l'avvio dopo il riavvio del sistema come mostrato di seguito:

[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

Puoi anche elencare la tua applicazione attiva con il seguente comando:

pm2 list

Dovresti ottenere il seguente output:

┌─────┬────────┬─────────────┬─────────┬─────────┬──────────┬────────┬──────┬───────────┬──────────┬──────────┬──────────┬──────────┐
│ 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 │
└─────┴────────┴─────────────┴─────────┴─────────┴──────────┴────────┴──────┴───────────┴──────────┴──────────┴──────────┴──────────┘

Passaggio 5:configura Apache come proxy frontend per Node.js

Successivamente, dovrai installare e configurare il server web Apache come server frontend per accedere all'applicazione Node.js.

Innanzitutto, installa il server web Apache con il seguente comando:

dnf install httpd -y

Quindi, crea un file di configurazione dell'host virtuale Apache per l'applicazione Node.js con il seguente comando:

nano /etc/httpd/conf.d/example.conf

Aggiungi le seguenti righe:

<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>

Salva e chiudi il file quando hai finito. Quindi, avvia il server web Apache e abilitalo all'avvio al riavvio con il seguente comando:

systemctl start httpd
systemctl enable httpd

Passaggio 6:accedi all'applicazione Node.js

A questo punto, il server web Apache è configurato per accedere all'applicazione Node.js. Quindi, apri il tuo browser web e digita l'URL http://node.example.com. Verrai reindirizzato alla pagina dell'applicazione Node.js come mostrato di seguito:

Conclusione

Congratulazioni! Hai distribuito correttamente l'applicazione Node.js con Apache come server frontend. Ora puoi iniziare a creare la tua applicazione Node.js per l'ambiente di produzione:provala sull'hosting VPS da Atlantic.Net!


Linux
  1. Come installare il server proxy Squid su CentOS 7

  2. Come configurare un server OpenVPN su CentOS 7

  3. Come configurare gli host virtuali Apache su CentOS

  4. Configura il server DHCP su CentOS 8 - Come farlo?

  5. Come configurare VSFTPD su CentOS 8

Come configurare SSH su CentOS e RHEL

Come configurare un server TeamSpeak su CentOS 7

Come configurare un supporto e una lama:server dedicato Warband su CentOS

Come configurare un server Minecraft su CentOS 7

Come creare un proxy HTTP utilizzando Squid su CentOS 8

Come installare NGINX come proxy inverso per Apache su Ubuntu 18.04