• seguici su feed rss
  • seguici su twitter
  • seguici su linkedin
  • seguici su facebook
  • cerca

SEI GIA' REGISTRATO? EFFETTUA ADESSO IL LOGIN.



ricordami per 365 giorni

HAI DIMENTICATO LA PASSWORD? CLICCA QUI

NON SEI ANCORA REGISTRATO ? CLICCA QUI E REGISTRATI !

Nodejs, NVM Node Version Manager, NPM Node package manager: installazione su sistemi Linux e Windows

di :: 30 settembre 2020
Nodejs, NVM Node Version Manager, NPM Node package manager: installazione su sistemi Linux e Windows

Cos'è Node.js

Node.js è un framework utilizzato per scrivere applicazioni in Javascript lato server.

La documentazione ufficiale riporta quanto segue: "Node.js è un runtime Javascript costruito sul motore Javascript V8 di Chrome..... Usa un modello I/O non bloccante e ad eventi....  l’Npm è il più grande ecosistema di librerie open source al mondo"

Probabilmente questa definizione non vi sarà subito chiara. Vediamo di esplicitarla.

Motore Javascript V8 di Chrome

Chrome, come Firefox, Safari e molti altri, è un browser, e tutti hanno in comune l'interprete javascript.

Quando nella barra di ricerca, ad esempio di Chrome, cerchi un sito e clicchi su invio, il browser andrà a caricare l'html, i css e, se trova dei javascript, li esegue nel determinato momento in cui li trova. Qui agisce l'interprete javascript che in Chrome viene chiamato V8. Le caratteristiche di V8 sono l'essere molto performarmante, cioè di eseguire i codici javascript in maniera molto veloce ed utilizzare poche risorse, e l'essere OpenSorce cioè un codice aperto e libero: chiunque lo può modificare e riusare in altri progetti.

Modello I/O non bloccante e ad eventi

I/O: sta per Input e Output. Immagina di fare una ricerca su Google, scrivi Linux, ed invii la richiesta al server di Google. Il server di Google riceve i dati in input, li elabora e restituisce un output cioè delle informazioni.

Node.js, come Javascript, si basa sul concetto di eventi e permette di gestire le operazioni in modo non bloccante (in modalità asincrona).

Facciamo un esempio: vogliamo che al click su un pulsante del nostro sito web venga scaricato un file e, a download completato, venga mostrato un messaggio.

In un MODELLO BLOCCANTE (modalità sincrona) le azioni vengono eseguite in questo ordine

1: il programma avvia il download di un file da internet
2: il programma mostra il messaggio di "download completato"
3: il programma può occuparsi di qualcos'altro (ad esempio, scaricare altri file).

Occorre attendere la visualizzazione del messaggio affinchè si possano scaricare altri file
Nell'attesa del download completato, noi restiamo in attesa, perché dobbiamo aspettare, ad esempio ,che venga contattato un database, estratto un dato,...
Nell'attesa della risposta il processo è attivo e sta consumando risorse del server (cpu, ram). Ultimata l'estrazione il processo non ci serve più e verrà eliminato.

In un MODELLO NON BLOCCANTE (modalità asincrona) il flusso diventa il seguente

1: il programma avvia il download di un file da internet
2: il programma può occuparsi di qualcos'altro (ad esempio, scaricare altri file).
3: il programma mostra il messaggio di "download completato"

Appena scatta l’evento "download completato", viene richiamata una particolare funzione che eseguirà il codice successivo al download, nel nostro caso mostrare il messaggio "download completato", e questa funzione prende il nome di "callback". La funzione di callback uno dei concetti più importanti di Node.js, e lo userai moltissimo.

Ecco un reale esempio di codice in cui effettuiamo il download di due file

var callback = function (error, response, body) {
console.log ('Download completato');
});

request('http://www.miosito.it/file1.zip', callback);
request('http://www.miosito.it/file2.zip', callback);

In un modello non bloccante vengono lanciati entrambi i download contemporaneamente, e ad ogni singolo download avvenuto verrà chiamata, in modo quindi asincrono, la funzione di callback che risponderà "Download completato".

Questa è la logica di funzionamento di Node.js: il motore JavaScript non resta in attesa dell'ouput, ma va avanti ed esegue le istruzioni successive, e quando una istruzione viene eseguita viene lanciata una azione (una callback).

Ecco un altro esempio di codice, scritto in node.js, con cui andiamo a leggere il contenuto di due file utilizzando il modulo "fs", che ci contente di lavorare con files e directory, ed il metodo "readFile": vengono lanciate entrambi i metodi "readFile" e non appena un file viene letto, verrà mostrato il contenuto nei log.

var callback = function(err, contents) {
    console.log(contents);
}
fs.readFile('/etc/hosts', callback);
fs.readFile('/etc/inetcfg', callback);

