## 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