Supervisor vs. systemd: Was ist besser für Web-Worker?

Web-Worker wie PHP-FPM, Node.js oder Python Gunicorn benötigen eine zuverlässige Prozessverwaltung, um Stabilität, automatische Neustarts und Ressourcenüberwachung zu gewährleisten. Zwei populäre Tools dafür sind Supervisor und systemd. Beide haben ihre Vor- und Nachteile, je nach Anwendungsfall und Infrastruktur. In diesem Leitfaden erfahren Einsteiger, IT-Studierende und Junior Network Engineers praxisnah, wie Supervisor und systemd für Web-Worker eingesetzt werden und welche Strategie besser passt.

Grundlagen von Supervisor

Supervisor ist ein Prozess-Manager, der speziell für lange laufende Prozesse entwickelt wurde. Er startet Prozesse, überwacht sie und kann sie bei Abstürzen automatisch neu starten.

Vorteile

  • Einfach zu konfigurieren über .conf-Dateien
  • Automatische Neustarts bei Absturz
  • Multi-Process Management leicht möglich
  • Web-Interface für Monitoring verfügbar
  • Unabhängig von der Distribution

Nachteile

  • Zusätzlicher Prozess benötigt eigene Ressourcen
  • Keine native Integration in das System-Init
  • Logging separat konfigurieren

Beispielkonfiguration

[program:myapp]
command=/usr/bin/python3 /var/www/myapp/app.py
directory=/var/www/myapp
autostart=true
autorestart=true
user=www-data
stdout_logfile=/var/log/myapp/stdout.log
stderr_logfile=/var/log/myapp/stderr.log
environment=ENVIRONMENT="production"

Grundlagen von systemd

systemd ist das native Init-System moderner Linux-Distributionen. Es verwaltet Services, Prozesse und Abhängigkeiten direkt auf Systemebene.

Vorteile

  • Direkte Integration ins Betriebssystem
  • Automatischer Start beim Boot
  • Einheitliches Logging über journalctl
  • Abhängigkeiten zwischen Services definierbar
  • Keine zusätzlichen Prozesse nötig

Nachteile

  • Komplexere Konfiguration als Supervisor
  • Less portable zwischen verschiedenen Linux-Distributionen
  • Erfordert Systemrechte zum Erstellen von Unit-Dateien

Beispielsystemd Service

[Unit]
Description=Python Web App
After=network.target

[Service]
User=www-data
Group=www-data
WorkingDirectory=/var/www/myapp
ExecStart=/usr/bin/python3 /var/www/myapp/app.py
Restart=always
Environment=ENVIRONMENT=production

[Install]
WantedBy=multi-user.target

Vergleich Supervisor vs. systemd

Funktion Supervisor systemd
Integration ins OS extern nativ
Multi-Process leicht konfigurierbar möglich, aber komplexer
Logging eigene Logdateien journalctl
Ressourcenverbrauch zusätzlicher Prozess minimal
Portabilität hoch abhängig von Distribution
Autostart Supervisor Service nötig native Units

Netzwerk- und Subnetzplanung für Web-Worker

Für Multi-Worker-Setups sollte die Netzwerkarchitektur stabil und segmentiert sein, um Monitoring, Health Checks und Deployments zu vereinfachen.

IPv4 Subnetz

<math>
Worker-IP = 192.168.460.10/24
Subnetzadresse = 192.168.460.10 & 255.255.255.0 = 192.168.460.0
Broadcastadresse = 192.168.460.0 | ~255.255.255.0 = 192.168.460.255
</math>

IPv6 Subnetz

<math>
Worker-IP = 2001:db8:abcd:460::10/64
Subnetzadresse = 2001:db8:abcd:460::0
Broadcastadresse = 2001:db8:abcd:460:ffff:ffff:ffff:ffff
</math>

Best Practices

  • Für einfache Web-Worker auf einem Server ist systemd meist ausreichend
  • Supervisor eignet sich für portable, Multi-Process Setups oder wenn keine Root-Rechte vorhanden sind
  • Automatische Neustarts und Health Checks immer konfigurieren
  • Logging zentralisieren über journalctl oder Supervisor-Logs
  • Ressourcenlimits setzen: LimitNOFILE, LimitNPROC
  • Abhängigkeiten zwischen Services berücksichtigen
  • Umgebungsvariablen und Secrets sicher verwalten
  • Testumgebungen identisch zur Produktion betreiben
  • Firewall und Subnetzsegmente für Web-Worker definieren
  • Unit-Dateien bzw. Supervisor-Konfiguration versionieren und dokumentieren

Konfiguriere Cisco Router & Switches und liefere ein Packet-Tracer-Lab/GNS3

Ich biete professionelle Unterstützung im Bereich Netzwerkkonfiguration und Network Automation für private Anforderungen, Studienprojekte, Lernlabore, kleine Unternehmen sowie technische Projekte. Ich unterstütze Sie bei der Konfiguration von Routern und Switches, der Erstellung praxisnaher Topologien in Cisco Packet Tracer, dem Aufbau und Troubleshooting von GNS3- und EVE-NG-Labs sowie bei der Automatisierung von Netzwerkaufgaben mit Netmiko, Paramiko, NAPALM und Ansible. Kontaktieren Sie mich jetzt – klicken Sie hier.

Meine Leistungen umfassen:

  • Professionelle Konfiguration von Routern und Switches

  • Einrichtung von VLANs, Trunks, Routing, DHCP, NAT, ACLs und weiteren Netzwerkfunktionen

  • Erstellung von Topologien und Simulationen in Cisco Packet Tracer

  • Aufbau, Analyse und Fehlerbehebung von Netzwerk-Labs in GNS3 und EVE-NG

  • Automatisierung von Netzwerkkonfigurationen mit Python, Netmiko, Paramiko, NAPALM und Ansible

  • Erstellung von Skripten für wiederkehrende Netzwerkaufgaben

  • Dokumentation der Konfigurationen und Bereitstellung nachvollziehbarer Lösungswege

  • Konfigurations-Backups, Optimierung bestehender Setups und technisches Troubleshooting

Benötigen Sie Unterstützung bei Ihrem Netzwerkprojekt, Ihrer Simulation oder Ihrer Network-Automation-Lösung? Kontaktieren Sie mich jetzt – klicken Sie hier.

Related Articles