LAMP-Stack mit Fedora Server

Veröffentlicht in: ,

Im vorangehenden Beitrag haben wir gezeigt, wie man das Betriebssystem Fedora-Server in einer Virtuellen Maschine (VM) installiert und einrichtet. Nun folgt das Setup der Serversoftware Apache, der Datenbank MariaDB und der Skriptsprache PHP.

Für unser Beispiel verwenden wir eine VM in Parallels-Desktop auf einem Mac. Die einzelnen Befehle für die Installation können entweder direkt in der Textkonsole des Servers (der VM), dem Terminal in Cockpit oder im Mac-Terminal (nach Anmeldung auf dem Server per SSH) aufgerufen werden.

Apache Webserver installieren und einrichten

Der erste Baustein unseres LAMP-Stacks ist der Apache Webserver. Er sorgt dafür, dass Webseiten ausgeliefert werden, wenn ein Client (z. B. ein Browser) eine Anfrage stellt.

1. Installation

Die Installation erfolgt über den Fedora-Paketmanager dnf:

sudo dnf install httpd

Damit wird Apache heruntergeladen und installiert.

Safari mit Cockpit-Terminal und dem Befehl zur Installation von Apache.

2. Dienst starten und aktivieren

Nach der Installation muss Apache gestartet und so konfiguriert werden, dass er beim Systemstart automatisch läuft:

sudo systemctl start httpd
sudo systemctl enable httpd

💡 Hinweis: In der Fedora-Dokumentation wird oft die lange Form httpd.service verwendet. Mit systemctl ist es aber nicht nötig, .service explizit anzugeben.

Beispiele:

sudo systemctl start httpd

und

sudo systemctl start httpd.service

machen genau dasselbe.

3. Firewall anpassen

Damit Apache von außen (hier also vom Mac aus) erreichbar ist, müssen die entsprechenden Ports in der Firewall freigeschaltet werden:

sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload

4. Funktion prüfen

Jetzt öffnen Sie im Browser die IP-Adresse der VM. Wenn alles funktioniert, erscheint die Standardseite von Apache:

https://<VM-IP>
Fedora - Apache Webserver Testpage

Die IP-Adresse der VM finden Sie in der Konsole des Servers oder in einem Terminal nach der Anmeldung am Server per SSH z. B. mit dem Befehl:

ip addr
# oder
hostname -I

oder über Cockpit im Bereich Netzwerk.


Hinweis: Im Cockpit-Webterminal kann es vorkommen, dass einige Befehle, z.B. ip addr oder hostname -I keine Ausgabe liefern. Das ist kein Fehler – es liegt an der Terminal-Emulation im Browser. Ebenso lässt sich aus dem Cockpit heraus der Editor Nano nicht aufrufen.

Hinweise zum Browser:

BrowserVerhalten
Safariöffnet die Seite nur mit vorangestelltem https, nach Warnung
Chromeöffnet die Seite gar nicht
Firefoxbenötigt die Angabe der Port-Nummer :80 nach der IP-Adresse und der HTTPS-Modus darf nicht aktiviert sein, oder Sie müssen eine Ausnahme definieren.

Ob Apache tatsächlich läuft, können Sie jederzeit prüfen mit

sudo systemctl status httpd

5. Erste eigene Webseite

Die Standard-Dateien von Apache liegen in Fedora im Verzeichnis:

/var/www/html

Dort können Sie eine erste Testseite anlegen:

echo "hallo, von der eigenen Website und Apache!" | sudo tee /var/www/html/index.html

Wenn Sie die Seite im Browser neu laden, sollte nun Ihr eigener Text erscheinen. Je nach Browser-Einstellung erhalten Sie aber zunächst eine Sicherheitswarnung, die Sie ignorieren können.

Alternativ können Sie in der Textkonsole des Servers mit Editor Nano eine Datei index.html erstellen. Dazu loggen Sie sich auf dem Server (der VM) ein und wechseln in das Verzeichnis

cd /var/www/html

Den Editor öffnen Sie mit einer neuen Datei:

sudo nano index.html

Schreiben Sie zum Testen beliebigen Text in die Datei. Verlassen den Editor mit

Strg + X

und bestätigen Sie das Speichern mit „j“.

Wichtige Verzeichnisse und Dateien in Apache (Fedora)

  • /var/www/html/ Standard-Webverzeichnis. Dateien, die hier liegen, sind direkt im Browser aufrufbar. Beispiel: /var/www/html/index.html → erreichbar unter http://<IP-Adresse>/index.html
  • /etc/httpd/conf/httpd.conf Hauptkonfigurationsdatei von Apache. Hier können globale Einstellungen angepasst werden (z. B. Ports, Module).
  • /etc/httpd/conf.d/ Verzeichnis für zusätzliche Konfigurationsdateien. Neue Einstellungen oder virtuelle Hosts werden hier als eigene .conf-Dateien abgelegt. Vorteil: Änderungen bleiben übersichtlich getrennt von der Hauptkonfiguration.
  • /var/log/httpd/ Log-Dateien des Webservers:
    • access_log : alle Zugriffe auf den Webserver
    • error_log: Fehlermeldungen

