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
- Was sind PHP-Ausführungsmodi?
- mod_php — Das klassische Apache-Modul
- FastCGI — Entkopplung von PHP vom Webserver
- PHP-FPM — Der moderne Standard für hohe Leistung
- Nebeneinander-Vergleich
- Wie man PHP-FPM auf einem VPS einrichtet (Ubuntu/Debian)
- PHP-FPM mit Nginx
- PHP-FPM mit Apache
- PHP-FPM Pool-Tuning für die Produktion
- Welchen PHP-Modus sollten Sie wählen?
- 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:
| Modus | Architektur | Am besten geeignet für |
|---|---|---|
| mod_php | PHP in Apache eingebettet | Einfache gemeinsame Umgebungen |
| FastCGI | PHP als separater Prozess | Websites mit mittlerem Datenverkehr |
| PHP-FPM | Verwaltete PHP-Prozess-Pools | Hochfrequente 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}
| Funktion | mod_php | FastCGI | PHP-FPM |
|---|---|---|---|
| Architektur | In Apache eingebettet | Externer Prozess | Verwalteter Prozess-Pool |
| Speichereffizienz | Niedrig | Mittel | Hoch |
| Statische Datei-Overhead | Hoch | Niedrig | Niedrig |
| Verarbeitung gleichzeitiger Anfragen | Schlecht | Gut | Ausgezeichnet |
| PHP-Version pro Site | Nein | Begrenzt | Ja |
| Sicherheitsisolation | Schlecht | Mittel | Ausgezeichnet |
| Nginx-Kompatibilität | Nein | Ja | Ja |
| Konfigurationskomplexität | Niedrig | Mittel | Mittel |
| Produktionsreife | Nein | Teilweise | Ja |
| Protokollierung langsamer Anfragen | Nein | Nein | Ja |
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.