Si parla anche di "modello di programmazione ad eventi" o di " approccio event-driven".

NPM

Sta per Node Package Manager ed è un sistema di librerie (migliaia!) già pronte, scritte da altri sviluppatori, a cui possiamo attingere per aggiungere funzionalità al nostro progetto.

Queste librerie sono chiamate moduli (o plugin) e sono pubblicati nel sito web www.npmjs.com

NPM consente di scaricare e installare i moduli con un semplice comando, ma non fa solo questo! Se un modulo ha necessità, per funzionare, di altri moduli, cioè se dipende da altri moduli, NPM si occuperà di verificare le dipendenze e scaricarle.

Ci occuperemo di NPM nel prossimo articolo.

Ultimata questa presentazione vediamo come installare Node.js. Possiamo procedere all'installazione in diversi modi

Installazione di Node.js scaricando il sorgente dal sito ufficiale

Accediamo al sito web di node.js, https://nodejs.org, e scarichiamo il relativo pacchetto LTS (latest version). Oppure accediamo alla sua pagina di download per vedere tutti i possibili download per i vari sistemi operativi.

Per windows possiamo scaricare l'installer mentre su linux dobbiamo procedere con la compilazione del sorgente in questo modo

1: apriamo il terminale ed accediamo alla home directory

# cd ~

2: utlizziamo curl (o wget) per scaricare il pacchetto dalla url presa dal sito, e lo concateniamo con l'utility tar, per estrarre il contenuto del file tar.gz nella directory home

# curl https://nodejs.org/dist/v12.16.1/node-v12.16.1.tar.gz | tar xz

3: entriamo nella cartella node creata

# cd node-v*

Per compilare i sorgenti sono necessari alcuni pacchetti: gcc-c++ make python2
Io sto usando una distribuzione Centos 8 ed utilizzo dnf per scaricarli

# dnf install gcc-c++ make python2

Bene adesso possiamo procedere con la compilazione

# ./configure
# make -j4

La compilazione richiederà un po 'di tempo (circa 30 minuti su un server a quattro core). Abbiamo utilizzato l'opzione -j4 per eseguire quattro processi di compilazione paralleli in modo da accellerare i tempi. È possibile omettere questa opzione o aggiornare il numero in base al numero di core del processore disponibili.

Ultimata la compilazione possiamo procedere con l'installazione

# make install

Ultimata l'installazione verifichiamo la versione installata

# node --version

Nel nostro caso avremo la versione v12.18.3

Installazione di Node.js su Centos 8 utilizzando yum o dnf

Io utilizzo Centos 8 con sistema operativo, e posso installare Node.js dal repo di Centos utilizzando yum o dnf

Esistono differenti versioni di nodejs per cui, innanzitutto, vediamo quali sono le versioni disponibili

# dnf module list nodejs

Il risultato sarà

CentOS-8 - AppStream                                                                                     75 kB/s | 4.3 kB     00:00
CentOS-8 - Base                                                                                         105 kB/s | 3.9 kB     00:00
CentOS-8 - Extras                                                                                        26 kB/s | 1.5 kB     00:00
Extra Packages for Enterprise Linux Modular 8 - x86_64                                                  530 kB/s |  33 kB     00:00
Extra Packages for Enterprise Linux 8 - x86_64                                                          309 kB/s |  18 kB     00:00
Remi's Modular repository for Enterprise Linux 8 - x86_64                                                85 kB/s | 3.5 kB     00:00
Safe Remi's RPM repository for Enterprise Linux 8 - x86_64                                               74 kB/s | 3.0 kB     00:00
CentOS-8 - AppStream
Name                    Stream                  Profiles                                              Summary
nodejs                  10 [d]                  common [d], development, minimal, s2i                 Javascript runtime
nodejs                  12                      common [d], development, minimal, s2i                 Javascript runtime

Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled

Sono disponibili 2 pacchetti: la versione 10 (la versione di default) e la 12.
Se vogliamo installare la versione 12, dobbiamo innanzitutto scegliere la versione da insallare in questo modo

# dnf module enable nodejs:12

E adesso possiamo installare node.js nella versione scelta

# dnf install nodejs

Ultimata l'installazione verichifiamo la versione presente

# node --version

Nel nostro caso avremo la versione v12.18.3

Installazione di NVM, Node Version Manager

Esiste un sistema chiamato "NVM", acronimo di node version manager, che consente di installare diverse versioni di nodejs: in questo modo potremmo, ad esempio, mantenere progetti che funzionano con versioni differenti.

Vediamo l'installazione sia su Windows che su Linux. L'importante è che prima di questa intallazione non sia installato node.js
Ad esempio, sui sistemi Windows, verifica non ci sia la cartella "C:\Program Files\nodejs" e neppure "C:\Users\<user>\AppData\Roaming\npm" (dove <user> è il nome utente)

