1.  [Strona główna](/) ›
2.  [Baza wiedzy](/baza-wiedzy/) ›
3.  PM2 - zarządzanie procesami Node.js na VPS

# PM2 - zarządzanie procesami Node.js na VPS

Opublikowano: 9 kwietnia 2026 · Kategoria: VPS / Node.js

⚡ W skrócie · 8 min czytania

-   PM2 process manager: instalacja, ecosystem.config.js, cluster mode, pm2 startup, logrotacja i monitoring. Kompletny przewodnik po zarządzaniu Node.js na VPS.
-   Instalacja PM2.
-   Podstawowe komendy.
-   ecosystem.config.js - konfiguracja jako kod.
-   Cluster mode - wiele rdzeni CPU.

Uruchomiłeś aplikację Node.js komendą `node app.js` i zamknąłeś terminal - serwer padł. Crash aplikacji? Restart VPS? Znów trzeba logować się i uruchamiać ręcznie. PM2 rozwiązuje wszystkie te problemy: działa jako dæmon, restartuje procesy po awarii, startuje automatycznie po restarcie serwera i umożliwia uruchamianie wielu instancji (cluster mode) dla maksymalnego wykorzystania CPU.

## Instalacja PM2

PM2 instalujesz globalnie przez npm. Upewnij się, że masz Node.js i npm na VPS (zalecane: Node.js 18 LTS lub nowszy):

```
# Instalacja PM2 globalnie
npm install -g pm2

# Sprawdzenie wersji
pm2 --version

# Opcjonalnie: aktualizacja PM2
npm install -g pm2@latest
pm2 update
```

## Podstawowe komendy

Najważniejsze komendy PM2, których używasz codziennie:

```
# Uruchomienie aplikacji
pm2 start app.js --name "moja-aplikacja"

# Lista wszystkich procesów
pm2 list
pm2 ls       # skrót

# Szczegółowe info o procesie
pm2 show moja-aplikacja

# Restart / stop / usunięcie
pm2 restart moja-aplikacja
pm2 stop moja-aplikacja
pm2 delete moja-aplikacja

# Restart wszystkich procesów
pm2 restart all

# Logi na żywo
pm2 logs
pm2 logs moja-aplikacja          # tylko jeden proces
pm2 logs moja-aplikacja --lines 100  # ostatnie 100 linii
```

## ecosystem.config.js - konfiguracja jako kod

Zamiast długich komend startowych, definiuj aplikacje w pliku konfiguracyjnym `ecosystem.config.js` (lub `.cjs`). Plik ten możesz dodać do repozytorium - konfiguracja jako kod:

```
// ecosystem.config.js
module.exports = {
  apps: [
    {
      name: 'moja-aplikacja',
      script: 'dist/server.js',        // główny plik po build
      instances: 'max',                // cluster mode: tyle ile rdzeni CPU
      exec_mode: 'cluster',
      watch: false,                    // NIE włączaj na produkcji
      max_memory_restart: '500M',      // restart gdy RAM > 500 MB

      // Zmienne środowiskowe
      env: {
        NODE_ENV: 'development',
        PORT: 3000,
      },
      env_production: {
        NODE_ENV: 'production',
        PORT: 3000,
        DATABASE_URL: 'postgres://user:pass@localhost/db',
      },

      // Logi
      out_file: '/var/log/pm2/app-out.log',
      error_file: '/var/log/pm2/app-err.log',
      merge_logs: true,
      log_date_format: 'YYYY-MM-DD HH:mm:ss',
    },
  ],
};
```

```
# Uruchomienie z ecosystem
pm2 start ecosystem.config.js

# Uruchomienie w trybie produkcyjnym (env_production)
pm2 start ecosystem.config.js --env production

# Reload (bez downtime, graceful restart)
pm2 reload ecosystem.config.js --env production
```

## Cluster mode - wiele rdzeni CPU

