Übersicht: PM2 und systemd im Vergleich Was ist PM2? PM2 ist ein Production Process Manager für Node.js-Anwendungen. Es bietet eine einfache und intuitive Möglichkeit, Node.js-Prozesse zu verwalten, zu überwachen und automatisch neu zu starten.
Was ist systemd? systemd ist das Standard-Init-System moderner Linux-Distributionen. Es verwaltet alle Systemdienste und kann auch für Node.js-Anwendungen verwendet werden, erfordert aber mehr Konfiguration.
Warum PM2 verwenden? Einfachheit: Keine komplexe Konfiguration nötigHot Reload: Zero-Downtime-DeploymentsMonitoring: Eingebaute Überwachung und LogsCluster-Modus: Automatische Load-BalancingAuto-Restart: Automatischer Neustart bei FehlernInstallation von PM2 PM2 - Grundlegende Bedienung Anwendung starten 1 2 3 4 5 6 7 8 pm2 start app.js pm2 start app.js --name "meine-app" pm2 start app.js --name "api" --instances 4
Anwendungen verwalten 1 2 3 4 5 6 7 8 9 10 11 pm2 status pm2 stop app-name pm2 restart app-name pm2 delete app-name
Logs anzeigen 1 2 3 4 5 6 7 8 pm2 logs pm2 logs app-name pm2 logs --lines 100
Erweiterte Funktionen 1 2 3 4 5 6 7 8 pm2 start app.js -i max pm2 reload app-name pm2 monit
PM2 Startup - Automatischer Start nach Reboot PM2 bietet eine einfache Möglichkeit, deine Node.js-Anwendungen automatisch nach einem Systemstart zu starten:
Dieser Befehl zeigt dir ein systemspezifisches Kommando an, das du als Root ausführen musst. Zum Beispiel:
1 2 sudo env PATH=$PATH :/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup systemd -u username --hp /home/username
Anschließend:
Vollständiges Beispiel:
1 2 3 4 5 6 7 8 9 10 11 12 pm2 start app.js --name "meine-app" pm2 startup pm2 save sudo reboot
Nach dem Neustart läuft deine Anwendung automatisch weiter. Du kannst dies mit pm2 status überprüfen.
Startup-Konfiguration löschen:
systemd - Konfiguration für Node.js Service-Datei erstellen 1 sudo nano /etc/systemd/system/meine-app.service
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 [Unit] Description =Meine Node.js AppAfter =network.target[Service] Type =simpleUser =nodejsWorkingDirectory =/var/www/meine-appExecStart =/usr/bin/node app.jsRestart =on -failureRestartSec =10 Environment =NODE_ENV=production[Install] WantedBy =multi-user.target
systemd-Befehle 1 2 3 4 5 6 7 8 9 10 11 sudo systemctl enable meine-app sudo systemctl start meine-app sudo systemctl status meine-app sudo journalctl -u meine-app -f
Vergleich: PM2 vs systemd Einfachheit der Einrichtung PM2: Ein Befehl genügt: pm2 start app.jssystemd: Erfordert Service-Datei und mehrere BefehleEntwicklerfreundlichkeit PM2: Speziell für Node.js entwickelt, viele integrierte Featuressystemd: Generisches System, weniger Node.js-spezifische FeaturesPM2: Cluster-Modus für Multi-Core-Nutzungsystemd: Einzelprozess, manueller Load-Balancing nötigMonitoring und Debugging PM2: Eingebautes Monitoring: pm2 monitsystemd: Standard-Linux-Tools: journalctl, systemctl statusHot Reloading PM2: Zero-Downtime: pm2 reload app-namesystemd: Erfordert Service-Restart mit kurzer DowntimePM2 eignet sich für Node.js-Entwickler ohne Linux-Admin-Erfahrung Schnelle Deployments und Prototyping Anwendungen, die häufig aktualisiert werden Multi-Core-Anwendungen (Cluster-Modus) systemd eignet sich für Produktionsserver mit strikten System-Standards Integration in bestehende systemd-Infrastruktur Anwendungen mit minimalen Ressourcenanforderungen Systemadministratoren, die einheitliche Service-Verwaltung bevorzugen Praktisches Beispiel PM2-Konfigurationsdatei (ecosystem.config.js) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 module .exports = { apps : [{ name : 'web-api' , script : './app.js' , instances : 'max' , exec_mode : 'cluster' , env : { NODE_ENV : 'development' }, env_production : { NODE_ENV : 'production' , PORT : 3000 } }] };
1 2 pm2 start ecosystem.config.js --env production
Tipps Nutze PM2 für Entwicklung und kleinere Deployments Verwende systemd für große Produktionssysteme PM2 kann mit systemd kombiniert werden: PM2 als systemd-Service Beide Tools unterstützen Umgebungsvariablen und Logging Fazit PM2 bietet eine deutlich einfachere und entwicklerfreundlichere Lösung für Node.js-Anwendungen, während systemd mehr Kontrolle und Integration in Linux-Systeme bietet. Für die meisten Node.js-Projekte ist PM2 die bessere Wahl, besonders wenn schnelle Deployments und einfache Bedienung wichtig sind.