Come configurare un’applicazione Node.js con Apache 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.
Grazie a un credito iniziale, puoi provare gratuitamente il Server Cloud di IONOS per 1 mese (o fino all’esaurimento del credito) e beneficiare del giusto mix di prestazioni e sicurezza!
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
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.
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.