GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Come distribuire le applicazioni Node.js con pm2 e Nginx su Ubuntu

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.

  • Ubuntu
  • Node.js
  • Nginx

Ubuntu
  1. Come installare Node.js e NPM su Ubuntu 18.04 e 20.04

  2. Come installare Nginx con PHP5 e MySQL su Ubuntu 11.10

  3. Come distribuire Modsecurity con Nginx su Ubuntu 20.04 LTS

  4. Come distribuire l'applicazione Flask con Nginx e Gunicorn su Ubuntu 20.04

  5. Come installare Node.js con NVM e Nginx su Ubuntu 22.04

Come installare Drupal 8 con Nginx, PHP-FPM e SSL su Ubuntu 15.10

Come installare Mailpile con Nginx su Ubuntu 15.10

Come installare OpenCart 2 con Nginx e SSL su Ubuntu 15.10

Come installare Django con PostgreSQL e Nginx su Ubuntu 16.04

Come installare Wordpress con Nginx, MariaDB e HHVM in Ubuntu 15.04

Come distribuire l'applicazione Laravel con Nginx su Ubuntu?