Installazione di NVM per utenti Windows

  1. Su Google cerca "nvm for windows" e cerca il link "coreybutler/nvm-windows: A node.js version ... - GitHub" (https://github.com/coreybutler/nvm-windows)
  2. A fondo pagina clicca sul link "Download the latest installer from the releases." (che punterà a questo link https://github.com/coreybutler/nvm-windows/releases)
  3. Cerca e scarica questo file "nvm-setup.zip"

NVM verrà installato sotto la cartella
C:\Users\<user>\AppData\Roaming\npm

Installato NVM, apri un terminale di Window (ad esempio WIndows Power Shell) e digita "nvm" così verifichi se è stato effettivamente installato.

C:\Users\Giulio> nvm
Running version 1.1.7.

Procediamo adesso ad installare l'ultima versione di node.js

C:\Users\Giulio> nvm install latest

Così facendo ho installato la versione 14.12.0

Accedi a questa pagina dove sono presenti le versioni di node.js attive, e le date di scadenza del supporto. La versione consigliata è quella evidenziata con LTS (latest versione). Attualmente è la versione 12.18.4.

Se volessi installare anche questa versione

C:\Users\Giulio> nvm install 12.18.4

Il comando "nvm list" indica la lista dei node.js installati

C:\Users\Giulio> nvm list
  14.12.0
  12.18.4

Per switchare tra le versioni installate utilizza il comando  "nvm use" seguito dalla versione che vuoi utilizzare, ad esempio

C:\Users\Giulio> nvm use 12.18.4

Se adesso digiti nuovamente "nmv list" vedrai la versione utilizzata evidenziata con un asterisco

C:\Users\Giulio> nvm list
    14.12.0
  * 12.18.4 (Currently using 64-bit executable)

Scelta la versione, proviamo ad utilizzare node.js attraverso il comando "node"

C:\Users\Giulio> node
Welcome to Node.js v12.18.4.
Type ".help" for more information.
>

Appare una freccia (un prompt), e Node.js resta in attesa di una riga di comando

Ad esempio se vogliamo stampare a video "ciao mondo" dopo il prompt digita quanto segue

>console.log('ciao mondo');

Per uscire da Node.js digita ".exit"

Installazione di NVM per utenti Linux

Questa è l la url del progetto su GitHub: https://github.com/nvm-sh/nvm e attualmente la versione è la 0.36.0

Utilizziamo curl

# curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.36.0/install.sh | bash

oppure usando wget

# wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.36.0/install.sh | bash

Abbiamo così installato nvm su Linux sotto il tuo user account. Per utilizzarlo, devi prima digitare quanto segue:

# source ~/.bash_profile

Bene, adesso che NVM è installato, possiamo elencare le versioni di node.js disponibili per l'installazione

# nvm list-remote

E' una lista mooooolto lunga!

Possiamo anche vederle on line, da questa pagina, le ultime versioni di node.js attive, e le date di scadenza del supporto. La versione consigliata è quella evidenziata con LTS. Attualmente è la versione 12.18.4.

Per installare una versione digitiamo "nvm install" seguito dalla versione, ad esempio la v13.6.0

# nvm install v13.6.0

Se vogliamo installare anche la versione 12.18.4

# nvm install v12.18.4

Per elencare le versioni installate utilizziamo il comando "nvm list": apparirà la lista delle versione, con evidenziata la versione in uso

# nvm list
->     v12.18.4
       v13.6.0

Per switchare tra le versione utilizza il comando "nvm use" seguito dalla versione, ad esempio

# nvm use v13.6.0
Now using node v13.6.0 (npm v6.13.4)

Per scaricare la versione "LTS" digitiamo

# nvm install --lts

Scelta la versione, proviamo ad utilizzare node.js attraverso il comando "node"

# node
Welcome to Node.js v12.18.4.
Type ".help" for more information.
>

Appare una freccia (un prompt), e Node.js resta in attesa di una riga di comando. Se ad esempio volessimo stampare a video "ciao mondo" dopo il prompt digita quanto segue

# node
Welcome to Node.js v12.18.4.
Type ".help" for more information.
>console.log('ciao mondo');

Per uscire da node.js digita ".exit"

# node
Welcome to Node.js v13.6.0.
Type ".help" for more information.
> console.log('ciao mondo');
ciao mondo
undefined
> .exit

Chiudiamo così la presentazione di node.js

Nei prossimi articolo ci occuperemo di NPM cioè del gestore dei pacchetti (moduli) javascript di node.js, e di realizzare qualche esempi di codice Node.

Stay tuned!

Potrebbe interessarti

Approfondimenti

 
pay per script

Hai bisogno di uno script PHP personalizzato, di una particolare configurazione su Linux, di una gestione dei tuoi server Linux, o di una consulenza per il tuo progetto?

 
 
 
x

ATTENZIONE