Tutorials  /  Ubuntu

Konfiguration von PHP-FPM mit NGINX

Ccentron Redaktion · Dezember 2024 ·4 Min. Lesezeit ·Ubuntu, Tutorial

Einführung

PHP-FPM (FastCGI Process Manager) ist eine Alternative zur FastCGI-Implementierung von PHP mit zusätzlichen Funktionen, die für Websites mit hohem Datenverkehr nützlich sind. Es ist die bevorzugte Methode zur Verarbeitung von PHP-Seiten mit NGINX und schneller als herkömmliche CGI-basierte Methoden wie SUPHP oder mod_php für die Ausführung eines PHP-Skripts. Der Hauptvorteil von PHP-FPM besteht darin, dass es erheblich weniger Speicher und CPU benötigt als andere Methoden zur Ausführung von PHP. Der Hauptgrund dafür ist, dass PHP demonisiert wird, wodurch es in einen Hintergrundprozess umgewandelt wird, während ein CLI-Skript zur Verwaltung von PHP-Anfragen bereitgestellt wird.

VM

Passende Infrastruktur bei centron

Ubuntu-Server ohne eigene Hardware: ccloud³ VMs mit vollem Root-Zugriff ab 3,12 € im Monat, stundengenau abgerechnet und in Sekunden bereit. Cloud Server mieten →

Voraussetzungen für die PHP-FPM NGINX-Konfiguration

  • Sie können eine SSH-Sitzung auf Ihrem Ubuntu 18.04-System mit Root- oder einem Benutzer mit Sudo-Rechten öffnen.
  • Sie haben NGINX und PHP bereits auf Ihrem Ubuntu 18.04-System installiert.

Schritte zur NGINX PHP-FPM-Konfiguration

1. PHP-FPM installieren

Nginx weiß nicht von selbst, wie ein PHP-Skript ausgeführt wird. Es benötigt ein PHP-Modul wie PHP-FPM, um PHP-Skripte effizient zu verwalten. PHP-FPM läuft hingegen außerhalb der NGINX-Umgebung, indem es einen eigenen Prozess erstellt. Wenn ein Benutzer eine PHP-Seite anfordert, leitet der NGINX-Server die Anfrage über FastCGI an den PHP-FPM-Dienst weiter. Die Installation von PHP-FPM in Ubuntu 18.04 hängt von PHP und seiner Version ab. Überprüfen Sie die Dokumentation der installierten PHP-Version, bevor Sie mit der Installation von FPM auf Ihrem Server fortfahren. Angenommen, Sie haben bereits die neueste PHP-Version 7.3 installiert, dann können Sie FPM mit dem folgenden apt-get-Befehl installieren.

Konsole
# apt-get install php7.3-fpm

Der FPM-Dienst wird automatisch gestartet, sobald die Installation abgeschlossen ist. Sie können dies mit dem folgenden systemd-Befehl überprüfen:

Konsole
# systemctl status php7.3-fpm
YAML
● php7.3-fpm.service - The PHP 7.3 FastCGI Process Manager
   Loaded: loaded (/lib/systemd/system/php7.3-fpm.service; enabled; vendor preset: enabled)
   Active: active (running) since Sun 2019-02-17 06:29:31 UTC; 30s ago
     Docs: man:php-fpm7.3(8)
 Main PID: 32210 (php-fpm7.3)
   Status: "Processes active: 0, idle: 2, Requests: 0, slow: 0, Traffic: 0req/sec"
    Tasks: 3 (limit: 1152)
   CGroup: /system.slice/php7.3-fpm.service
           ├─32210 php-fpm: master process (/etc/php/7.3/fpm/php-fpm.conf)
           ├─32235 php-fpm: pool www
           └─32236 php-fpm: pool www

2. PHP-FPM-Pool konfigurieren

Der php-fpm-Dienst erstellt einen Standardpool, dessen Konfiguration (www.conf) sich im Ordner /etc/php/7.3/fpm/pool.d befindet. Sie können den Standardpool an Ihre Anforderungen anpassen. Es ist jedoch eine gängige Praxis, separate Pools zu erstellen, um die Ressourcenverteilung für jeden FPM-Prozess besser zu kontrollieren. Darüber hinaus ermöglicht die Trennung von FPM-Pools, dass sie unabhängig voneinander durch die Erstellung eines eigenen Masterprozesses arbeiten. Das bedeutet, dass jede PHP-Anwendung mit ihren eigenen Cache-Einstellungen konfiguriert werden kann. Eine Änderung in der Konfiguration eines Pools erfordert nicht das Starten oder Stoppen der anderen FPM-Pools.

3. NGINX für PHP-FPM konfigurieren

Erstellen Sie nun einen NGINX-Serverblock, der den oben genannten FPM-Pool verwendet. Bearbeiten Sie dazu Ihre NGINX-Konfigurationsdatei und geben Sie den Pfad der Socket-Datei des Pools mit der Option fastcgi_pass innerhalb des Location-Blocks für PHP an.

Code
server {
         listen       80;
         server_name  example.journaldev.com;
         root         /var/www/html/wordpress;

         access_log /var/log/nginx/example.journaldev.com-access.log;
         error_log  /var/log/nginx/example.journaldev.com-error.log error;
         index index.html index.htm index.php;

         location / {
                      try_files $uri $uri/ /index.php$is_args$args;
         }

         location ~ \.php$ {
            fastcgi_split_path_info ^(.+\.php)(/.+)$;
            fastcgi_pass unix:/var/run/php7.2-fpm-wordpress-site.sock;
            fastcgi_index index.php;
            include fastcgi.conf;
    }
}

4. PHP-FPM NGINX-Konfiguration testen

Um zu testen, ob die obige NGINX-Konfigurationsdatei tatsächlich den neu erstellten FPM-Pool verwendet, erstellen Sie eine phpinfo-Datei im Webroot. Ich habe im obigen NGINX-Server-Block /var/www/html/wordpress als Webroot verwendet. Passen Sie diesen Wert entsprechend Ihrer Umgebung an.

PHP
# cd /var/www/html/wordpress
# echo "<?php echo phpinfo();?>" > info.php

Sobald Sie die PHP-Info-Seite erstellt haben, öffnen Sie diese in Ihrem bevorzugten Webbrowser. Sie werden feststellen, dass die Werte der Variablen $_SERVER['USER'] und $_SERVER['HOME'] auf wordpress_user bzw. /home/wordpress_user zeigen, wie zuvor in der FPM-Konfigurationsdatei festgelegt. Dies bestätigt, dass NGINX die PHP-Seiten über unseren gewünschten FPM-Pool bedient.

Zusammenfassung

In diesem Artikel haben wir gelernt, wie man PHP-FPM installiert und separate Pools für verschiedene Benutzer und Anwendungen konfiguriert. Wir haben auch gelernt, wie man einen NGINX-Serverblock konfiguriert, um eine Verbindung zu einem PHP-FPM-Dienst herzustellen. PHP-FPM bietet Zuverlässigkeit, Sicherheit, Skalierbarkeit und Geschwindigkeit sowie zahlreiche Optionen zur Leistungsoptimierung. Sie können jetzt den Standard-PHP-FPM-Pool in mehrere Ressourcen-Pools aufteilen, um verschiedene Anwendungen zu bedienen. Dies verbessert nicht nur die Serversicherheit, sondern ermöglicht auch die optimale Zuweisung von Serverressourcen!

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 Ubuntu
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