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!