Tutorials  /  JavaScript

Node.js Anwendungen in Produktion mit PM2 verwalten

Ccentron Redaktion · Juli 2026 ·6 Min. Lesezeit ·JavaScript, Tutorial

Node.js ist eine Open-Source-Laufzeitumgebung für JavaScript, die die Ausführung von JavaScript-Code außerhalb des Browsers ermöglicht. Sie basiert auf der V8-Engine von Chrome, die für Geschwindigkeit und Skalierbarkeit bekannt ist. Damit eignet sich Node.js besonders für Echtzeit- und Hochleistungsanwendungen. Der Betrieb von Node-Anwendungen in Produktionsumgebungen bringt jedoch spezielle Herausforderungen mit sich – darunter die Handhabung unerwarteter Abstürze, die Prozessverwaltung und die Sicherstellung einer kontinuierlichen Verfügbarkeit. PM2 ist ein Prozessmanager für Node.js-Anwendungen, der diese Aufgaben vereinfacht, indem er Monitoring, Neustarts und Optimierungsfunktionen bereitstellt.

In dieser Anleitung erfahren Sie, wie Sie Node.js-Anwendungen mit PM2 verwalten, welche zentralen Funktionen zur Verfügung stehen und welche Best Practices für den Einsatz in Produktionsumgebungen gelten.

Voraussetzungen

Stellen Sie sicher, dass Sie Zugriff auf Ihr System als nicht-root Benutzer mit Sudo-Rechten haben und dass macOS, Linux oder Windows mit installierten Node- und NPM-Paketen genutzt wird.

VM

Passende Infrastruktur bei centron

Node-Anwendungen wollen deployt werden: ccloud³ VMs mit vollem Root-Zugriff ab 3,12 € im Monat – oder gleich als Managed Server, wenn der Betrieb nicht bei Ihnen liegen soll. Cloud Server mieten →

PM2 mit NPM installieren

Installieren Sie PM2 über den NPM-Paketmanager:

Konsole
$ sudo npm install pm2 -g

Eine Beispiel-Node.js-Anwendung erstellen

Gehen Sie wie folgt vor, um eine Beispielanwendung mit Node.js zu erstellen.

Zum Home-Verzeichnis wechseln

Konsole
$ cd ~

Anwendungsdatei erstellen

Legen Sie eine Datei mit dem Namen app.js an, beispielsweise mit dem Editor vim:

Konsole
$ vim app.js

Code in die Datei einfügen

Fügen Sie folgenden Code in die Datei ein:

JavaScript
const http = require('http');

const hostname = '0.0.0.0';
const port = 3000;

const server = http.createServer((req, res) => {
    res.statusCode = 200;
    res.setHeader('Content-Type', 'text/plain');
    res.end('Hello World');
});

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

Die Datei app.js ist eine einfache Node.js-Webanwendung, die auf Port 3000 lauscht. Bei einer HTTP-Anfrage antwortet sie mit der Nachricht „Hello World“.

Anwendung mit PM2 starten

Starten Sie Ihre Node.js-Anwendung mit PM2. Ersetzen Sie app.js bei Bedarf durch die Einstiegspunkt-Datei Ihrer Anwendung:

Konsole
$ pm2 start app.js

Die Ausgabe sollte in etwa so aussehen:

Code
[PM2] Starting /home/linuxuser/app.js in fork_mode (1 instance)
[PM2] Done.
┌────┬────────────────────┬──────────┬──────┬───────────┬──────────┬──────────┐
│ id │ name               │ mode     │ ↺    │ status    │ cpu      │ memory   │
├────┼────────────────────┼──────────┼──────┼───────────┼──────────┼──────────┤
│ 0  │ app                │ fork     │ 0    │ online    │ 0%       │ 4.4mb    │
└────┴────────────────────┴──────────┴──────┴───────────┴──────────┴──────────┘

Zusätzliche Parameter

