Rocky www
Zur Navigation springen
Zur Suche springen
Apache Webserver auf Rocky Linux
Der Webserver läuft in der DMZ und stellt Webinhalte über HTTP und HTTPS bereit. HTTP-Anfragen werden automatisch auf HTTPS umgeleitet. Das Zertifikat kommt von web.samogo.de und liegt unter /etc/ssl/.
Installation
- dnf install -y httpd mod_ssl
Zertifikat holen
- wget -nv -O /tmp/it2XX.int.tgz https://web.samogo.de/certs/it2XX.int.tgz
- tar -C /tmp -xvzf /tmp/it2XX.int.tgz
- mv /tmp/fullchain.pem /etc/ssl/own.crt
- mv /tmp/privkey.pem /etc/ssl/own.key
PHP installieren
- PHP wird über das dnf-Modul installiert – so lässt sich später auch eine andere Version aktivieren
- dnf install -y php php-fpm php-mysqlnd php-json php-mbstring
- PHP-FPM starten – httpd übergibt PHP-Anfragen an diesen Prozess
- systemctl enable --now php-fpm
VirtualHost konfigurieren
- Wir legen eine eigene Konfigurationsdatei an – nicht die default ssl.conf anfassen
- vi /etc/httpd/conf.d/www.it2XX.int.conf
# HTTP → HTTPS Redirect
<VirtualHost *:80>
ServerName www.it2XX.int
Redirect permanent / https://www.it2XX.int/
</VirtualHost>
# HTTPS VirtualHost
<VirtualHost *:443>
ServerName www.it2XX.int
DocumentRoot /var/www/it2XX
SSLEngine on
SSLCertificateFile /etc/ssl/own.crt
SSLCertificateKeyFile /etc/ssl/own.key
<Directory /var/www/it2XX>
AllowOverride None
Require all granted
</Directory>
# PHP über FPM
<FilesMatch \.php$>
SetHandler "proxy:unix:/run/php-fpm/www.sock|fcgi://localhost"
</FilesMatch>
ErrorLog /var/log/httpd/www.it2XX.int_error.log
CustomLog /var/log/httpd/www.it2XX.int_access.log combined
</VirtualHost>
Verzeichnis anlegen
- DocumentRoot erstellen
- mkdir -p /var/www/it2XX
Beispielseite
- Eine einfache PHP-Seite die den Hostnamen und die aktuelle Zeit anzeigt
- vi /var/www/it2XX/index.php
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<title>Willkommen auf <?= gethostname() ?></title>
<style>
body { font-family: sans-serif; max-width: 600px; margin: 4em auto; }
h1 { color: #c0392b; }
p { color: #333; }
</style>
</head>
<body>
<h1>Willkommen auf <?= gethostname() ?></h1>
<p>Server: <strong><?= $_SERVER['SERVER_NAME'] ?></strong></p>
<p>Zeit: <strong><?= date('d.m.Y H:i:s') ?></strong></p>
<p>PHP: <strong><?= phpversion() ?></strong></p>
</body>
</html>
Konfiguration prüfen
- Syntaxfehler erkennen bevor httpd neu gestartet wird
- apachectl configtest
Syntax OK
Dienst starten
- systemctl enable --now httpd
- systemctl restart httpd
Firewall
- HTTP und HTTPS auf dem www-Server freigeben
- firewall-cmd --permanent --zone=public --add-service=http
- firewall-cmd --permanent --zone=public --add-service=https
- firewall-cmd --reload
SELinux
- SELinux läuft auf Rocky standardmäßig im enforcing-Modus. Auch wenn die Dateiberechtigungen stimmen, blockiert SELinux den Zugriff wenn der Sicherheitskontext falsch ist.
Kontext setzen
- Das Verzeichnis muss als Webinhalt markiert sein damit httpd darauf zugreifen darf
- chcon -Rt httpd_sys_content_t /var/www/it2XX
- Kontext prüfen
- ls -Zd /var/www/it2XX
Fehleranalyse
- Falls der Zugriff trotzdem fehlschlägt – SELinux-Blockaden anzeigen
- ausearch -m avc -ts recent
Logs
- journalctl -fu httpd
- tail -f /var/log/httpd/www.it2XX.int_error.log
- tail -f /var/log/httpd/www.it2XX.int_access.log
Test
- Im Browser aufrufen – HTTP muss automatisch auf HTTPS umleiten
http://www.it2XX.int https://www.it2XX.int
- Zertifikat prüfen
- openssl s_client -connect www.it2XX.int:443 -showcerts