Nginx mit PHP-FPM auf CentOS 8 installieren und konfigurieren

Nginx ist ein kostenloser, quelloffener und einer der leistungsfähigsten Webserver weltweit. Er wird vor allem für stark ausgelastete und stark frequentierte Websites verwendet. Nginx ist bekannt für seine Stabilität, die einfache Konfiguration und den geringen Ressourcenverbrauch. Du kannst Nginx als Webserver und Reverse Proxy verwenden.

FPM steht für FastCGI Process Manager und ist eine alternative FastCGI-Implementierung von PHP, die für Websites mit hohem Datenverkehr verwendet wird. Er wird häufig zusammen mit Webservern verwendet, um PHP-Seiten auszuliefern. PHP-FPM verbraucht weniger Speicher und CPU im Vergleich zu anderen Methoden zur Ausführung von PHP. PHP-FPM ist schneller als traditionelle CGI-basierte Methoden für PHP-Umgebungen mit mehreren Benutzern. Mit PHP-FPM können auch mehrere PHP-Versionen gleichzeitig ausgeführt werden.

In diesem Tutorial lernen wir, wie wir Nginx mit PHP-FPM-Unterstützung in CentOS 8 installieren.

Voraussetzungen

  • Ein Server, auf dem CentOS 8 läuft.
  • Ein Root-Passwort ist auf deinem Server eingerichtet.

Erste Schritte

Standardmäßig ist SELinux auf dem CentOS 8 Server aktiviert. Daher musst du es zunächst deaktivieren.

Das kannst du tun, indem du die Datei /etc/selinux/config bearbeitest:

nano /etc/selinux/config

Nimm die folgenden Änderungen vor:

SELINUX=disabled

Speichere und schließe die Datei. Starte dann deinen Server neu, um die Änderungen zu übernehmen.

Nginx Webserver installieren

Installiere zunächst den Nginx-Webserver mit dem folgenden Befehl:

yum install nginx -y

Sobald Nginx installiert ist, starte den Nginx-Dienst und aktiviere ihn mit dem folgenden Befehl, damit er beim Booten startet:

systemctl start nginx
systemctl enable nginx

Wenn du damit fertig bist, kannst du mit dem nächsten Schritt fortfahren.

PHP und PHP-FPM installieren

Als Nächstes installierst du PHP und PHP-FPM, indem du den folgenden Befehl ausführst:

yum install php php-cli php-common php-fpm -y

Sobald alle Pakete installiert sind, starte den PHP-FPM-Dienst und aktiviere ihn so, dass er nach dem Neustart des Systems gestartet wird:

systemctl start php-fpm
systemctl enable php-fpm

Du kannst den Status des PHP-FPM-Dienstes auch mit folgendem Befehl überprüfen:

systemctl status php-fpm

Du solltest die folgende Ausgabe erhalten:

? php-fpm.service - The PHP FastCGI Process Manager
   Loaded: loaded (/usr/lib/systemd/system/php-fpm.service; disabled; vendor preset: disabled)
   Active: active (running) since Thu 2019-10-17 05:39:11 EDT; 4min 40s ago
 Main PID: 1475 (php-fpm)
   Status: "Processes active: 0, idle: 5, Requests: 0, slow: 0, Traffic: 0req/sec"
    Tasks: 6 (limit: 5060)
   Memory: 28.5M
   CGroup: /system.slice/php-fpm.service
           ??1475 php-fpm: master process (/etc/php-fpm.conf)
           ??1478 php-fpm: pool www
           ??1479 php-fpm: pool www
           ??1480 php-fpm: pool www
           ??1481 php-fpm: pool www
           ??1482 php-fpm: pool www

Oct 17 05:39:10 centos8 systemd[1]: Starting The PHP FastCGI Process Manager...
Oct 17 05:39:11 centos8 systemd[1]: Started The PHP FastCGI Process Manager.

Eine Indexseite für Nginx erstellen

Als Nächstes musst du eine Beispielseite info.php erstellen, um zu testen, ob Nginx PHP-FPM verwendet oder nicht.

Du kannst eine info.php im Stammverzeichnis von Nginx erstellen, wie unten gezeigt:

nano /var/www/html/info.php

Füge die folgenden Zeilen ein:

<?php
    phpinfo();
?>

Speichere und schließe die Datei, wenn du fertig bist.

Als Nächstes änderst du den Eigentümer der Datei info.php auf Nginx:

chown -R nginx: /var/www/html/info.php/

Nginx mit PHP-FPM konfigurieren

Als Nächstes musst du eine Konfigurationsdatei für den virtuellen Nginx-Host erstellen und die PHP-FPM-Unterstützung aktivieren.

Du kannst sie mit dem folgenden Befehl erstellen:

nano /etc/nginx/conf.d/example.conf

Füge die folgenden Zeilen hinzu:

server {
    listen 80;
    server_name example.com;
    root /var/www/html/;
    index info.php;

    access_log /var/log/nginx/example.com.access.log;
    error_log /var/log/nginx/example.com.error.log;

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_pass unix:/run/php-fpm/www.sock;
        fastcgi_index   index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ {
        expires max;
        log_not_found off;
    }

}

Speichere und schließe die Datei. Teste dann Nginx mit folgendem Befehl auf Syntaxfehler:

nginx -t

Aktiviere anschließend die Nginx-Datei für den virtuellen Host und starte den Nginx-Dienst neu, um die Konfiguration zu übernehmen:

systemctl restart nginx

Nginx mit PHP-FPM-Unterstützung testen

Öffne nun deinen Webbrowser und gib die URL http://example.com ein. Du wirst auf die folgende Seite weitergeleitet:

Auf der obigen Seite solltest du sehen, dass PHP-FPM mit dem Nginx-Webserver geladen ist.

Fazit

Glückwunsch! Du hast Nginx mit PHP-FPM-Unterstützung erfolgreich auf einem CentOS 8-Server installiert. Jetzt kannst du PHP-FPM nutzen, um mehrere Websites zu hosten, die unterschiedliche PHP-Versionen verwenden.

Das könnte dich auch interessieren …