15%

15% auf alle Hosting-Dienste sparen

Teste deine Fähigkeiten und erhalte Rabatt auf jeden Hosting-Plan

Benutze den Code:

Skills
Anfangen
01.11.2024
1 +1

PHP-Modi auf VPS: mod_php vs FastCGI vs PHP-FPM — Vollständiger Leitfaden

PHP betreibt über 80% aller Websites im Internet, doch eine der am meisten übersehenen Leistungsentscheidungen ist die Wahl des richtigen PHP-Ausführungsmodus. Wählen Sie den falschen und Sie werden mit langsamen Ladezeiten, übermäßigem RAM-Verbrauch und Server-Abstürzen bei Verkehrsspitzen konfrontiert. Wählen Sie den richtigen und Ihre Anwendung skaliert mühelos, auch unter hoher gleichzeitiger Last.

Dieser Leitfaden behandelt alle drei wichtigsten PHP-Ausführungsmodi — mod_php, FastCGI und PHP-FPM — mit praktischem Leistungskontext, Konfigurationsbeispielen und klaren Empfehlungen für verschiedene Anwendungsfälle. Egal ob Sie einen persönlichen Blog oder eine stark frequentierte E-Commerce-Plattform betreiben, das Verständnis dieser Modi ist grundlegend, um das Beste aus Ihrer Serverumgebung herauszuholen.

Inhaltsverzeichnis

  1. Was sind PHP-Ausführungsmodi?
  2. mod_php — Das klassische Apache-Modul
  3. FastCGI — Entkopplung von PHP vom Webserver
  4. PHP-FPM — Der moderne Standard für hohe Leistung
  5. Nebeneinander-Vergleich
  6. Wie man PHP-FPM auf einem VPS einrichtet (Ubuntu/Debian)
  7. PHP-FPM mit Nginx
  8. PHP-FPM mit Apache
  9. PHP-FPM Pool-Tuning für die Produktion
  10. Welchen PHP-Modus sollten Sie wählen?
  11. Fazit

