Introduzione
Node.js è un framework event-driven per il motore JavaScript V8 di Google, su piattaforme UNIX like. Si tratta quindi di un framework relativo all'utilizzo server-side di Javascript.
Prerequisiti
Per una configurazione ottimale si dovrebbero avere due server con Ubuntu Server installato, uno che servirà da Reverse Proxy, ed un altro, non accessibile pubblicamente eseguirà le app NodeJS. Tuttavia è possibile configurare il tutto anche avendo un solo server.
Configurazione e Installazione
Andare sulla pagina di Download di NodeJS e cercate l'url per scaricare l'ultima versione LTS, dopodichè eseguite i seguenti comandi:
cd ~ wget https://nodejs.org/dist/v4.4.0/node-v4.4.0.tar.gz
sostituendo l'url con l'url dell'ultima release LTS.
Creare una directory node ed estrarre l'archivio appena scaricato:
mkdir node tar xvf node-v*.tar.?z --strip-components=1 -C ./node
Cancellare l'archivio tar che non è più necessario:
cd ~ rm -rf node-v*
Impostare il prefisso globale di npm, che userà per creare i link simbolici dei pacchetti globali:
mkdir node/etc echo 'prefix=/usr/local' > node/etc/npmrc
Spostare i file binari di node e npm nella directory di installazione:
sudo mv node /opt/
Per ragioni di sicurezza modificare il proprietario di tali files con root:
sudo chown -R root: /opt/node
Creare link simbolici dei file binari di node e npm nel path di default:
sudo ln -s /opt/node/bin/node /usr/local/bin/node sudo ln -s /opt/node/bin/npm /usr/local/bin/npm
Verificare che node e npm siano installati e funzionanti:
node -v npm -v
Adesso node e npm sono installati e pronti per eseguire applicazioni, ma per un app in production è consigliato l'utilizzo di un altro tool: un process-manager e il migliore è pm2.
Quindi procedere con l'installazione di pm2:
npm install -g pm2
E installare gli script per l'avvio con l'avvio dell'OS:
pm2 startup ubuntu
L'output dovrebbe essere simile a questo:
[PM2] You have to run this command as root [PM2] Execute the following command : [PM2] sudo su -c "env PATH=$PATH:/opt/node/bin pm2 startup ubuntu -u USERNAME --hp /home/directory"
dove USERNAME è l'user corrente e /home/directory la vostra directory HOME.
Eseguire quindi il comando indicato:
sudo su -c "env PATH=$PATH:/opt/node/bin pm2 startup ubuntu -u USERNAME --hp /home/directory"
Adesso il primo server o la prima parte del server è funzionante, di seguito i principali comandi di pm2:
pm2 start app.js // fa partire il daemon che esegue app.js pm2 stop app.js //stoppa il daemon che esegue app.js pm2 delete app.js // rimuove app.js dall'output di "pm2 status" pm2 status [id|name] // da una serie di info sullo stato delle applicazioni che sono eseguite oppure di ogni singola app pm2 monit // monitora le risorse utilizzate dalle app in esecuzione in tempo reale
Ora procedere con l'installazione del reverse proxy:
sudo apt-get update sudo apt-get install nginx
Aprire il file di configurazione nginx:
sudo vi /etc/nginx/sites-available/default
Cancellare tutto e inserire il seguente codice:
server { listen 80; server_name esempio.it; location / { proxy_pass http://INDIRIZZO_IP_SERVER_APP:8080; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; } }
Si possono aggiungere quanti blocchi location si vuole:
location /app2 { proxy_pass http://INDIRIZZO_IP_SERVER_APP_2:8081; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; }
Dopodichè riavviare nginx:
sudo service nginx restart