In questo tutorial, configureremo un server Web con un proxy inverso. Il CMS che utilizzeremo è Keystone.js, un noto framework di applicazioni Web basato su Express.js. Il proxy inverso che useremo è Nginx, che è un proxy inverso gratuito e open source, nonché un server HTTP. Il database che useremo è MongoDB, un database di documenti NoSQL. Ciò richiederà di avere un dominio con i record impostati. Se non hai questo set, vai avanti e prenditi cura di te, e torna a questo tutorial.
Installazione del nodo
Innanzitutto installeremo Node.js, che è un interprete Javascript basato sul motore Javascript Chrome V8.
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install -y nodejs
sudo apt-get install -y build-essential
Installazione di Nginx
Successivamente, installeremo Nginx, il nostro proxy inverso.
sudo apt update
sudo apt install nginx
Ciò aggiornerà gli elenchi dei pacchetti e installerà Nginx. Al termine dell'installazione, configureremo il nostro progetto nodo.
Inizializzazione del nostro progetto Keystone
Crea il nostro progetto nodo. Per fare ciò, basta creare una nuova cartella.
mkdir website
Quindi, creeremo il nostro package.jsonfile. Per farlo, esegui semplicemente il npm inittuo terminale, compila i campi e rispondi " yes" per confermare. Dopo aver creato il package.jsonfile, installeremo i seguenti moduli di nodo.
sudo npm install -g generator-keystone
sudo npm install -g yo
Al termine del download, esegui quanto segue.
yo keystone
Compila i campi richiesti. Ti verrà chiesto per la project name, la template engine, emailper il pannello di controllo, e così via. Se non sai cosa selezionare, le impostazioni predefinite andranno bene. Dopo aver configurato l'impostazione keystone, possiamo verificare se il nostro server è in esecuzione digitando node keystoneper avviare l'applicazione. Per impostazione predefinita, l'applicazione sarà in esecuzione localhost, sulla porta 3000. Nota che se MongoDB non è installato, un database non sarà immediatamente disponibile. Puoi imparare come installarlo più avanti nel tutorial.
Ecco il layout di directory di base per Keystone.js:
-
/lib - Qui è dove memorizzerai le tue librerie personalizzate e altro codice.
-
/models- Qui è dove verranno archiviati i modelli di database dell'applicazione. KeystoneJS utilizza MongoDB come provider di database.
-
/public - Qui vengono archiviati i tuoi file statici (CSS, JS, immagini e così via).
-
/routes/api - Qui è dove verranno archiviati i controller API della tua applicazione.
-
/routes.views - I controller di visualizzazione dell'applicazione verranno memorizzati qui.
-
/templates - Qui è dove verranno archiviati tutti i file modello dell'applicazione.
-
/updates - Qui vengono archiviati gli script di migrazione.
-
package.json - Questo è il tuo file di configurazione npm che il generatore ha generato per noi.
-
keystone.js - Il nostro file di avvio principale, lo eseguiamo all'avvio del sito Web.
Inizializzazione del nostro database
Come accennato in precedenza, il nostro database che useremo è MongoDB, che è un database NoSQL affidabile, orientato ai documenti. Se hai già installato MongoDB, puoi saltare questa sezione. In caso contrario, ecco come installarlo su Ubuntu 16.04.
Importa la chiave pubblica utilizzata per il pacchetto mongoDB.
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 0C49F3730359A14518585931BC711F9BA15703C6
Creare il file di elenco utilizzato per installare il pacchetto.
echo "deb [ arch=amd64,arm64 ] http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.4.list
Aggiorna gli elenchi dei pacchetti utilizzando apt.
sudo apt update
Infine, installa MongoDB.
sudo apt install mongodb-org -y
Al termine dell'installazione, avviare MongoDB.
sudo service mongod start
Ciò avvierà il processo MongoDB sulla porta 27017.
MongoDB verrà utilizzato in tutta l'applicazione e verrà utilizzato per archiviare le informazioni che utilizziamo per i nostri modelli, ad esempio un Usermodello. Keystone lo utilizza come database preferito e al momento non è possibile utilizzare altri fornitori di database.
Installazione di PM2
Ora è il momento di installare PM2 (Process Manager 2.) PM2 è un gestore dei processi per le applicazioni Node.js, sotto forma di un modulo npm. Fornisce un modo semplice per gestire le applicazioni ed eseguirle in background. Poiché è in NPM, tutto ciò che dobbiamo fare per installarlo è eseguire quanto segue.
sudo npm install pm2 -g
Questo dice a npm di installarlo a livello globale, quindi possiamo usarlo ovunque nel nostro sistema.
Esecuzione / gestione di un'applicazione su PM2
In precedenza, abbiamo eseguito la nostra applicazione Web con node keystone. Con PM2, è un po 'diverso. Ora eseguiamo la nostra app nodo con il seguente.
pm2 start keystone.js
Ciò aggiungerà la nostra applicazione PM2 al nostro elenco di processi e verrà visualizzata una piccola casella in modo da poter vedere che è effettivamente online. Si noti la casella etichettata idper il processo. Tenetelo vicino, poiché faremo molti riferimenti a questo più avanti.
Per visualizzare i registri per l'applicazione.
pm2 logs [id]
Ad esempio, pm2 logs 0se questa è la tua prima applicazione PM2.
Per interrompere l'applicazione Web in qualsiasi momento.
pm2 stop [id]
Per eliminare completamente l'applicazione.
pm2 delete [id]
PM2 ha anche una dashboard di monitoraggio se vuoi vedere alcune statistiche di base per la tua applicazione, e puoi accedervi con questo.
pm2 monit
Questo mostrerà alcune informazioni di base come l'utilizzo della RAM, l'utilizzo della CPU e il tempo di attività.
Una grande caratteristica che offre PM2 è watching. In sostanza, guardare è quando PM2 rileva automaticamente le modifiche a uno qualsiasi dei file nella stessa directory del file di avvio e riavvierà automaticamente l'applicazione. Per abilitarlo, riavvia semplicemente l'applicazione, ma passale un flag di controllo.
pm2 restart [id] --watch
Per disabilitare la visione dopo che è stata abilitata, è sufficiente eseguire nuovamente lo stesso comando e la visione sarà disabilitata.
In questo tutorial, lasceremo a guardare fuori.
Impostazione del proxy inverso
Assicurati di aver installato Nginx. Se per qualche motivo non lo è, fare riferimento ai passaggi precedenti.
Modifica le impostazioni del firewall. Su Ubuntu ufwè il firewall ufficiale. Per impostazione predefinita, le connessioni sono bloccate sulla porta 80. Dobbiamo aggiungere un'eccezione per Nginx sulla porta 80, sulla quale verrà eseguita la nostra applicazione Web.
sudo ufw allow 'Nginx HTTP'
Verifica che il tuo server Nginx sia in esecuzione.
systemctl status nginx
Sotto la Activesezione, se vedi active (running), sei pronto. In caso contrario, puoi provare a riavviare il servizio.
systemctl restart nginx
Elimina il file di configurazione Nginx predefinito.
sudo rm /etc/nginx/sites-available/default
Creane uno nuovo e chiamalo semplicemente node.
sudo nano /etc/nginx/sites-available/node
Incolla quanto segue nel file e sostituiscilo example.comcon il dominio del tuo sito web.
listen 80;
server_name example.com;
location / {
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $http_host;
proxy_pass "http://127.0.0.1:3000";
}
}
Si noti che proxy_passindica l'IP su cui è localhostin esecuzione la nostra app Keystone localmente, che è sulla porta 3000. listen 80è la porta a cui vogliamo indirizzare l'app, che in questo caso è la porta 80.
Quindi, dobbiamo creare un collegamento simbolico o simbolico a una cartella chiamata sites-enabled. La differenza tra sites-enablede sites-availableè che sites-enabledviene effettivamente caricata da Nginx.
sudo ln -s /etc/nginx/sites-available/node /etc/nginx/sites-enabled/node
Ora il tuo file di configurazione sites-availablesarà pronto per l'uso e verrà caricato da sites-enabled. Per applicare la configurazione in modo che abbia effetto, è sufficiente riavviare Nginx.
sudo systemctl restart nginx
Infine, riavvia l'applicazione PM2
pm2 restart [id]
Ora puoi navigare nel tuo dominio in un browser e vedrai una Welcome to Keystoneschermata, con un pannello per il login.
Se lo vedi, hai impostato correttamente un server Web di produzione Node.js. In caso contrario, potresti aver fatto un passaggio in modo errato e potresti voler tornare indietro e seguire attentamente ogni passaggio.
Puoi saperne di più su Nginx visitando il loro sito Web .
Spero che questo tutorial ti sia piaciuto e spero che questo ti abbia aiutato a configurare il tuo server web per la produzione sul tuo VPS Vultr.