Wyszukiwanie w witrynie

Jak zainstalować PM2, aby uruchamiać aplikacje Node.js na serwerze produkcyjnym


PM2 to darmowy, zaawansowany, wydajny i wieloplatformowy menedżer procesów na poziomie produkcyjnym o otwartym kodzie źródłowym dla Node.js z wbudowanym modułem równoważenia obciążenia. Działa na systemach Linux, MacOS i Windows. Obsługuje monitorowanie aplikacji, efektywne zarządzanie mikrousługami/procesami, uruchamianie aplikacji w trybie klastra, płynne uruchamianie i zamykanie aplikacji.

Utrzymuje aplikacje „wiecznie aktywne” dzięki automatycznemu ponownemu uruchomieniu i można włączyć uruchamianie przy starcie systemu, zapewniając w ten sposób wysoką dostępność (HA) konfiguracje lub architektury.

Warto zauważyć, że PM2 umożliwia uruchamianie aplikacji w trybie klastrowym bez wprowadzania jakichkolwiek zmian w kodzie (zależy to również od liczby rdzeni procesora na serwerze). Umożliwia także łatwe zarządzanie dziennikami aplikacji i wiele więcej.

Ponadto zapewnia także niesamowitą obsługę głównych frameworków Node.js, takich jak Express, Adonis Js, Sails , Hapi i więcej, bez konieczności wprowadzania jakichkolwiek zmian w kodzie. PM2 jest używany przez takie firmy jak IBM, Microsoft, PayPal i inne.

W tym artykule wyjaśnimy, jak zainstalować i używać PM2 do uruchamiania aplikacji Nodejs na produkcyjnym serwerze Linux. Stworzymy aplikację do zademonstrowania niektórych podstawowych funkcji PM2, abyś mógł z nią zacząć.

Krok 1: Zainstaluj Nodejs i NPM w systemie Linux

1. Aby zainstalować najnowszą wersję Node.js i NPM, najpierw musisz włączyć oficjalne repozytorium NodeSource w swojej dystrybucji Linuksa, a następnie zainstalować Pakiety Node.js i NPM, jak pokazano.

Na Debianie/Ubuntu

---------- Install Node.js v11.x ---------- 
curl -sL https://deb.nodesource.com/setup_11.x | sudo -E bash -
sudo apt-get install -y nodejs

---------- Install Node.js v10.x ----------
curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
sudo apt-get install -y nodejs

Na CentOS/RHEL i Fedorze

---------- Install Node.js v11.x ---------- 
curl -sL https://rpm.nodesource.com/setup_11.x | bash -

---------- Install Node.js v10.x ----------
curl -sL https://rpm.nodesource.com/setup_10.x | bash -

Krok 2: Utwórz aplikację Nodejs

2. Teraz utwórzmy aplikację testową (założymy, że ma stronę klienta i administratora, które korzystają z tej samej bazy danych), mikrousługi będą działać na portach 3000 i Odpowiednio 3001.

sudo mkdir -p /var/www/html/app
sudo mkdir -p /var/www/html/adminside
sudo vim /var/www/html/app/server.js
sudo vim /var/www/html/adminside/server.js

Następnie skopiuj i wklej poniższe fragmenty kodu do plików server.js (zastąp 192.168.43.31 adresem IP swojego serwera).

##mainapp code
const http = require('http');

const hostname = '192.168.43.31';
const port = 3000;

const server = http.createServer((req, res) => {
	res.statusCode = 200;
  	res.setHeader('Content-Type', 'text/plain');
  	res.end('This is the Main App!\n');
});

server.listen(port, hostname, () => {
  	console.log(`Server running at http://${hostname}:${port}/`);
});
##adminside code
const http = require('http');

const hostname = '192.168.43.31';
const port = 3001;

const server = http.createServer((req, res) => {
	res.statusCode = 200;
  	res.setHeader('Content-Type', 'text/plain');
  	res.end('This is the Admin Side!\n');
});

server.listen(port, hostname, () => {
  	console.log(`Server running at http://${hostname}:${port}/`);
});

Zapisz plik i wyjdź.

Krok 3: Zainstaluj Menedżera procesów produktu PM2 w systemie Linux

3. Najnowszą stabilną wersję PM2 można zainstalować poprzez NPM, jak pokazano.

sudo npm i -g pm2 

