Procédure
Che cos'è Node.js?
Node.js è un ambiente runtime open-source e multipiattaforma che consente di creare un sito web o un'applicazione e di ospitarla su un server, utilizzando il linguaggio JavaScript. Nei nostri pacchetti cPanel L, cPanel XL, cPanel 2XL, cPanel 3XL e CloudCP, vi forniamo il gestore di applicazioni Node.js in modo che possiate impostare un'applicazione Node.js sul vostro pacchetto di web hosting cPanel. Sono disponibili le versioni di Node.js dalla 6 alla 24.
Che cos'è Phusion Passenger?
Per fornire ai nostri clienti un ambiente stabile e robusto per Node.js, integriamo le applicazioni Node.js con il server web Apache utilizzando lo strumento Phusion Passenger.
Non viene configurato un reverse proxy e le applicazioni Node.js non possono essere eseguite autonomamente sul proprio server web. Se siete abituati a eseguire il vostro server Node.js con un comando come node server, npm run start o pm2 start myapp, non potrete farlo sui nostri pacchetti di hosting cPanel. Se utilizzate un framework, verificate che sia compatibile con Phusion Passenger.
L'esecuzione della vostra applicazione Node.js sarà gestita da Phusion Passenger, che si occuperà di eseguire il vostro file .js con la versione corretta di node e catturerà la chiamata alla funzione http.Server listen() per configurare la connessione tra la vostra applicazione e il server web Apache stesso.
Come si installa un'applicazione Node.js?
Collegatevi all'interfaccia di gestione cPanel e fate clic sull'icona"Setup Node.js App".

Nella pagina che segue, fare clic sul pulsante"Create Application" (Crea applicazione) per aggiungere una nuova applicazione.

Compilare quindi i campi come richiesto per la propria applicazione:
- Versione di Node.js: la versione di Node.js richiesta dall'applicazione.
- Modalità dell'applicazione: consente di definire la modalità di esecuzione dell'applicazione, a scelta tra modalità sviluppatore o modalità produzione. Questo manipola la variabile d'ambiente NODE_ENV, consentendo la visualizzazione degli errori in modalità sviluppatore (utile per il debug, ma che può essere problematica per un'applicazione di produzione).
- Application root: la posizione della vostra applicazione Node.js, relativa alla vostra root FTP. Si consiglia di non mettere l'applicazione Node.js nella cartella public_html.
- URL dell'applicazione: l'URL principale dell'applicazione Node.js.
- File di avvio dell'applicazione: il nome del file .js che Passenger invierà a Node.js per avviare l'applicazione.

Una volta impostata l'applicazione, fare clic sul pulsante"Crea".
Se il file di avvio dell'applicazione non esiste ancora, lo strumento lo creerà immediatamente con un contenuto di esempio. Questo esempio visualizzerà "Funziona! " su tutte le richieste HTTP ad esso associate.
Ecco il contenuto di questo script di esempio:
var http = require('http'); var server = http.createServer(function(req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); var message = 'Funziona!\n', version = 'NodeJS ' + process.versions.node + '\n', response = [message, version].join('\n'); res.end(response); }); server.listen();
È anche possibile modificare il file package.json dall'interfaccia per aggiungere le dipendenze e installarle utilizzando il pulsante "Run NPM Install ":

Si noti che è necessario riavviare l'applicazione se le sue dipendenze sono state modificate.
È inoltre possibile definire le variabili d'ambiente nella sezione Variabili d'ambiente, se l'applicazione si basa su di esse per ottenere determinati parametri.
Accesso all'applicazione dal terminale
L'uso del terminale a riga di comando è parte integrante dell'ecosistema Node.js. Per accedere all'ambiente della vostra applicazione dal terminale, collegatevi ad esso (dal terminale web di cPanel o da un client SSH) e copiate il comando mostrato per entrare nell'ambiente della vostra applicazione:

Questa azione attiverà automaticamente l'ambiente virtuale corretto per la vostra applicazione, compresa la versione corretta di Node.js e NPM, nonché le dipendenze installate nell'ambiente (invece di essere installate nella cartella "node_modules " nella cartella delle applicazioni).
Debug di un'applicazione Node.js
Per eseguire il debug di un'applicazione Node.js, è possibile consultare il log degli errori di Apache. Il file di log degli errori di Apache contiene :
- L'output STDOUT e STDERR dell'applicazione Node.js
- Errori relativi al passeggero
- Errori relativi ad Apache
Se si è impostato manualmente il valore PassengerLogFile nel file .htaccess del sito, l'output STDOUT e STDERR e gli errori relativi a Passenger vengono inviati a questo file invece che al file di log di Apache.
È inoltre possibile impostare il valore PassengerFriendlyErrorPages su on nel file .htaccess per visualizzare gli errori relativi all'avvio dell'applicazione Node.js direttamente sul browser web.
Errori comuni di Node.js
Processo interrotto durante l'esecuzione di npm install
Possibili motivi: il processo può essere arrestato dal server se è in esecuzione oltre il tempo di esecuzione e/o la quantità di risorse (CPU, RAM, ecc.) autorizzate per il vostro pacchetto di hosting. È possibile visualizzare la cronologia degli arresti dei processi utilizzando lo strumento "Logs ", disponibile nell'interfaccia di cPanel.
Soluzione: È possibile limitare la memoria RAM utilizzata da npm utilizzando la variabile d'ambiente NODE_OPTIONS come segue:
NODE_OPTIONS='--max-old-space-size=2048' npm install
Questo esempio mostra, ad esempio, un limite di 2048 MiB (2 GB).
La cartella specificata è già utilizzata da /home/$USER/public_html/monapp quando è stata creata da Setup Node.js App
Possibili motivi :
- Un'applicazione Node.js, Python o Ruby pubblicata nella directory specificata esiste già.
- L'applicazione principale e l'applicazione URL specificata puntano alla stessa cartella.
Soluzione:
- Verificare che nessuna applicazione Node.js, Python o Ruby sia pubblicata nella cartella specificata. È possibile controllare il file .htaccess per la cartella in questione dal file manager o dal client FTP abituale per identificarlo rapidamente.
- Assicurarsi che i file dell'applicazione (.js, package.json ...) indicati da application root non si trovino nella cartella di pubblicazione indicata da application URL. A differenza delle applicazioni PHP, i file di un'applicazione Node.js non devono essere collocati in public_html.