Hapi.js è un framework Node.js ricco, robusto e potente progettato per la creazione di applicazioni Web nell'ecosistema Node.js. Il suo design semplice lo rende facile per iniziare. Hapi utilizza al suo interno molte delle più recenti funzionalità di JavaScript ES6, come promesse da ES6. Per quelli di voi che hanno già utilizzato Express in precedenza, Hapi ti consente di provare qualcosa di nuovo e provare tutte le ultime funzionalità JavaScript.
In questo tutorial, il nostro obiettivo sarà quello di impostare una pagina Web di base Hapi.js, ospitata dal nostro Vultr VPS, su Ubuntu 16.04 LTS. Per coloro che hanno un dominio per il loro sito, utilizzeremo un proxy inverso per collegare il nostro dominio al nostro sito Web. Infine, impareremo come gestirlo con un manager di processo. Ora che abbiamo rimosso questo, iniziamo.
Installazione di Node.js
Dovremo installare Node.js. Per farlo su Ubuntu 16.04 LTS, segui queste istruzioni.
Aggiunta del repository
Dovremo aggiungere il repository APT NodeSource, che contiene l'ultima versione LTS di Node.js.
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install -y nodejs
Stiamo scaricando uno script che useremo per aggiungere il repository al nostro elenco di fonti, oltre a installare Node.js dal repository NodeSource.
Installazione di Build Tools
Oltre a installare Node.js stesso, dovremo anche installare alcuni strumenti di compilazione necessari, che aiuteranno a costruire tutti i moduli che potremmo aver bisogno di installare.
sudo apt-get install -y build-essential
Questo semplicemente scarica e installa gli strumenti di compilazione dal repository.
Impostazione della directory dell'applicazione
È buona norma designare una cartella che utilizzeremo per la nostra applicazione, che conterrà tutti i dati della nostra applicazione, come file di configurazione e script di avvio. Crea una cartella, nominandola come preferisci. Per il bene di questo tutorial, suppongo che tu l'abbia chiamato site
.
mkdir site
Una volta creata la cartella, ora possiamo cambiarla. Assicurarsi di trovarsi nella directory appena creata, avviare la procedura guidata del pacchetto NPM.
npm init
Ti verrà chiesto di inserire alcune cose diverse, come il nome della tua applicazione, il file di avvio, la licenza e così via. La maggior parte dei campi è possibile lasciare i valori predefiniti, ad eccezione dei campi più ovvi, come il nome dell'applicazione. Alla fine, sarà simile a questo:
{
"name": "site",
"version": "1.0.0",
"description": "Hapi.js site",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "rich",
"license": "MIT"
}
Una volta che sei soddisfatto del risultato, fai clic ENTERper salvare il file.
Installazione di Hapi.js
Ora che la tua directory è stata costruita con successo, ora possiamo procedere con l'installazione di Hapi.js. Come accennato in precedenza, utilizzeremo NPM per scaricare Hapi.js, nonché le sue dipendenze, per il nostro progetto. Nella directory del progetto, eseguire quanto segue.
npm install hapi.js
Questo scarica Hapi.js da NPM e lo installa nella nostra directory di progetto. Allo stesso modo, tutte le dipendenze su cui Hapi.js può fare affidamento vengono anche scaricate per nostra comodità.
Impostazione della nostra applicazione di esempio
Ora è il momento di impostare il nostro file di applicazione Hapi.js di base. Questo conterrà tutto il nostro codice per l'applicazione. Più avanti, possiamo espandere il nostro codice dell'applicazione e aggiungere altre cose a suo piacimento.
Successivamente, creeremo il nostro file di avvio. Fare riferimento alla main
sezione del package.json
file per determinare esattamente come denominare il file. Da quando ho usato lo schema di denominazione predefinito, verrà chiamato il nostro file index.js
.
nano index.js
Una volta entrato nell'editor di testo nano, crea il codice dell'applicazione di base, in questo modo.
const Hapi=require('hapi');
const server=Hapi.server({
host:'localhost',
port: 3000
});
server.route({
method:'GET',
path:'/',
handler:((request,h)) => {
return 'Sample Hapi.js Application';
}
});
async function start() {
try {
await server.start();
} catch (err) {
console.log(err);
process.exit(1);
}
console.log(`Our server is running! ${server.info.uri}`);
};
start();
Innanzitutto, importiamo il modulo Hapi. Quindi inizializziamo il nostro costruttore di server, che contiene l'host su cui vogliamo eseguire il server, così come la porta, che è 3000
per questo tutorial. Successivamente, impostiamo un router di base, che indica che ogni volta che qualcuno visita il sito, verrà accolto con un semplice messaggio. Per finire, abbiamo una funzione asincrona per avviare il nostro server, che accederà alla console su cui è in esecuzione il nostro server. Al termine, salva e chiudi il file ( CTRL+ X)
Ora che il nostro file principale è impostato, siamo pronti per avviare la nostra applicazione.
node index.js
Se vedi " Our server is running!
" nella console, il server è stato avviato correttamente.
Installa Nginx
Poiché Nginx è disponibile nei repository Ubuntu predefiniti, l'installazione è semplice. Basta aggiornare gli elenchi dei pacchetti e installarli.
sudo apt update
sudo apt install nginx -y
Dopo aver aggiornato gli elenchi dei pacchetti, verranno installati Nginx e le sue dipendenze.
Per consentire a Nginx di invertire il proxy della nostra applicazione, dovremo creare un file di configurazione. Questo file di configurazione conterrà informazioni sulla nostra applicazione, che Nginx utilizzerà per il proxy inverso.
Elimina la configurazione predefinita creata da Nginx, poiché la sostituiremo con la nostra in seguito.
sudo rm /etc/nginx/sites-enabled/default
Crea un nuovo file nella sites-available
cartella. Per quanto riguarda la denominazione, possiamo attenerci semplicemente site
, per semplicità.
sudo nano /etc/nginx/sites-available/site
Nel file, incolla quanto segue e salva.
server {
listen 80;
location / {
proxy_set_header X-Real-IP
$remote_addr;
proxy_set_header
X-Forwarded-For
$proxy_add_x_forwarded_for;
proxy_set_header Host
$http_host;
proxy_set_header
X-NginX-Proxy true; proxy_pass
http://127.0.0.1:3000/;
proxy_redirect off;
proxy_http_version 1.1;
proxy_set_header Upgrade
$http_upgrade;
proxy_set_header Connection
"upgrade";
proxy_redirect off;
proxy_set_header
X-Forwarded-Proto $scheme;
}
}
In questo file, stiamo dicendo a Nginx di ascoltare sulla porta 80
. Stiamo anche impostando il passthrough proxy localhost
sull'indirizzo e sulla porta 3000
, che è la stessa porta della nostra applicazione Hapi.
Ora puoi tornare alla directory dell'applicazione e avviare il sito. Una volta avviato il sito, vai semplicemente su http://yourdomain.com
o http://yourip
e vedrai il testo " Hello World
".
Installa PM2
PM2 può essere trovato nel repository NPM e puoi installarlo a livello globale per essere accessibile da qualsiasi luogo, in questo modo.
sudo npm install pm2 -g
Il -g
flag alla fine indica che vogliamo installare il modulo nella cartella dei moduli globali, che ci permetterà di usarlo al di fuori della nostra directory di progetto. Questo viene utilizzato affinché il nostro progetto si comporti come una normale applicazione di sistema.
Avvio della nostra app con PM2
Dopo aver installato PM2, tornare alla directory del progetto. La sintassi per avviare la nostra applicazione sarà leggermente diversa ora. Ecco come lo faremo con PM2.
pm2 start index.js --name site
Utilizziamo la funzione di avvio PM2, che fondamentalmente crea un profilo per la nostra applicazione, sotto il nome site
. Dopo aver eseguito questo comando, il tuo sito Web verrà avviato, ma noterai che i registri non verranno visualizzati. Questo perché il modo in cui visualizziamo i registri ora è diverso.
pm2 logs site
Puoi anche specificare quante righe di log vuoi vedere, con l' --lines
argomento.
Conclusione
Hai configurato correttamente un server Web Hapi.js, invertito il proxy con Nginx e imparato a gestirlo meglio con PM2. Con questa conoscenza, puoi espandere ulteriormente questo tutorial e creare un'applicazione Hapi.js molto avanzata. Per saperne di più sulle possibilità di Hapi, visita la loro documentazione ufficiale . Se vuoi saperne di più sulle possibilità di PM2, consulta la loro guida rapida .