pm2 è un process manager per le applicazioni Node.js, ti consente di mantenere in vita le tue app e ha un bilanciamento del carico integrato. È semplice e potente, puoi sempre riavviare o ricaricare la tua applicazione del nodo senza tempi di inattività e ti consente di creare un cluster della tua app del nodo.
In questo tutorial, ti mostrerò come installare e configurare pm2 per la semplice applicazione 'Express' e quindi configurare Nginx come proxy inverso per l'applicazione del nodo in esecuzione in pm2.
Prerequisiti
- Ubuntu 16.04 - 64 bit
- privilegi radice
Passaggio 1 - Installa Node.js LTS
In questo tutorial, inizieremo il nostro progetto da zero. Innanzitutto, abbiamo bisogno di Nodejs installato sul server. Userò Nodejs LTS versione 6.x che può essere installato dal repository nodesource.
Installa il pacchetto 'python-software-properties ' dal repository di Ubuntu e quindi aggiungi il repository Nodejs 'nodesource'.
sudo apt-get install -y python-software-properties
curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
Installa l'ultima versione di Nodejs LTS.
sudo apt-get install -y nodejs
Quando l'installazione è riuscita, controlla la versione del nodo e npm.
node -v
npm -v
Passaggio 2:genera un'app di esempio Express
Userò un semplice scheletro di applicazione web generato con un pacchetto chiamato 'express-generator ' per questa installazione di esempio. Express-generator può essere installato con il comando npm.
Installa 'generatore express ' con npm:
npm install express-generator -g
-g: installa il pacchetto all'interno del sistema
Eseguiremo l'applicazione come utente normale, non come utente root o super utente. Quindi dobbiamo prima creare un nuovo utente.
Crea un nuovo utente, io chiamo il mio 'yume ':
useradd -m -s /bin/bash yume
passwd yume
Accedi al nuovo utente utilizzando su:
su - yume
Quindi, genera una nuova semplice applicazione web con il comando express:
express hakase-app
Il comando creerà una nuova directory di progetto 'hakase-app '.
Vai alla directory del progetto e installa tutte le dipendenze necessarie all'app.
cd hakase-app
npm install
Quindi prova e avvia una nuova semplice applicazione con il comando seguente:
DEBUG=myapp:* npm start
Per impostazione predefinita, la nostra applicazione Express verrà eseguita sulla porta 3000 . Ora visita l'indirizzo IP del server:192.168.33.10:3000
La semplice struttura dell'applicazione Web è in esecuzione sulla porta 3000, sotto l'utente 'yume'.
Passaggio 3:installa pm2
pm2 è un pacchetto di nodi e può essere installato con il comando npm. Quindi installiamolo con npm (con i privilegi di root, quando sei ancora loggato come utente hakase, quindi esegui il comando "exit" per ridiventare root):
npm install pm2 -g
Ora possiamo usare pm2 per la nostra applicazione web.
Vai alla directory dell'app 'hakase-app ':
su - hakase
cd ~/hakase-app/
Lì puoi trovare un file chiamato 'package.json ', mostrane il contenuto con il comando cat.
cat package.json
Puoi vedere "inizio La riga ' contiene un comando che viene utilizzato da Nodejs per avviare l'applicazione express. Questo comando lo useremo con il process manager pm2.
Esegui l'applicazione express con il comando pm2 di seguito:
pm2 start ./bin/www
Ora puoi vedere i risultati qui sotto:
La nostra applicazione express è in esecuzione sotto pm2 con il nome 'www ', id '0 '. Puoi ottenere maggiori dettagli sull'applicazione in esecuzione in pm2 con l'opzione show 'show nodeid|name '.
pm2 show www
Se ti piace vedere il registro della nostra applicazione, puoi utilizzare l'opzione registri. È solo un registro degli accessi e degli errori e puoi vedere lo stato HTTP dell'applicazione.
pm2 logs www
Puoi vedere che il nostro processo è in esecuzione. Ora consentiamo l'avvio all'avvio.
pm2 startup systemd
sistema di sistema :Ubuntu 16 utilizza systemd.
Riceverai un messaggio per l'esecuzione di un comando come root. Torna ai privilegi di root con "exit" e quindi esegui quel comando.
sudo env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup systemd -u yume --hp /home/yume
Genererà il file di configurazione systemd per l'avvio dell'applicazione. Quando riavvii il server, l'applicazione verrà eseguita automaticamente all'avvio.
Passaggio 4 - Installa e configura Nginx come proxy inverso
In questo tutorial, useremo Nginx come proxy inverso per l'applicazione del nodo. Nginx è disponibile nel repository di Ubuntu, installalo con il comando apt:
sudo apt-get install -y nginx
Quindi, vai a "siti disponibili ' e creare un nuovo file di configurazione dell'host virtuale.
cd /etc/nginx/sites-available/
vim hakase-app
Incolla la configurazione di seguito:
upstream hakase-app {
# Nodejs app upstream
server 127.0.0.1:3000;
keepalive 64;
}
# Server on port 80
server {
listen 80;
server_name hakase-node.co;
root /home/yume/hakase-app;
location / {
# Proxy_pass configuration
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_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_max_temp_file_size 0;
proxy_pass http://hakase-app/;
proxy_redirect off;
proxy_read_timeout 240s;
}
}
Salva il file ed esci da vim.
Sulla configurazione:
- L'app del nodo è in esecuzione con il nome di dominio 'hakase-node.co '.
- Tutto il traffico da nginx verrà inoltrato all'app del nodo in esecuzione sulla porta 3000 .
Attiva la configurazione creando un collegamento simbolico nella directory dei siti abilitati.
ln -s /etc/nginx/sites-available/hakase-app /etc/nginx/sites-enabled/
Testa la configurazione di Nginx e assicurati che non ci siano errori.
nginx -t
Avvia Nginx e abilitalo all'avvio all'avvio:
systemctl start nginx
systemctl enable nginx
Fase 5 - Test
Apri il tuo browser web e visita il nome di dominio (il mio è):
http://hakase-app.co
Vedrai che l'applicazione Express è in esecuzione sul server web nginx.
Quindi, riavvia il server e assicurati che l'app del nodo sia in esecuzione al momento dell'avvio:
pm2 save
sudo reboot
Se hai eseguito nuovamente l'accesso al tuo server, controlla il processo dell'app del nodo. Esegui il comando seguente come 'yume ' utente.
su - yume
pm2 status www
L'applicazione Node è in esecuzione con pm2 e Nginx come proxy inverso.
Link
- Ubuntu
- Node.js
- Nginx