## page was renamed from NodeJSProduction
#format wiki
#language it
<
>
<>
<>
= Introduzione =
'''Node.js''' è un framework per la programmazione a [[https://it.wikipedia.org/wiki/Programmazione_a_eventi|eventi]] per il motore [[https://it.wikipedia.org/wiki/V8_%28motore_Javascript%29|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''', e un altro (non accessibile pubblicamente) eseguirà le applicazioni '''Node.js'''.<
>
Tuttavia è possibile configurare il tutto anche avendo un solo server.
= Installazione e configurazione =
0. Da questo [[https://nodejs.org/en/download/|pagina]] scaricare nella propria '''Home''' l'archivio `.tar.gz` della versione LTS (indicato in alto a destra come '''Source Code''').
0. Creare la directory `~/node` e quindi estrarre il contenuto dell'archivio al su interno digitando nel [[AmministrazioneSistema/RigaDiComando|terminale]] i comandi:{{{
mkdir node
}}}{{{
tar xvf node-v*.tar.?z --strip-components=1 -C ./node
}}}L'archivio `.tar.gz` può a questo punto essere cancellato o conservato, a scelta dell'utente.
0. Impostare il prefisso globale del ''package manager'' '''npm''' necessario per la creazione dei link simbolici dei pacchetti globali: {{{
mkdir node/etc
}}}{{{
echo 'prefix=/usr/local' > node/etc/npmrc
}}}
0. Spostare i file binari di '''Node.js''' e '''npm''' nella directory di installazione: {{{
sudo mv node /opt/
}}}
0. Per ragioni di sicurezza modificare il proprietario di tali file con root: {{{
sudo chown -R root: /opt/node
}}}
0. Creare link simbolici dei file binari di '''Node.js''' 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
}}}
0. Verificare che '''Node.js''' e '''npm''' siano installati e funzionanti digitando i comandi: {{{
node -v
}}}{{{
npm -v
}}}
= Installazione di pm2 =
'''Node.js''' e '''npm''' sono a questo punto installati e pronti per eseguire applicazioni. È tuttavia consigliato l'utilizzo di un ''process-manager'' come ad esempio '''pm2'''.
0. Installare il pacchetto ''pm2'' digitando: {{{
npm install -g pm2
}}}
0. Installare gli script per l'avvio con l'avvio del sistema: {{{
pm2 startup ubuntu
}}}che restituirà un output di questo tipo: {{{
[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 propria directory '''Home'''.
0. Eseguire quindi il comando indicato: {{{
sudo su -c "env PATH=$PATH:/opt/node/bin pm2 startup ubuntu -u USERNAME --hp /home/directory"
}}}Il primo server (o la prima parte del server) sarà adesso funzionante.
== Comandi di pm2 ==
Viene di seguito riportata una lista dei principali comandi di '''pm2'''.
* Avviare il demone che esegue app.js:{{{
pm2 start app.js
}}}
* Bloccare il demone che esegue app.js:{{{
pm2 stop app.js
}}}
* Ottenere informazioni sullo stato delle applicazioni in esecuzione oppure di ogni singola app:{{{
pm2 status [id|name]
}}}
* Rimuove app.js dall'output di '''pm2 status''':{{{
pm2 delete app.js
}}}
* Monitorare in tempo reale le risorse utilizzate dalle applicazioni:{{{
pm2 monit
}}}
= Installazione reverse proxy =
0. Installare il pacchetto ''nginx'' digitando il comando: {{{
sudo apt-get install nginx
}}}
0. Aprire con i [[AmministrazioneSistema/Sudo|privilegi di amministrazione]] e con un [[Ufficio/EditorDiTesto|editor di testo]] il file di configurazione `/etc/nginx/sites-available/default`.
0. Cancellare il contenuto 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;
}
}
}}}Possono essere aggiunti 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;
}
}}}
0. Riavviare '''Nginx''': {{{
sudo service nginx restart
}}}
= Ulteriori risorse =
* [[https://nodejs.org|Sito ufficiale di Node.js]]
----
CategoryProgrammazione CategoryServer CategoryDaRevisionare