Node.js jest jednowątkowy - domyślnie utilizuje tylko jeden rdzeń procesora, nawet na 8-rdzeniowym VPS. Cluster mode uruchamia N kopii aplikacji i rozkłada ruch między nimi:

```
# Uruchom 4 instancje (ręcznie)
pm2 start app.js -i 4

# Automatycznie: tyle instancji ile rdzeni CPU
pm2 start app.js -i max

# W ecosystem.config.js (zalecane):
# instances: 'max'  lub  instances: 4
# exec_mode: 'cluster'

# Sprawdzenie ile workers działa
pm2 list
```

Ważne: cluster mode działa bezproblemowo dla aplikacji bezstanowych (stateless). Jeśli Twoja aplikacja trzyma stan w pamięci procesu (np. sesje w Map), różne requesty mogą trafić do różnych instancji - przenieś stan do Redis lub bazy danych.

## pm2 startup - autostart po restarcie VPS

Bez konfiguracji autostartu po restarcie serwera procesy PM2 nie wznowią się. Dwie komendy załatwiają sprawę na stałe:

```
# Krok 1: wygeneruj i uruchom skrypt systemd
pm2 startup
# PM2 wyświetli polecenie do skopiowania, np.:
# sudo env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup systemd -u ubuntu --hp /home/ubuntu
# Skopiuj i uruchom to polecenie!

# Krok 2: zapisz aktualną listę procesów
pm2 save

# Opcjonalnie: wyłączenie autostartu
pm2 unstartup systemd
```

Po restarcie VPS możesz weryfikować: `pm2 list` - procesy powinny być w stanie `online`.

## Monitoring - pm2 monit i pm2 plus

```
# Terminal dashboard (CPU, RAM, logi na żywo)
pm2 monit

# Metryki JSON (przydatne do skryptów)
pm2 prettylist
pm2 show moja-aplikacja
```

`pm2 monit` to wbudowany dashboard terminalowy - pokazuje zużycie CPU i RAM każdego procesu w czasie rzeczywistym, listę procesów i strumień logów. Wystarczy do codziennego monitorowania.

## Rotacja logów - pm2-logrotate

Domyślnie PM2 nie rotuje logów - plik rośnie bez ograniczeń. Moduł `pm2-logrotate` dodaje rotację automatycznie:

```
# Instalacja modułu
pm2 install pm2-logrotate

# Konfiguracja
pm2 set pm2-logrotate:max_size 10M       # rotuj gdy plik > 10 MB
pm2 set pm2-logrotate:retain 7           # przechowuj 7 plików
pm2 set pm2-logrotate:compress true      # kompresuj stare logi (gzip)
pm2 set pm2-logrotate:rotateInterval '0 0 * * *'  # codziennie o północy

# Sprawdzenie konfiguracji
pm2 conf pm2-logrotate
```

## Zero-downtime deployment

W cluster mode PM2 obsługuje graceful reload: restaruje instancje jedna po drugiej, bez przerwy w ruchu:

```
# Graceful reload (zero downtime) - cluster mode
pm2 reload moja-aplikacja

# Twardy restart (krótka przerwa)
pm2 restart moja-aplikacja

# Reload z nowym ecosystem
pm2 reload ecosystem.config.js --env production
```

**Tip:** W aplikacji Express/Fastify obsługuj sygnał `SIGINT` i zamykaj serwer gracefully (czekaj na dokończenie aktywnych requestów). PM2 wyśle ten sygnał przed restartem workerów. Bez tego Reload działa, ale aktywne requesty mogą zostać przerwane.

## Najczęstsze pytania

Czym jest PM2 i do czego służy? +

PM2 (Process Manager 2) to zaawansowany menedżer procesów dla Node.js. Pozwala uruchamiać aplikacje w tle, automatycznie restartować je po crashu, zarządzać logami, monitorować zużycie CPU i RAM, a także uruchamiać wiele instancji w trybie cluster dla lepszego wykorzystania wielordzeniowych procesorów. Jest de facto standardem do hostowania Node.js na VPS.

