Come configurare un’applicazione Node.js con Apache su Ubuntu 16.04

Node.js è un ambiente di runtime JavaScript che permette di creare facilmente delle applicazioni lato server. Utilizzando il gestore di processi PM2, è possibile impostare un’applicazione Node.js da eseguire come servizio su Ubuntu 16.04.

Esecuzione di script Node.js come servizio

Sebbene gli script open source di JavaScript Node.js possano essere eseguiti dallo schermo attraverso la riga di comando, l’esecuzione degli script come servizio, usando il gestore di processi PM2, conferisce a questi un insieme più affidabile di comportamenti. Quando vengono eseguiti come servizio in questo modo, gli script vengono automaticamente riavviati se il server viene riavviato o lo script va in crash.

PM2 è un gestore di processi per Node.js con una vasta gamma di caratteristiche che potete usare per controllare e gestire i vostri script Node.js. Visitate il sito web ufficiale di PM2 per ulteriori informazioni sul suo uso.

Requisiti

  • Un server cloud che usi Linux (Ubuntu 16.04).
  • Un nome di dominio funzionante che si colleghi al server.
  • Un server web Apache installato e funzionante.

Prova gratuitamente il tuo server cloud di IONOS

Prova subito il tuo server cloud gratuitamente – Testa il tuo server cloud per 30 giorni!

API REST
Traffico illimitato
Virtualizzazione VMware

Installare Node.js

Aggiornate i pacchetti del vostro server e installate curl con i seguenti comandi:

sudo apt-get update
sudo apt-get install curl

Scaricate l’archivio dei pacchetti personali (PPA) di Node.js, che contiene una versione di Node.js più recente rispetto ai repository di Ubuntu:

curl -sL https://deb.nodesource.com/setup_6.x -o nodesource_setup.sh

A questo punto, eseguite il comando nodesource_setup.sh per aggiungere il PPA alla cache dei pacchetti del vostro server:

sudo bash nodesource_setup.sh
N.B.

Questo script aggiornerà il server automaticamente. Non sarà quindi necessario eseguire apt-get update una seconda volta.

In seguito, installate Node.js:

sudo apt-get install nodejs

Questo installerà automaticamente anche npm.

Infine, installate il pacchetto build-essential per npm:

sudo apt-get install build-essential

Creare un esempio di applicazione Node.js

Per questo esempio, inizieremo creando una directory separata nella radice dei documenti del vostro sito web per ospitare le applicazioni Node.js:

sudo mkdir /var/www/html/nodejs

Create il file hello.js in questa directory:

sudo nano /var/www/html/nodejs/hello.js

Aggiungete il seguente esempio di contenuto al file:

#!/usr/bin/env nodejs
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);
console.log('Server running at http://127.0.0.1:8080/');

Salvate e uscite dal file rendendo il file eseguibile:

sudo chmod 755 hello.js

Installare PM2

Usate npm per installare PM2 tramite il comando seguente:

sudo npm install -g pm2

Avviate quindi l’esempio di script hello.js appena creato con il comando:

sudo pm2 start hello.js

Aggiungete PM2 come root agli script di avvio, in modo che si riavvii automaticamente se il server viene riavviato:

sudo pm2 startup systemd

Configurare Apache

Per accedere allo script Node.js dal web, bisognerà installare i moduli Apache proxy e proxy_http utilizzando i comandi riportati di seguito:

sudo a2enmod proxy
sudo a2enmod proxy_http

Al termine dell’installazione riavviate Apache per applicare le modifiche:

sudo service apache2 restart

Successivamente, sarà necessario regolare le configurazioni del proxy di Apache. Le seguenti direttive devono essere inserite nel blocco di comando VirtualHost nel file di configurazione principale di Apache del sito.

Solitamente, su Ubuntu questo file di configurazione di Apache è /etc/apache2/sites-available/example.com.conf.

N.B.

La posizione e il nome del file di configurazione di Apache di un sito possono variare.

Modificate questo file con l’editor che preferite, ad esempio utilizzando il seguente comando:

sudo nano /etc/apache2/sites-available/example.com.conf

Scorrete il file fino a trovare il blocco di comando VirtualHost, che si presenterà in questo modo:

<virtualhost *:80></virtualhost>
ServerName example.com
    <directory " var www example.com html"></directory>
    AllowOverride All
    

Aggiungete quindi la dicitura seguente al blocco di comando VirtualHost:

ProxyRequests Off
   ProxyPreserveHost On
   ProxyVia Full
   <proxy *></proxy>
      Require all granted
   
   <location nodejs></location>
      ProxyPass http://127.0.0.1:8080
      ProxyPassReverse http://127.0.0.1:8080
   

Assicuratevi di inserire queste righe fuori da qualsiasi blocco di comando della directory. Ad esempio:

<virtualhost *:80></virtualhost>
ServerName example.com
   ProxyRequests Off
   ProxyPreserveHost On
   ProxyVia Full
   <proxy *></proxy>
      Require all granted
   
   <location nodejs></location>
      ProxyPass http://127.0.0.1:8080
      ProxyPassReverse http://127.0.0.1:8080
   
    <directory " var www example.com html"></directory>
    AllowOverride All
    

Salvate le modifiche e uscite dal file. Riavviate quindi Apache per apportare le modifiche:

sudo services apache2 restart

Dopo aver riavviato Apache, potrete testare l’applicazione visualizzandola in un browser. A questo punto, dovreste visualizzare il seguente messaggio dal file di prova creato in precedenza:

Hello World! Node.js is working correctly.
Per offrirti una migliore esperienza di navigazione online questo sito web usa dei cookie, propri e di terze parti. Continuando a navigare sul sito acconsenti all’utilizzo dei cookie. Scopri di più sull’uso dei cookie e sulla possibilità di modificarne le impostazioni o negare il consenso.