Node.js è una piattaforma che consente di gestire le applicazioni lato server basate su JavaScript. Sui nostri Managed Flex Server offriamo Node.js in più versioni. La presente guida descrive in che modo può attivare un’applicazione Node.js sul Suo Managed Flex Server.
Requisiti
Le applicazioni Node.js possono essere attivate a partire da Managed Flex Server M.
Creazione di un’applicazione Node.js
A titolo esemplificativo compiliamo un’applicazione web “Hello World”. Per rendere l’applicazione disponibile in Internet come sito web, la gestiremo come backend di un reverse proxy Nginx.
Per ordinare le Sue applicazioni Le consigliamo di creare una cartella ~/app/ e, al suo interno, una sottocartella per ciascuna applicazione. In questo modo avrà sempre un perfetto ordine e una panoramica chiara. Per la nostra applicazione esemplificativa creiamo quindi la cartella ~/app/hello-world.
Posizionate dunque il codice su questo punto. Per la nostra applicazione esemplificativa è necessario un file con il seguente contenuto che chiameremo hello.js.
var http = require('http');
var server = http.createServer(function(req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello World\n');
});
server.listen(8080, '127.0.0.1');
console.log('Server running on port 8080');
Come vede, hello.js crea un socket di ascolto e attende le richieste http. Selezioniamo l’indirizzo IP 127.0.0.1 perché non vogliamo esporre la nostra applicazione direttamente in Internet, pertanto utilizziamo Nginx come proxy. La funzione proxy del Nginx si aspetta che la Sua applicazione sia raggiungibile a questo indirizzo IP. La scelta della porta è sostanzialmente libera. Qualsiasi porta tra 1024 e 65535 va bene. Le ricordiamo, tuttavia, che per ogni porta può essere creato solo un socket di ascolto e che l’avvio dell’applicazione fallisce se la porta selezionata è già occupata. Perciò è preferibile evitare quelle porte che solitamente vengono utilizzate da altre applicazioni.
Consiglio: ricordi che la denominazione “localhost” fa riferimento a due indirizzi: all’indirizzo IPv4 di loopback 127.0.0.1 e a quello IPv6 di loopback ::1. A seconda di come implementate l’istruzione di “ascolto” o di come la implementa la Sua applicazione (o la libreria o la lingua), l’applicazione ascolta diverse interfacce. Per evitare che accada, inserisca direttamente l’indirizzo IP.
La nostra applicazione esemplificativa non ha bisogno di alcun modulo NPM. Qualora la Sua applicazione ne abbia bisogno, può installare i moduli mediante NPM. A tale scopo effettui l’accesso al Suo hosting tramite SSH, passi alla directory dell’applicazione e installi i moduli desiderati con npm install.
Può quindi avviare l’applicazione esemplificativa con node hello.js. Per terminare premete Ctrl-C:
node hello.js
Server running on port 8080
^C
Integrazione
Poiché nel nostro esempio si tratta di un’applicazione web generalmente accessibile tramite http(s), è necessario configurare il server web nel pannello in modo tale che inoltri le richieste come proxy alla nuova applicazione Node.
Configurazione del server web
Nel Pannello di controllo Hostpoint crei un sito web con le impostazioni di base “Nginx Custom Mode (proxy su applicazione propria)”:
- Indirizzo del server e porta
- La funzione proxy si aspetta che la Sua applicazione sia in ascolto all’indirizzo IPv4 di loopback 127.0.0.1. È quindi necessario indicare solo la porta: 8080.
Se desidera modificare l'indirizzo del server di backend di un sito web esistente o aggiungerne uno nuovo, si veda l'impostazione in “Siti web” > “Modificare” > “Posizioni” > “Impostazioni proxy” > “Indirizzo server backend”.
Funzionamento con il Custom Service Control
Finora ha avviato le Sue applicazioni manualmente tramite la shell. Se questa operazione può rappresentare una soluzione semplice per i test e per lo sviluppo, non lo è per il funzionamento. Il Custom Service Control (CSC) si può occupare del funzionamento e della gestione automatica della propria applicazione, ad esempio dell’avvio e dell’arresto in caso di interventi di manutenzione sul server.
La configurazione dell’app hello.js nel CSC è molto semplice. Crei dunque un nuovo custom service per l’applicazione hello.js:
hpservices supervisord add hello-world
successfully created dir for hello.js: /home/username/.services/supervisord/hello-world
successfully created dir for hello.js: /home/username/.services/supervisord/hello-world/log
successfully created dir for hello.js: /home/username/app/hello-world
supervisord service config file written: /home/username/.services/supervisord/hello-world/service.conf
Nel file ~/.services/supervisord/hello-world/service.conf viene creato uno schema di configurazione per il nuovo servizio. Per la nostra applicazione Hello World è necessario adeguare solo il command, mentre tutti gli altri valori proposti possono essere adottati.
Per Node.js, è necessario cambiare il comando e aggiungere alcune variabili d'ambiente (rimuovere il punto e virgola all'inizio della linea):
[program:hello-world]
command=/usr/local/bin/node %(ENV_HOME)s/app/hello-world/hello.js ; the program (can take args)
directory=%(ENV_HOME)s/app/hello-world/ ; directory to cwd to before exec (default no cwd)
autostart=true ; start application at supervisord start (default: true)
stopwaitsecs=10 ; max num secs to wait before SIGKILL (default 10)
stdout_logfile=%(ENV_HOME)s/.services/supervisord/hello-world/log/default.log
stdout_logfile_maxbytes=1MB ; filesize at which to rotate logfiles (default ist 50MB)
stdout_logfile_backups=10 ; number of stdout logfile backups (0 means none, default 10)
stderr_logfile=%(ENV_HOME)s/.services/supervisord/hello-world/log/default.err
stderr_logfile_maxbytes=1MB ; filesize at which to rotate logfiles (default is 50MB)
stderr_logfile_backups=10 ; number of stderr logfile backups (0 means none, default 10)
Con supervisorctl update è possibile attivare la nuova configurazione per la nostra applicazione Hello World:
supervisorctl update
hello-world: added process group
Attenzione: Se si verifica un errore, è necessario eseguire prima di tutto "hpservices supervisord start" una volta.
Per informazioni più dettagliate sull’uso e sulle possibilità disponibili con il CSC fate riferimento alla guida al Custom Service Control.
Ulteriori informazioni
Per richieste di supporto la preghiamo di usare invece questo modulo.