PM2 bietet zusätzliche Parameter zur Verwaltung Ihrer Anwendung:

  • --name <app_name> – einen Namen für die Anwendung festlegen
  • --watch – Anwendung automatisch neu starten, wenn sich eine Datei ändert
  • --max-memory-restart <memory> – Speicherlimit festlegen, ab dem ein Neustart erfolgt
  • --log <log_file> – eine Logdatei definieren
  • --restart-delay <delay> – Zeitverzögerung zwischen automatischen Neustarts (in ms)
  • --time – Zeitstempel in Logs hinzufügen
  • --no-autorestart – automatische Neustarts deaktivieren
  • --cron – Cron-Muster für automatische Neustarts verwenden
  • --no-daemon – verhindern, dass die Anwendung im Hintergrundprozess läuft

Die vollständige Liste aller Parameter finden Sie in der offiziellen Dokumentation.

Anwendung verwalten

Mit PM2 können Sie Ihre Node.js-Anwendung verwalten, indem Sie Aktionen wie Neustart, Reload, Stopp oder Löschen durchführen.

Anwendung neu starten

Konsole
$ pm2 restart app

Anwendung neu laden

Konsole
$ pm2 reload app

Anwendung stoppen

Konsole
$ pm2 stop app

Anwendung löschen

Konsole
$ pm2 delete app

Alle Anwendungen auflisten

Zeigen Sie alle aktuell von PM2 verwalteten Anwendungen an:

Konsole
$ pm2 list

Logs anzeigen

Sehen Sie sich die von Ihrer Anwendung erzeugten Logs in Echtzeit an:

Konsole
$ pm2 logs

Um ältere Logs einzusehen, geben Sie mit dem Parameter --lines die gewünschte Anzahl Zeilen an:

Konsole
$ pm2 logs --lines 200

Ressourcennutzung überwachen

Überwachen Sie in nahezu Echtzeit, wie viele Ressourcen Ihre Anwendungen verbrauchen:

Konsole
$ pm2 monit

Ein webbasiertes Dashboard einrichten

Richten Sie ein webbasiertes PM2-Dashboard mit folgendem Befehl ein:

Konsole
$ pm2 plus

Folgen Sie den Anweisungen, um ein PM2-Konto zu erstellen oder sich einzuloggen. Falls Sie noch kein Konto besitzen, geben Sie die erforderlichen Daten an und akzeptieren Sie die Lizenzvereinbarung.

Die Ausgabe sieht beispielsweise so aus:

