Nginx php Rocky: Unterschied zwischen den Versionen
| (4 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
| Zeile 89: | Zeile 89: | ||
* /etc/ssl/own.key | * /etc/ssl/own.key | ||
| + | === SELinux für TLS-Zertifikate === | ||
| + | Kontext der Zertifikatsdateien prüfen: | ||
| + | * ls -Z /etc/ssl/own.crt /etc/ssl/own.key | ||
| + | |||
| + | Kontext dauerhaft setzen: | ||
| + | * dnf install policycoreutils-python-utils | ||
| + | * semanage fcontext -a -t cert_t "/etc/ssl/own\.(crt|key)" | ||
| + | * restorecon -Rv /etc/ssl/ | ||
| + | |||
| + | === Konfigurieren === | ||
Datei: /etc/nginx/conf.d/default.conf | Datei: /etc/nginx/conf.d/default.conf | ||
<syntaxhighlight lang="nginx"> | <syntaxhighlight lang="nginx"> | ||
| + | server { | ||
| + | listen 80; | ||
| + | server_name localhost; | ||
| + | return 301 https://$host$request_uri; | ||
| + | } | ||
| + | |||
server { | server { | ||
listen 443 ssl; | listen 443 ssl; | ||
| Zeile 120: | Zeile 136: | ||
* firewall-cmd --reload | * firewall-cmd --reload | ||
* firewall-cmd --list-all | * firewall-cmd --list-all | ||
| + | |||
| + | == Funktion prüfen == | ||
| + | * https://localhost/info.php | ||
== Funktion prüfen == | == Funktion prüfen == | ||
Aktuelle Version vom 29. Mai 2026, 09:27 Uhr
NGINX Rocky Linux mit PHP-FPM betreiben
Diese Anleitung zeigt, wie man eine einfache PHP-Webanwendung mit NGINX und PHP-FPM unter Rocky Linux betreibt.
Voraussetzungen
- Rocky Linux mit root-Rechten
- Paketverwaltung via dnf
- Standardwebverzeichnis: /var/www/html
- PHP 8.2 als Beispiel
Installation
- dnf install nginx php-fpm
PHP-FPM prüfen
- systemctl status php-fpm
Die Socket-Datei für FastCGI-Kommunikation liegt standardmäßig hier:
/run/php-fpm/www.sock
NGINX-Konfiguration anpassen
Unter Rocky Linux gibt es kein sites-available/sites-enabled-System. Eigene Konfigurationen kommen nach:
/etc/nginx/conf.d/
Datei: /etc/nginx/conf.d/default.conf
server {
listen 80;
server_name localhost;
root /var/www/html;
index index.php index.html;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
fastcgi_pass unix:/run/php-fpm/www.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
- nginx -t
Testseite anlegen
- echo "<?php phpinfo(); ?>" > /var/www/html/info.php
Dienste aktivieren und starten
- systemctl enable --now php-fpm
- systemctl enable --now nginx
SELinux
Rocky Linux läuft standardmäßig mit SELinux im Enforcing-Modus. Ohne Anpassungen blockiert SELinux den Zugriff von NGINX auf die PHP-FPM-Socket-Datei sowie auf das Webverzeichnis.
- setsebool -P httpd_can_network_connect 1
- restorecon -Rv /var/www/html
- ls -Z /var/www/html/info.php
Erwarteter Kontext:
- system_u:object_r:httpd_sys_content_t:s0
Kontext manuell setzen falls abweichend:
- chcon -t httpd_sys_content_t /var/www/html/info.php
Firewalld
- firewall-cmd --permanent --add-service=http
- firewall-cmd --reload
- firewall-cmd --list-all
Funktion prüfen
Fehlersuche
Dateien und Berechtigungen im Webverzeichnis prüfen:
- ls -la /var/www/html/
SELinux-Kontext der Dateien prüfen:
- ls -Z /var/www/html/
NGINX-Fehlerlog live verfolgen:
- tail -f /var/log/nginx/error.log
SELinux-Denials der letzten Minuten anzeigen:
- ausearch -m avc -ts recent
TLS konfigurieren
Die Zertifikatsdateien liegen unter:
- /etc/ssl/own.crt
- /etc/ssl/own.key
SELinux für TLS-Zertifikate
Kontext der Zertifikatsdateien prüfen:
- ls -Z /etc/ssl/own.crt /etc/ssl/own.key
Kontext dauerhaft setzen:
- dnf install policycoreutils-python-utils
- semanage fcontext -a -t cert_t "/etc/ssl/own\.(crt|key)"
- restorecon -Rv /etc/ssl/
Konfigurieren
Datei: /etc/nginx/conf.d/default.conf
server {
listen 80;
server_name localhost;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name localhost;
root /var/www/html;
index index.php index.html;
ssl_certificate /etc/ssl/own.crt;
ssl_certificate_key /etc/ssl/own.key;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
fastcgi_pass unix:/run/php-fpm/www.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
- nginx -t
- systemctl reload nginx
Firewalld für HTTPS erweitern
- firewall-cmd --permanent --add-service=https
- firewall-cmd --reload
- firewall-cmd --list-all
Funktion prüfen
Funktion prüfen
Hinweise
- .htaccess-Dateien werden von NGINX nicht unterstützt – Rewrite-Regeln müssen direkt in der NGINX-Konfiguration erfolgen.
- Unter Rocky Linux heißt der PHP-FPM-Dienst schlicht
php-fpm, nichtphp8.2-fpm. - Der Socket-Pfad ist
/run/php-fpm/www.sockstatt/var/run/php/php8.2-fpm.sock. - Bei TCP statt Socket lautet der fastcgi_pass:
fastcgi_pass 127.0.0.1:9000;– dann muss das SELinux-Booleanhttpd_can_network_connectgesetzt sein.