Rocky www

Aus Xinux Wiki
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

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