Code
[PM2 I/O] Do you have a pm2.io account? (y/n) n
[PM2 I/O] No problem! We just need a few details to create your account.
[PM2 I/O] Please choose a username: centronexampleuser
[PM2 I/O] Please choose an email: admin@example.com
[PM2 I/O] Please choose a password: ************
...
[PM2 I/O] Do you accept the terms and privacy policy (https://pm2.io/legals/terms_conditions.pdf)? (y/n) y
[PM2 I/O] Successfully authenticated
[PM2 I/O] Successfully validated
[+] PM2+ activated!
[PM2 I/O] Successfully connected to bucket PM2 Plus Monitoring
[PM2 I/O] You can use the web interface here: https://app.pm2.io/#/bucket/67cb27ccd623d57f6d4c63c0

Ersetzen Sie centronexampleuser durch Ihren gewünschten Benutzernamen, admin@example.com durch Ihre Login-E-Mail-Adresse und vergeben Sie ein starkes Passwort zum Schutz Ihres Kontos.

Nächste Schritte

  • Öffnen Sie einen Webbrowser und rufen Sie die angegebene URL auf.
  • Melden Sie sich mit Ihren PM2-Zugangsdaten an.
  • Beginnen Sie mit der Überwachung und Verwaltung Ihrer Anwendungen über das PM2 Plus Dashboard.

Hinweis: PM2 Plus ist ein abonnementbasiertes Angebot. Die Kosten hängen von der Anzahl der zu überwachenden Prozesse ab. Details finden Sie auf der PM2 Plus Preisseite.

PM2 für den automatischen Start beim Server-Boot konfigurieren

Erzeugen Sie ein Startskript und konfigurieren Sie PM2 so, dass es beim Systemstart automatisch ausgeführt wird:

Konsole
$ pm2 startup

Die Ausgabe sollte in etwa so aussehen:

Code
[PM2] To setup the Startup Script, copy/paste the following command:
sudo env PATH=$PATH:/home/linuxuser/.nvm/versions/node/v22.14.0/bin /home/linuxuser/.nvm/versions/node/v22.14.0/lib/node_modules/pm2/bin/pm2 startup systemd -u linuxuser --hp /home/linuxuser

Kopieren Sie den angegebenen Befehl und führen Sie ihn aus, um den PM2-Prozess dauerhaft einzurichten:

Konsole
$ sudo env PATH=$PATH:/home/linuxuser/.nvm/versions/node/v22.14.0/bin /home/linuxuser/.nvm/versions/node/v22.14.0/lib/node_modules/pm2/bin/pm2 startup systemd -u linuxuser --hp /home/linuxuser

Die Ausgabe sollte so ähnlich aussehen:

Code
...
[PM2] Writing init configuration in /etc/systemd/system/pm2-linuxuser.service
Created symlink /etc/systemd/system/multi-user.target.wants/pm2-linuxuser.service → /etc/systemd/system/pm2-linuxuser.service.
...

Anwendungen für den automatischen Start beim Server-Boot konfigurieren

Damit Ihre PM2-Anwendungen automatisch beim Serverstart gestartet werden, speichern Sie diese in einer Liste:

Laufende Anwendungen speichern

Konsole
$ pm2 save

Die erwartete Ausgabe sieht so aus:

Code
[PM2] Saving current process list...
[PM2] Successfully saved in /home/linuxuser/.pm2/dump.pm2

Anwendungen manuell wiederherstellen

Falls Sie die gespeicherten Anwendungen manuell wiederherstellen möchten, nutzen Sie folgenden Befehl:

Konsole
$ pm2 resurrect

Die Ausgabe sieht in etwa so aus:

Code
[PM2] Resurrecting
[PM2] Restoring processes located in /home/linuxuser/.pm2/dump.pm2
[PM2] Process /home/linuxuser/app.js restored
┌────┬────────────────────┬──────────┬──────┬───────────┬──────────┬──────────┐
│ id │ name               │ mode     │ ↺    │ status    │ cpu      │ memory   │
├────┼────────────────────┼──────────┼──────┼───────────┼──────────┼──────────┤
│ 0  │ app                │ fork     │ 0    │ online    │ 0%       │ 21.3mb   │
└────┴────────────────────┴──────────┴──────┴───────────┴──────────┴──────────┘

Auf Updates prüfen

Zeigen Sie eine Liste veralteter NPM-Pakete auf Ihrem System an:

Konsole
$ npm outdated -g

Mit diesem Befehl wird eine Liste global installierter NPM-Pakete angezeigt, für die neuere Versionen verfügbar sind.

PM2 aktualisieren

Aktualisieren Sie das PM2-Paket über NPM. Während des Upgrades werden alle laufenden PM2-Prozesse angehalten, bis die Aktualisierung abgeschlossen ist – dadurch kommt es zu Ausfallzeiten für Ihre Anwendungen:

Konsole
$ npm install pm2@latest -g

Führen Sie anschließend ein In-Memory-Update von PM2 durch:

Konsole
$ pm2 update

Best Practices und Sicherheitsaspekte

Ausfallzeiten mit dem Cluster-Modus vermeiden

PM2-Prozesse können im Lebenszyklus mehrfach neu starten, was kurzfristige Ausfälle verursachen kann. Nutzen Sie den Cluster-Modus von PM2, um Ausfallzeiten zu reduzieren. Dabei laufen mehrere Instanzen Ihrer Anwendung parallel, sodass bei einem Neustart jeweils nur eine Instanz neu startet, während die übrigen weiterhin Anfragen bedienen.

Löschen Sie die Anwendung zunächst, bevor Sie den Cluster-Modus aktivieren:

Konsole
$ pm2 delete app

Starten Sie die Anwendung im Cluster-Modus und geben Sie die Anzahl der Instanzen mit dem Parameter -i an:

Konsole
$ pm2 start app.js -i 3

Dieser Befehl startet drei Instanzen Ihrer Anwendung im PM2-Cluster-Modus.

Sie können die Anwendung skalieren, indem Sie die neue Instanzanzahl angeben:

Konsole
$ pm2 scale app 4

Damit wird die Anwendung auf vier Instanzen skaliert.

Fehlgeschlagene Anfragen mit einem sauberen Shutdown vermeiden

PM2 ermöglicht einen geordneten Shutdown, indem Signale an Ihre Anwendung gesendet werden, damit diese kontrolliert beendet wird. So lassen sich Datenverlust oder -korruption vermeiden, weil laufende Aufgaben vor dem Beenden abgeschlossen werden können.

PM2 handhabt den Graceful-Shutdown wie folgt:

  • Vor dem Herunterfahren sendet PM2 ein SIGINT-Signal an die Anwendung.
  • Die Anwendung fängt dieses Signal ab.
  • Sie beendet aktive Anforderungen und schließt Ressourcen wie Datenbankverbindungen.
  • Die Anwendung beendet sich.

Fügen Sie folgenden Code ein, um den sauberen Shutdown in Ihrer Anwendung zu aktivieren:

JavaScript
process.on('SIGINT', function() {
    // sigint signal received, log a message to the console
    console.log('Shutdown signal intercepted');
    // close the http server
    server.close();
    // exit the process
    process.exit();
});

Der obige Code ermöglicht einen geordneten Shutdown: Das SIGINT-Signal wird abgefangen, eine Meldung protokolliert, der HTTP-Server geschlossen und der Prozess sauber beendet.

Fazit

In diesem Artikel haben Sie gelernt, wie Sie PM2 installieren und einsetzen, um Node.js-Anwendungen in Produktion zu verwalten. Sie haben PM2 für den automatischen Start beim Systemboot konfiguriert, die Ressourcennutzung überwacht, Logs in Echtzeit betrachtet und das webbasierte PM2-Plus-Dashboard eingerichtet. Mit diesen Schritten bleiben Ihre Node.js-Anwendungen zuverlässig verfügbar, erholen sich automatisch von Abstürzen und lassen sich dank des umfangreichen Funktionsumfangs von PM2 einfacher betreiben. Weitere Informationen finden Sie in der offiziellen Dokumentation.

Jetzt 200 € Guthaben sichern

Testen Sie Ihr Setup auf ccloud³

Registrieren Sie sich in der ccloud³ und erhalten Sie 200 € Startguthaben für Ihr Projekt – z. B. für eine PostgreSQL-VM mit automatischen Backups.

centron Redaktion Technische Redaktion

Das Redaktionsteam von centron schreibt Anleitungen aus dem Betriebsalltag: getestet auf unserer eigenen Plattform, betrieben im Rechenzentrum in Hallstadt bei Bamberg.

Kategorie JavaScript
Teilen
Noch offene Fragen?

Unser Team hilft Ihnen bei Ihrem konkreten Setup weiter – von Menschen, die die Plattform selbst betreiben.

War dieses Tutorial hilfreich?

Ihre Antwort wird anonym gespeichert und hilft uns, die Tutorials zu verbessern.

Kommentare

Noch keine Kommentare – stellen Sie die erste Frage zu diesem Tutorial.

Zum Kommentieren anmelden

Kommentare stehen centron-Kunden offen. Melden Sie sich in Ihrem Konto an, um eine Frage zu diesem Tutorial zu stellen.

Weiterlesen

Das könnte Sie auch interessieren

Jetzt kostenlos anfangen

Melden Sie sich an und erhalten Sie in den ersten 60 Tagen ein Guthaben von 200 € bei centron.

Dieses Werbeangebot gilt nur für neue Konten. Angebot ausschließlich für Gewerbetreibende.

Jetzt loslegen Sales kontaktieren