Netzwerk und Freigaben

Falls von außerhalb (z. B. einem zweiten Rechner im Netzwerk) auf die Seite zugegriffen werden soll, müssen in der Firewall des Servers die Ports 80 (http) und 443 (https) freigegeben sein.

Hinweis zum Netzwerk in Parallels

Standardmäßig laufen Virtuelle Maschinen in Parallels im NAT-Modus.

  • Damit ist die VM vom Host-Rechner (Mac) erreichbar, aber nicht von anderen Geräten im Netzwerk.
  • Für Tests im Browser des Mac reicht das völlig aus.

Wenn die Webseite jedoch auch von anderen Geräten im Heimnetz (z. B. Laptop, Smartphone) erreichbar sein soll, empfiehlt es sich, das Parallels-Netzwerk auf Bridged Network umzustellen. Dann erhält die VM eine eigene IP-Adresse im LAN, die von allen Geräten genutzt werden kann.

MariaDB installieren und einrichten

Der zweite Baustein unseres LAMP-Stacks ist die Datenbank. In den Fedora Paketquellen ist standardmäßig MariaDB als MySQL-kompatible Datenbank enthalten.

1. Installation

sudo dnf install mariadb-server
Cockpit-Terminal, Installation der Datenbank.

2. Dienst starten und aktivieren

sudo systemctl start mariadb
sudo systemctl enable mariadb

Damit läuft die Datenbank und startet künftig automatisch beim Systemstart.

Cockpit Terminal: Starten und aktivieren der Datenbank.

3. Grundkonfiguration

Für die erste Einrichtung gibt es ein Sicherheits-Skript:

sudo mysql_secure_installation

Das Skript fragt interaktiv die Grundkonfiguration ab. Für eine Lern- und Testumgebung ausschließlich auf dem eigenen Rechner benötigen Sie das nicht unbedingt. Dennoch ist es hilfreich, alle Optionen einmal gesehen zu haben.

  • Root-Passwort setzen? (Ja, unbedingt ein sicheres Passwort wählen)
  • Anonyme Benutzer entfernen? (Ja)
  • Root-Login von entfernten Hosts verbieten? (Ja)
  • Testdatenbank entfernen? (Ja)
  • Rechte-Tabellen neu laden? (Ja)

Hinweis zur Authentifizierung

Während der Einrichtung fragt MariaDB:

Switch to unix_socket authentication [Y/n]
  • Y (Ja): der Root-Benutzer meldet sich nur lokal über das Linux-Konto root an. Dadurch ist eine Anmeldung im Terminal ohne Datenbank-Passwort (nur das sudo-Passwort wird abgefragt) möglich:sudo mysql
  • n (Nein): der root-Benutzer erhält ein eigenes MariaDB-Passwort, Anmeldung mit Benutzername und Passwort:mysql -u root -p

Für Lern- und Testumgebungen ist die Passwort-Variante (n) übersichtlicher, da man bewusst mit Benutzername und Passwort arbeitet.

4. Test der Installation

Mit folgendem Befehl können Sie sich als root-Benutzer anmelden:

mysql -u root -p

Nach Eingabe des Passworts sollte die MariaDB-Eingabeaufforderung erscheinen. Dort können Sie sich mit exit; wieder abmelden.

5. MariaDB verwenden

In der Regel ist es sinnvoll, nicht direkt mit dem Root-Benutzer zu arbeiten, sondern einen eigenen Benutzer mit Passwort anzulegen. So bleibt das Root-Konto als Notfall-Zugang erhalten.

Neuen Benutzer anlegen:

CREATE USER 'appuser'@'localhost' IDENTIFIED BY 'starkespasswort';
GRANT ALL PRIVILEGES ON *.* TO 'appuser'@'localhost';
FLUSH PRIVILEGES;

Testen, ob der Benutzer angelegt wurde:

SELECT User, Host FROM mysql.user WHERE User='appuser';

Loggen Sie sich dann aus mit exitund mit den neuen Benutzerdaten wieder ein:

mysql -u appuser -p

Hinweis: Falls Sie sich während der Ausführung des Sicherungs-Skripts vertan haben und das root-Login mit Passwort nicht funktioniert, können Sie sich meist noch mit dem Linux-Benutzer anmelden:

sudo mysql

Von dort aus lässt sich das root-Login wieder auf Passwort umstellen:

