Configurare un’app Node.js con Apache su Ubuntu 24.04
Node.js è un ambiente di runtime JavaScript che ti permette di creare facilmente applicazioni lato server. Con il gestore di processi PM2 puoi configurare un’app Node.js che viene eseguita come servizio su Ubuntu 24.04.
Eseguire script Node.js come servizio
Sebbene gli script dell’ambiente di runtime JavaScript open source Node.js possano essere eseguiti dalla riga di comando direttamente dallo schermo, eseguirli come servizio tramite il gestore di processi PM2 offre agli script un comportamento più robusto. Se gli script vengono eseguiti in questo modo come servizio, si riavviano automaticamente quando il server viene riavviato o lo script va in crash.
PM2 è un gestore di processi per Node.js con un’ampia gamma di funzionalità che ti permettono di controllare e gestire i tuoi script Node.js. Visita il sito ufficiale di PM2 per ulteriori informazioni sull’uso di PM2.
Requisiti
Prima di iniziare con i passaggi successivi per l’installazione di Node.js con Apache e PM2, assicurati che siano soddisfatti i seguenti requisiti:
- Un server Linux (Ubuntu 24.04).
- Un nome di dominio funzionante che punta al server.
- Un server web Apache funzionante e operativo
Installazione di Node.js
Per installare Node.js, ti serve lo strumento da riga di comando curl. Aggiorna i pacchetti del server e installa curl con i seguenti comandi:
sudo apt update
sudo apt install curl -ybashScarica l’archivio personale dei pacchetti (PPA) di Node.js e aggiungilo alla cache dei pacchetti del server. L’archivio contiene una versione di Node.js più aggiornata rispetto ai repository di Ubuntu:
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -bashInstalla quindi Node.js:
sudo apt install -y nodejsbashIn questo modo verrà installato automaticamente anche npm.
Infine, installa il pacchetto build-essential per npm. build-essential installa strumenti di sviluppo essenziali come il compilatore e Make, necessari affinché Node.js possa compilare ed eseguire correttamente i moduli npm con estensioni native.
sudo apt install -y build-essentialbashCreare un’applicazione Node.js di esempio
Per questo esempio, per prima cosa creeremo una directory separata nella root dei documenti del tuo sito web per ospitare le applicazioni Node.js:
sudo mkdir /var/www/html/nodejsbashCrea il file hello.js in questa directory:
sudo nano /var/www/html/nodejs/hello.jsbashPoi inserisci nella pagina il seguente contenuto di esempio:
#!/usr/bin/env node
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, '0.0.0.0');
console.log('Server running at http://127.0.0.1:8080/');javascriptSalva e chiudi il file, quindi rendilo eseguibile con il seguente comando:
sudo chmod 755 hello.jsbashVerifica del firewall
Ubuntu 24.04 in alcuni casi attiva per impostazione predefinita il firewall ufw. Per poter testare subito la tua applicazione Node.js, devi assicurarti che la porta 8080 sia aperta:
sudo ufw allow 8080/tcpbashQuesto passaggio è particolarmente importante se desideri accedere al tuo server direttamente tramite indirizzo IP oppure con un browser al di fuori del server. Se Node.js viene reso disponibile esclusivamente tramite Apache e il proxy, questo passaggio è facoltativo, perché il proxy inoltra il traffico.
Installazione di PM2
Usa npm per installare PM2 con il seguente comando:
sudo npm install -g pm2bashAvvia lo script di esempio hello.js, appena creato, con il comando:
sudo pm2 start hello.jsbashCome root, aggiungi PM2 agli script di avvio, in modo che venga riavviato automaticamente al riavvio del server, e salva i processi attualmente in esecuzione:
sudo pm2 startup systemd
sudo pm2 savebash- Backup automatici e recupero dei dati
- Pianificazione e gestione intuitive delle attività
- Protezione dalle minacce basata sull'intelligenza artificiale
Configurazione di Apache
Per accedere allo script Node.js dal web, installa i moduli Apache proxy e proxy_http con i comandi:
sudo a2enmod proxy
sudo a2enmod proxy_httpbashDopo aver completato l’installazione, riavvia Apache per applicare le modifiche:
sudo systemctl restart apache2bashSuccessivamente devi adattare le configurazioni proxy di Apache. Inserisci le seguenti istruzioni nel blocco di direttive VirtualHost, nel file di configurazione principale del server Apache.
Di solito trovi questo file di configurazione di Apache nel percorso /etc/apache2/sites-available/example.com.conf su Ubuntu.
Il percorso e il nome del file di configurazione di Apache per un sito web possono variare.
Modifica questo file con un editor a tua scelta, ad esempio con il comando:
sudo nano /etc/apache2/sites-available/example.com.confbashScorri il file finché non trovi il blocco di direttive VirtualHost, che si presenterà così:
<VirtualHost *:80>
ServerName example.com
<Directory "/var/www/example.com/html">
AllowOverride All
</Directory>
</VirtualHost>Aggiungi quanto segue al blocco di direttive VirtualHost:
ProxyRequests Off
ProxyPreserveHost On
ProxyVia Full
<Proxy *>
Require all granted
</Proxy>
<Location /nodejs>
ProxyPass http://127.0.0.1:8080
ProxyPassReverse http://127.0.0.1:8080
</Location>Assicurati che queste righe siano posizionate al di fuori dei blocchi delle direttive delle directory. Per esempio:
<VirtualHost *:80>
ServerName example.com
ProxyRequests Off
ProxyPreserveHost On
ProxyVia Full
<Proxy *>
Require all granted
</Proxy>
<Location /nodejs>
ProxyPass http://127.0.0.1:8080
ProxyPassReverse http://127.0.0.1:8080
</Location>
<Directory "/var/www/example.com/html">
AllowOverride All
</Directory>
</VirtualHost>Salva e chiudi il file e poi riavvia Apache, in modo che le modifiche diventino effettive:
sudo systemctl restart apache2bashDopo il riavvio di Apache, puoi testare l’applicazione visualizzandola in un browser. A questo punto dovresti vedere il seguente messaggio dal file di test creato in precedenza:
Hello World! Node.js is working correctly.