Jak sprawić, żeby PM2 startował automatycznie po restarcie serwera? +

Użyj komendy pm2 startup - PM2 wygeneruje polecenie systemd (lub init.d) dostosowane do Twojego systemu. Skopiuj i uruchom to polecenie jako root. Następnie zapisz aktualną listę procesów: pm2 save. Od tej pory po restarcie VPS PM2 automatycznie wznowi wszystkie zapisane procesy.

Co to jest cluster mode w PM2? +

Node.js domyślnie działa jednowątkowo i wykorzystuje tylko jeden rdzeń CPU. Cluster mode w PM2 uruchamia kilka instancji tej samej aplikacji (workers) - po jednej na każdy rdzeń. PM2 działa jako master i rozdziela przychodzące połączenia między workers za pomocą wbudowanego load balancera. Efekt: pełne wykorzystanie 4/8/16-rdzeniowego VPS bez żadnych zmian w kodzie aplikacji.

Jak zarządzać logami w PM2? +

PM2 domyślnie zapisuje logi do ~/.pm2/logs/ - osobne pliki dla stdout i stderr każdej aplikacji. Komenda pm2 logs pokazuje logi na żywo. Dla rotacji logów (żeby plik nie urósł do gigabajtów) zainstaluj moduł: pm2 install pm2-logrotate i skonfiguruj go przez pm2 set pm2-logrotate:max\_size 10M pm2 set pm2-logrotate:retain 7 - maksymalny rozmiar pliku 10 MB, 7 dni historii.

## Sprawdź oferty pasujące do tego scenariusza

Poniżej masz szybkie przejścia do ofert i stron z kodami rabatowymi tam, gdzie są dostępne.

Contabo

Tani VPS z dużym RAM - idealny do Node.js z PM2 cluster mode na 4-6 rdzeniach

VPS Node.js

[Aktywuj rabat →](/out/contabo/#reklama "Contabo")

#Reklama · link partnerski

[Zobacz kod rabatowy →](/kody-rabatowe/contabo/)

Mikrus

Tani VPS do testowania PM2 i Node.js przed skalowaniem na większy serwer

Tani VPS

[Aktywuj rabat →](/out/mikrus/#reklama "Mikrus")

#Reklama · link partnerski

[Zobacz kod rabatowy →](/kody-rabatowe/mikrus/)

LH.pl

Hosting współdzielony z Node.js i PHP - alternatywa dla samodzielnego VPS

Managed

[Aktywuj rabat →](/out/lh-pl/#reklama "LH.pl")

#Reklama · link partnerski

[Zobacz kod rabatowy →](/kody-rabatowe/lh-pl/)

## Powiązane strony

-   [Node.js na hostingu współdzielonym](/baza-wiedzy/nodejs-na-hostingu-wspoldzielonym/)
-   [Docker na VPS - instalacja i konfiguracja](/baza-wiedzy/docker-na-vps/)
-   [Nginx load balancer - konfiguracja upstream](/baza-wiedzy/nginx-load-balancer-konfiguracja/)
-   [Nginx - konfiguracja virtual hostów](/baza-wiedzy/nginx-vhost-konfiguracja/)
-   [Porównanie serwerów VPS](/vps/)
-   [Wszystkie artykuły](/baza-wiedzy/)
-   [Jaki VPS wybrać?](/jaki-vps-wybrac/)

Autor: [Redakcja HostGrade.pl](/autorzy/) Zespół redakcyjny · Aktualizacja: 9 kwietnia 2026

Artykuły HostGrade.pl przygotowuje i aktualizuje redakcja serwisu. Ceny startowe, ceny odnowienia i warunki planów sprawdzamy w cennikach i regulaminach dostawców, a potem liczymy całkowity koszt za 2 lata (cena startowa plus odnowienia). Zasady zbierania danych i liczenia kosztów opisujemy na stronie Metodologia. Linki partnerskie oznaczamy jako #reklama.

[O redakcji i metodologii →](/autorzy/)