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.