4. Po zainstalowaniu PM2 możesz uruchomić aplikacje węzłowe za pomocą następujących poleceń.

sudo node /var/www/html/app/server.js
sudo node /var/www/html/adminside/server.js

Pamiętaj, że w środowisku produkcyjnym powinieneś uruchomić je przy użyciu PM2, jak pokazano (polecenie sudo może nie być potrzebne, jeśli aplikacja jest przechowywana w lokalizacji, w której zwykły użytkownik ma uprawnienia do odczytu i zapisu).

sudo pm2 start /var/www/html/app/server.js
sudo pm2 start /var/www/html/adminside/server.js

Krok 4: Jak używać i zarządzać PM2 w systemie Linux

5. Aby uruchomić aplikację w trybie klastra, użyj flagi -i, aby na przykład określić liczbę instancji.

sudo pm2 start /var/www/html/app/server.js -i 4 
sudo pm2 scale 0 8			#scale cluster app to 8 processes

6. Aby wyświetlić listę wszystkich aplikacji węzła (proces/mikrousługi), uruchom następujące polecenie.

sudo pm2 list

7. Aby monitorować logi, niestandardowe metryki i przetwarzać informacje ze wszystkich procesów, uruchamiając następujące polecenie.

sudo pm2 monit

8. Aby wyświetlić szczegóły procesu pojedynczego węzła, jak pokazano, używając identyfikatora lub nazwy procesu.

sudo pm2 show 0

Krok 5: Jak zarządzać aplikacjami węzła za pomocą PM2 w systemie Linux

9. Poniżej znajduje się lista niektórych typowych poleceń zarządzania procesami (pojedynczym lub wszystkimi), o których należy pamiętać.

sudo pm2 stop all                  		#stop all apps
sudo pm2 stop 0                    		#stop process with ID 0
sudo pm2 restart all               		#restart all apps
sudo pm2 reset 0		         	#reset all counters
sudo pm2 delete all                		#kill and remove all apps
sudo pm2 delete 1                 		#kill and delete app with ID 1

10. Aby zarządzać logami aplikacji, użyj poniższych poleceń.

sudo pm2 logs                      	#view logs for all processes 
sudo pm2 logs 1	         	#view logs for app 1
sudo pm2 logs --json               	#view logs for all processes in JSON format
sudo pm2 flush			#flush all logs

11. Aby zarządzać procesem PM2, użyj poniższych poleceń.

sudo pm2 startup            #enable PM2 to start at system boot
sudo pm2 startup systemd    #or explicitly specify systemd as startup system 
sudo pm2 save               #save current process list on reboot
sudo pm2 unstartup          #disable PM2 from starting at system boot
sudo pm2 update	      #update PM2 package

Krok 6: Uzyskaj dostęp do aplikacji węzła z przeglądarki internetowej

12. Aby uzyskać dostęp do wszystkich aplikacji węzła ze zdalnej przeglądarki internetowej, najpierw musisz otworzyć następujące porty w zaporze systemowej, aby umożliwić klientom połączenia z aplikacjami, jak pokazano.

-------- Debian and Ubuntu -------- 
sudo ufw allow 3000/tcp
sudo ufw allow 3001/tcp
sudo ufw reload

-------- RHEL and CentOS --------
firewall-cmd --permanent --add-port=3000/tcp
firewall-cmd --permanent --add-port=3001/tcp
firewall-cmd --reload 

13. Następnie uzyskaj dostęp do swoich aplikacji z przeglądarki internetowej, korzystając z tych adresów URL:

http://198.168.43.31:3000
http://198.168.43.31:3001 

I wreszcie, PM2 to prosty, wbudowany system modułowy rozszerzający jego podstawowe możliwości. Niektóre z modułów obejmują pm2-logrotate, pm2-webshell, pm2-server-monit i inne – możesz także tworzyć i używać własnych modułów.

Aby uzyskać więcej informacji, przejdź do repozytorium PM2 GitHub: https://github.com/Unitech/PM2/.

To wszystko! PM2 to zaawansowany i wydajny menedżer procesów na poziomie produkcyjnym dla Node.js z wbudowanym modułem równoważenia obciążenia. W tym artykule pokazaliśmy, jak zainstalować i używać PM2 do zarządzania aplikacjami Nodejs w systemie Linux. Jeśli masz jakieś pytania, wyślij je do wykorzystania za pomocą poniższego formularza komentarza.