ALTER USER 'root'@'localhost' IDENTIFIED VIA mysql_native_password USING PASSWORD('deinpasswort');
FLUSH PRIVILEGES;

PHP installieren und testen

Der dritte Baustein des LAMP-Stacks ist PHP. Damit können dynamische Webseiten mit Datenbankanbindung erstellt werden.

1. Installation

In Fedora installiert man PHP zusammen mit den wichtigsten Erweiterungen (u. a. für MariaDB):

sudo dnf install php php-mysqlnd
Cockpit Terminal: PHP Installation.

2. Apache neu starten

Nach der Installation muss Apache neu gestartet werden, damit er PHP unterstützt:

sudo systemctl restart httpd
Cockpit Terminal: nach abgeschlossener PHP-Installation Apache neu starten.

3. Testseite anlegen

Um zu prüfen, ob PHP korrekt funktioniert, legen wir eine kleine Testdatei im Apache-Webverzeichnis an:

echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/info.php
Cockpit Terminal: eine Testseite mit "phpinfo" erstellen.

Diese Seite zeigt alle Details der PHP-Installation an (Version, Module, Konfiguration). Im Browser wird die Seite aufgerufen mit:

https://<VM-IP>/info.php

Wenn die PHP-Übersichtsseite erscheint, ist alles richtig eingerichtet.

Die PHP-Info Seite im Browser.

4. Sicherheitshinweis

Die Datei info.php sollte nach dem Test wieder gelöscht werden, da sie zu viele interne Informationen preisgibt:

sudo rm /var/www/html/info.php

Wer möchte, kann nun ein eigenes PHP-Skript erstellen und im Verzeichnis var/www/html speichern, z.B. als index.php

Hinweis: Welche Seite wird zuerst geladen?

Der Apache-Webserver sucht beim Aufruf eines Verzeichnisses automatisch nach einer „Startdatei“. Standardmäßig gilt dabei folgende Reihenfolge:

DirectoryIndex index.html index.php

Das bedeutet: Liegt im Verzeichnis eine index.html, wird diese immer zuerst angezeigt. Die Datei index.php wird nur geladen, wenn keine index.html vorhanden ist.

Sie können eine Seite direkt aufrufen, indem Sie den Dateinamen an die Adresse anhängen:

http://<ip-addr>/demo.php

Alternativ können Sie die index.html umbenennen (z. B. in info.html), wenn Sie möchten, dass die PHP-Seite automatisch als Startseite erscheint.

DirectoryIndex ist eine Apache-Direktive (also eine Konfigurationsanweisung), die festlegt, welche Datei Apache lädt, wenn in der URL kein Dateiname angegeben ist.

Beispiel:

  • Sie rufen http://localhost/ auf → kein Dateiname in der URL.
  • Apache schaut ins Verzeichnis /var/www/html/ und prüft, ob dort eine der in DirectoryIndex angegebenen Dateien liegt.

Wenn in der Konfiguration steht:

DirectoryIndex index.html index.php

dann gilt:

  1. Falls index.html vorhanden ist, wird sie geladen.
  2. Falls nicht, aber index.php vorhanden ist, wird diese geladen.
  3. Falls keine von beiden existiert gibt Apache einen Fehler zurück (z. B. „Forbidden“ oder ein Verzeichnislisting, wenn das erlaubt ist).

Ausblick

Mit einem funktionierenden LAMP-Stack haben Sie die Grundlage geschaffen, um eigene Webanwendungen zu entwickeln und zu testen. Ob Content-Management-Systeme wie WordPress oder kleine eigene Projekte – die klassische Kombination aus Linux, Apache, MariaDB und PHP ist nach wie vor weit verbreitet.

Für den weiteren Weg bieten sich unterschiedliche Möglichkeiten an:

  • Erste Webanwendungen installieren: Zum Beispiel ein Blog mit WordPress oder ein Wiki mit MediaWiki.
  • Sicherheit und Administration: Benutzerrechte, Firewall-Einstellungen und regelmäßige Updates sind entscheidend, wenn ein Server mehr als nur zu Lernzwecken eingesetzt wird.
  • Alternative Stacks ausprobieren: Moderne Webanwendungen setzen häufig auf Nginx statt Apache oder auf Datenbanken wie PostgreSQL. Auch Containerlösungen wie Docker oder Podman machen das Bereitstellen und Verwalten von Diensten einfacher.
  • Automatisierung und Verwaltung: Werkzeuge wie Cockpit (das wir bereits installiert haben) oder Konfigurationsmanagement mit Ansible helfen, mehrere Systeme im Griff zu behalten.

Im nächsten Beitrag erklären wir Installation und Einrichtung von phpMyAdmin. Das vereinfacht die Verwaltung der Datenbank erheblich, insbesondere auch unter dem Aspekt der Lesbarkeit.

Grafik: Website-Icon