Was sind PHP-Ausführungsmodi? {#what-are-php-execution-modes}

Ein PHP-Ausführungsmodus definiert, wie Ihr Webserver PHP-Skripte interpretiert und ausführt. Er bestimmt die Beziehung zwischen dem Webserver-Prozess (Apache, Nginx, LiteSpeed) und dem PHP-Interpreter — speziell, ob sie denselben Prozess gemeinsam nutzen, über ein Protokoll kommunizieren oder als völlig separate verwaltete Dienste arbeiten.

Die drei primären Modi sind:

ModusArchitekturAm besten geeignet für
mod_phpPHP in Apache eingebettetEinfache gemeinsame Umgebungen
FastCGIPHP als separater ProzessWebsites mit mittlerem Datenverkehr
PHP-FPMVerwaltete PHP-Prozess-PoolsHochfrequente Produktionsanwendungen

Die Wahl des richtigen Modus wirkt sich direkt auf Speichernutzung, Request-Durchsatz, Isolation und Skalierbarkeit aus. In einer VPS-Hosting-Umgebung, in der Ressourcen dediziert und konfigurierbar sind, haben Sie vollständige Freiheit, den Modus zu implementieren, der am besten zu Ihrer Workload passt.

mod_php — Das klassische Apache-Modul {#mod_php}

Was ist mod_php?

mod_php ist ein Apache-Modul, das den PHP-Interpreter direkt in den Apache-Webserver-Prozess einbettet. Es ist die älteste und historisch am häufigsten verwendete Methode zum Ausführen von PHP.

Wie mod_php funktioniert

Wenn Apache eine Anfrage für eine PHP-Datei erhält, wird die Ausführung intern verarbeitet — kein externer Prozess wird erzeugt, keine Socket-Kommunikation findet statt. PHP lebt in Apache selbst.

Leistungsmerkmale

Für Websites mit niedrigem Datenverkehr und Entwicklungsumgebungen funktioniert mod_php angemessen. Da PHP bereits in Apaches Speicher geladen ist, gibt es keinen Prozess-Erzeugungsaufwand pro Anfrage.

Diese Architektur hat jedoch einen kritischen Fehler: Jeder Apache-Worker-Prozess trägt einen vollständigen PHP-Interpreter im Speicher, unabhängig davon, ob er eine PHP-Datei oder ein statisches Asset wie ein Bild oder eine CSS-Datei bereitstellt.

Nachteile von mod_php

  • Hoher Speicherverbrauch: Jeder Apache-Worker (auch diejenigen, die statische Dateien bereitstellen) hält die vollständige PHP-Laufzeit im RAM.
  • Keine Pro-Site-Isolation: Alle virtuellen Hosts teilen denselben PHP-Prozess und Benutzerkontext, was ein Sicherheitsrisiko auf Multi-Tenant-Servern darstellt.
  • Begrenzte Konfigurationsflexibilität: Sie können nicht verschiedene PHP-Versionen für verschiedene virtuelle Hosts ausführen, ohne erhebliche Umwege.
  • Inkompatibel mit Nginx: mod_php ist exklusiv für Apache; es kann nicht mit Nginx oder LiteSpeed verwendet werden.
  • Schlechte Skalierbarkeit unter Last: Bei hoher Parallelität wird Speichererschöpfung zu einem echten Risiko.

Wann man mod_php verwenden sollte

  • Lokale Entwicklungsumgebungen
  • Sehr niedrig frequentierte persönliche Websites
  • Legacy-Anwendungen, bei denen eine Neukonfiguration nicht möglich ist

FastCGI — Entkopplung von PHP vom Webserver {#fastcgi}

Was ist FastCGI?

FastCGI ist ein Protokoll, das dem Webserver ermöglicht, mit einem externen PHP-Prozess zu kommunizieren, anstatt PHP in sich selbst einzubetten. Es ist eine erhebliche architektonische Verbesserung gegenüber mod_php.

Wie FastCGI funktioniert

Der Webserver (Apache oder Nginx) leitet PHP-Anfragen über einen Unix-Socket oder TCP-Port an einen persistenten FastCGI-Prozess weiter. Der PHP-Prozess verarbeitet die Ausführung und gibt das Ergebnis zurück.

Das Schlüsselwort hier ist persistent: Im Gegensatz zu CGI (dem ursprünglichen Protokoll) bleiben FastCGI-Prozesse zwischen Anfragen aktiv, was den Aufwand für das Erzeugen eines neuen Prozesses für jede einzelne Anfrage eliminiert.

Leistungsmerkmale

FastCGI reduziert den Speicheraufwand erheblich im Vergleich zu mod_php, da statische Dateianfragen vollständig vom Webserver verarbeitet werden, ohne PHP überhaupt einzubeziehen. PHP-Prozesse werden nur aufgerufen, wenn sie wirklich benötigt werden.

Nachteile von FastCGI

  • Konfigurationskomplexität: Erfordert zusätzliches Setup im Vergleich zu mod_php, einschließlich Socket- oder Port-Konfiguration.
  • Begrenzte Prozessverwaltung: Grundlegendes FastCGI fehlen die erweiterten Pool-Management-Funktionen, die für Produktionsumgebungen erforderlich sind.
  • Durch PHP-FPM überholt: In den meisten modernen Bereitstellungen wird PHP-FPM (das auf FastCGI aufbaut) dem grundlegenden FastCGI vorgezogen.

Wann man FastCGI verwenden sollte

  • Websites mit mittlerem Datenverkehr
  • Umgebungen, in denen PHP-FPM nicht verfügbar ist
  • Übergangskonfigurationen, die von mod_php migrieren

PHP-FPM — Der moderne Standard für hohe Leistung {#php-fpm}

Was ist PHP-FPM?

PHP-FPM (FastCGI Process Manager) ist eine erweiterte, funktionsreiche Implementierung des FastCGI-Protokolls. Es ist der De-facto-Standard für die Ausführung von PHP in Produktionsumgebungen und ist der empfohlene Modus für jede ernsthafte Webanwendung.

Wie PHP-FPM funktioniert

PHP-FPM verwaltet einen Pool von PHP-Worker-Prozessen. Der Webserver leitet PHP-Anfragen über einen Unix-Socket oder eine TCP-Verbindung an PHP-FPM weiter. PHP-FPM verwaltet dynamisch die Anzahl der aktiven Worker-Prozesse basierend auf aktuellem Datenverkehr, erzeugt neue Worker unter Last und gibt sie während ruhiger Perioden frei.

Wichtigste Vorteile von PHP-FPM

#### 1. Dynamische Prozessverwaltung

PHP-FPM unterstützt mehrere Prozessverwaltungsstrategien:

  • static: Feste Anzahl von Worker-Prozessen (vorhersehbar, gut für hohen Datenverkehr)
  • dynamic: Worker skalieren zwischen Minimum und Maximum basierend auf Bedarf
  • ondemand: Worker werden nur erzeugt, wenn Anfragen ankommen (speichereffizient für niedrigen Datenverkehr)

#### 2. Pro-Pool-Konfiguration

Jede Anwendung oder jeder virtuelle Host kann seinen eigenen PHP-FPM-Pool mit unabhängigen Einstellungen haben:

  • Separater Unix-Benutzer/Gruppe (verbesserte Sicherheitsisolation)
  • Verschiedene PHP-Version pro Pool
  • Benutzerdefinierte Werte pro Anwendung
  • Individuelle Ressourcenlimits

#### 3. Protokollierung langsamer Anfragen

PHP-FPM kann Anfragen protokollieren, die einen definierten Ausführungszeit-Schwellenwert überschreiten, was für die Identifizierung von Leistungsengpässen von unschätzbarem Wert ist.

#### 4. Ressourceneffizienz

Da PHP-Prozesse separat vom Webserver verwaltet werden, werden statische Assets ohne PHP-Aufwand bereitgestellt. Speicher wird nur von aktiven PHP-Workern verbraucht.

#### 5. Kompatibilität

PHP-FPM funktioniert nahtlos mit Nginx, Apache (über mod_proxy_fcgi) und LiteSpeed. In Kombination mit Nginx oder LiteSpeed sind die Leistungsgewinne erheblich — oft zitiert als 5–10x schneller unter gleichzeitiger Last im Vergleich zu mod_php mit Apache.

Nebeneinander-Vergleich {#comparison}

Funktionmod_phpFastCGIPHP-FPM
ArchitekturIn Apache eingebettetExterner ProzessVerwalteter Prozess-Pool
SpeichereffizienzNiedrigMittelHoch
Statische Datei-OverheadHochNiedrigNiedrig
Verarbeitung gleichzeitiger AnfragenSchlechtGutAusgezeichnet
PHP-Version pro SiteNeinBegrenztJa
SicherheitsisolationSchlechtMittelAusgezeichnet
Nginx-KompatibilitätNeinJaJa
KonfigurationskomplexitätNiedrigMittelMittel
ProduktionsreifeNeinTeilweiseJa
Protokollierung langsamer AnfragenNeinNeinJa

Wie man PHP-FPM auf einem VPS einrichtet (Ubuntu/Debian) {#setup}

Die folgenden Anweisungen gelten für Ubuntu 22.04 LTS und Debian 11/12. Wenn Sie Ihre Anwendung auf einem VPS-Hosting-Plan ausführen, haben Sie vollständigen Root-Zugriff zum Ausführen dieser Befehle.

Schritt 1: Aktualisieren Sie Ihr System und installieren Sie PHP-FPM

Zum Installieren einer bestimmten PHP-Version (z. B. PHP 8.2):

Schritt 2: Überprüfen Sie, ob PHP-FPM läuft

Sie sollten php-fpm in der Ausgabe sehen. Wenn nicht, starten und aktivieren Sie es:

Schritt 3: Bestätigen Sie den Socket-Pfad

PHP-FPM kommuniziert über einen Unix-Socket. Überprüfen Sie seinen Standort:

PHP-FPM mit Nginx {#nginx}

Nginx ist der am häufigsten mit PHP-FPM gepaarte Webserver, und das aus gutem Grund — Nginxs ereignisgesteuerte, nicht-blockierende Architektur ergänzt PHP-FPMs Process-Pool-Modell perfekt.

Installieren Sie Nginx

Konfigurieren Sie den Nginx-Server-Block

Bearbeiten Sie die Konfigurationsdatei Ihrer Website:

Fügen Sie die folgende Konfiguration hinzu:

Aktivieren Sie die Website und starten Sie Nginx neu

PHP-FPM mit Apache {#apache}

Wenn Sie Apache bevorzugen — oder wenn Ihre Anwendung auf .htaccess-Dateien angewiesen ist — können Sie PHP-FPM immer noch über Apaches mod_proxy_fcgi-Modul verwenden.

Aktivieren Sie erforderliche Apache-Module

Konfigurieren Sie den Apache Virtual Host

Aktivieren Sie die Website und starten Sie Apache neu

PHP-FPM Pool-Tuning für die Produktion {#tuning}

Die Standard-PHP-FPM-Pool-Konfiguration ist konservativ und für die Entwicklung geeignet. Für Produktions-Workloads sollten Sie die Pool-Einstellungen basierend auf dem verfügbaren RAM Ihres Servers und dem erwarteten Datenverkehr optimieren.

Suchen Sie die Pool-Konfigurationsdatei

Wichtige Parameter zum Optimieren

Berechnung von pm.max_children

Eine praktische Formel für dynamische Umgebungen:

Um die durchschnittliche PHP-Prozessgröße zu ermitteln:

Auf einer typischen WordPress-Website verbraucht jeder PHP-FPM-Worker ungefähr 30–60 MB. Auf einem VPS mit 2 GB RAM (wobei ~1,5 GB für PHP nach OS-Overhead verbleiben), können Sie sicher 25–50 Worker ausführen.

Wenden Sie Änderungen an

Welchen PHP-Modus sollten Sie wählen? {#which-to-choose}

Hier ist ein praktischer Entscheidungsleitfaden:

Wählen Sie mod_php wenn:

  • Sie eine lokale Entwicklungsumgebung ausführen
  • Sie eine sehr einfache, niedrig frequentierte statische Website haben
  • Sie auf Legacy-Shared-Hosting ohne andere Optionen sind

Wählen Sie FastCGI wenn:

  • Sie eine Website mit mittlerem Datenverkehr haben und PHP-FPM nicht verfügbar ist
  • Sie von mod_php migrieren und einen Zwischenschritt benötigen

Wählen Sie PHP-FPM wenn:

  • Sie jede Produktionsanwendung ausführen
  • Sie mehrere PHP-Versionen auf demselben Server unterstützen müssen
  • Sie WordPress, Laravel, Symfony, Magento oder ein modernes PHP-Framework ausführen
  • Sie Pro-Anwendungs-Sicherheitsisolation möchten
  • Sie Nginx verwenden (PHP-FPM ist die einzige praktikable Option)
  • Sie Skalierbarkeit unter gleichzeitigem Datenverkehr benötigen

Für die überwiegende Mehrheit der Produktionsfälle ist PHP-FPM der klare Gewinner. Es ist die Standard-Konfiguration auf modernen verwalteten Hosting-Plattformen und das, was Sie auf jedem selbstverwalteten VPS ausführen sollten.

Wenn Sie mehrere Websites verwalten und eine grafische Benutzeroberfläche zur Behandlung von PHP-Modus-Umschaltung, Process-Pool-Verwaltung und Virtual-Host-Konfiguration ohne manuelles Bearbeiten von Konfigurationsdateien möchten, erwägen Sie einen VPS mit cPanel — cPanel’s EasyApache 4 ermöglicht es Ihnen, PHP-Handler pro Domain mit wenigen Klicks zu wechseln.

Alternativ erkunden Sie die vollständige Palette von VPS-Kontrollpanels, um die Verwaltungsschnittstelle zu finden, die am besten zu Ihrem Workflow passt.

Sicherung Ihrer PHP-Anwendung über den Ausführungsmodus hinaus

15%

15% auf alle Hosting-Dienste sparen

Teste deine Fähigkeiten und erhalte Rabatt auf jeden Hosting-Plan

Benutze den Code:

Skills
Anfangen