| FOTO | AUTO | EDV | AUDIO |

Dies ist eine alte Version des Dokuments!


Projekt: Fehlerhafter Webserver

Überblick

Ein realistisches Troubleshooting-Projekt für Azubis im 1. Lehrjahr. Aufgabe: Einen defekten Apache httpd auf RHEL reparieren – nicht nur „irgendwie zum Laufen bringen“, sondern eine nachhaltige, produktionsreife Lösung entwickeln.

Dieses Projekt verbindet Diagnose (Fehler finden), Betrieb (systemd, Firewall, Logging) und Wartbarkeit (nachhaltige Konfiguration, Dokumentation).

Lernziele

Nach diesem Projekt kannst du:

  • Diagnosemethodik: Systematisch von außen nach innen arbeiten (Netzwerk → Dienst → Konfiguration → Dateisystem)
  • Apache httpd verstehen: HTTP-Basics, VirtualHost-Konfiguration, Fehlerdiagnose
  • systemd beherrschen: Dienste starten/stoppen/enablen, Logs lesen, Status prüfen
  • Firewall-Regeln setzen: firewalld konfigurieren, persistent machen (nicht nur provisorisch)
  • Nachhaltige Lösungen: Unterschied zwischen Quick Fix und echten Lösung verstehen
  • Dokumentation: Fehler und Lösungsweg nachvollziehbar festhalten
  • Betriebsbewusstsein: Monitoring, Health-Checks und operative Verantwortung verstehen

Voraussetzungen

  • Grundkenntnisse in Linux-Befehlen (ls, cd, cat, grep, sudo)
  • Verständnis für Dateirechte und Eigentümer
  • Zugang zu einer RHEL 8/9 VM mit Root-Privilegien
  • Bereitschaft, Fehler selbstständig zu diagnostizieren (gestufte Hinweise vom Ausbilder, aber kein „hier ist die Lösung“)

Projektstruktur

Das Projekt besteht aus drei Schwierigkeitsstufen (easy, medium, hard) und etwa 1–3 Stunden Bearbeitungszeit je Level.

Level Fehler Dauer Komplexität
easy F7 (fehlende index.html) 30–45 min Anfänger – reine Datei-Problem
medium F1 (Syntax), F8 (Pfad), F6 (enabled) 60–90 min Fortgeschritten – Config-Fehler verdecken sich gegenseitig
hard F1, F2 (Port), F5 (Firewall), F6, F7, F8 2–3h Profi – Netzwerk + Config + Dienst

Vorbereitung durch den Ausbilder

Der Ausbilder bereitet die fehlerhafte VM vor:

sudo ./prepare_azubi_webserver.sh --level medium

Danach bekommst du eine VM, auf der httpd zwar installiert ist, aber nicht funktioniert. Der Rest ist deine Aufgabe.

Wichtige Regeln

⚠ **Keine Holzhammer-Lösungen**: `systemctl stop firewalld` oder `setenforce 0` sind **nicht** akzeptabel -- auch wenn dadurch die Fehler verschwinden. Du musst die **echte Ursache** beheben.
⚠ **Dokumentieren ist Pflicht**: Wie hast du den Fehler gefunden? Was war die Ursache? Wie hast du ihn gelöst -- und **warum ist die Lösung nachhaltig**?
⚠ **Test auch von außen**: Ein lokales `curl http://localhost` ist nicht ausreichend -- teste auch von einem anderen Rechner aus, um Firewall-Probleme zu entdecken.

Materialien

Vorbereitung (lies ZUERST):

Aufgabenstellung:

Referenz (während der Bearbeitung):

Schritt-für-Schritt-Vorgehen

1. **Vorbereitung lesen** → Azubi_Vorbereitung.pdf durch
2. **Aufgabe verstehen** → Azubi_Aufgabenstellung.pdf lesen
3. **VM vorbereiten** → Ausbilder führt `prepare_azubi_webserver.sh` aus
4. **Diagnostizieren** → Systematisch von außen nach innen arbeiten
5. **Dokumentieren** → Fehler, Ursache, Lösung, Nachhaltigkeit festhalten
6. **Testen** → Lokal und extern -- curl muss `HTTP/1.1 200 OK` zeigen
7. **Nachgespräch** → Mit Ausbilder besprechen: Was war schwierig? Warum ist die Lösung nachhaltig? Wie würde das in der Produktion aussehen?

Es können mehrere Fehler sein

Die VM enthält zwischen 1 und 6 Fehler, je nach Schwierigkeitslevel. Du wirst sie nicht alle auf einmal sehen – sobald du einen behoben hast, wird oft der nächste sichtbar.

Tipp: Arbeite systematisch vor:

1. Ist der Dienst überhaupt erreichbar? (Netzwerk/Dienst-Ebene)
2. Läuft der Dienst? (systemd-Status)
3. Kann httpd starten? (Konfiguration)
4. Existieren die Dateien, die der Dienst braucht? (Dateisystem)
5. Kann ich von außen darauf zugreifen? (Firewall)

Löse die Fehler in dieser Reihenfolge – nicht umgekehrt. Ein früher Fehler verdeckt oft die späteren.

Monitoring & Automatisierung (Ausblick)

Nach erfolgreicher Fertigstellung: Denke darüber nach, wie man solche Fehler automatisch erkennt:

  • Tägliche Health-Checks per Cron-Skript
  • Integration in Checkmk für zentrales Monitoring
  • Ansible-Playbook für sichere, wiederholbare Installation

Diese sind Folgeprojekte, bauen aber auf den Erkenntnissen aus diesem Projekt auf.

Wenn du stecken bleibst

Das ist normal – Troubleshooting ist schwierig, genau das ist der Sinn der Übung.

1. **Erst selbst nachdenken** -- 10 Minuten Nachdenken sind wertvoll
2. **Logs lesen** -- `journalctl -xeu httpd`, `tail -50 /var/log/httpd/error_log`
3. **Frag den Ausbilder** -- Es gibt 5 Ebenen von Hinweisen, nicht nur "hier ist die Lösung"

Keine Abkürzungen! Lösungen wie `systemctl stop firewalld` (ohne echte Diagnose) oder `setenforce 0` sind nicht akzeptabel – auch wenn der Fehler dann verschwindet. Du lernst dabei nichts.

Zeitrahmen & Bewertung

Level Zeit Fokus
easy 30–45 min Erste Erfahrung mit Fehlersuche
medium 60–90 min Mehrere Fehler, gegenseitige Abhängigkeiten
hard 2–3h Vollständiger Produktivzustand: Netzwerk, Dienst, Config

Bewertung:

  • 40% – Alle Fehler gefunden & behoben
  • 30% – Korrekte, dauerhafte Lösung (nicht Quick Fix)
  • 20% – Nachvollziehbare Dokumentation
  • 10% – Selbstständigkeit (wenig Hilfe nötig)

Nachbereitung

Nach erfolgreicher Fertigstellung besprecht ihr:

  • Welcher Fehler war am schwierigsten zu finden?
  • Wie würde Monitoring (Checkmk) das verhindern?
  • Wie könnte man das mit Ansible automatisieren?
  • Was ist eine nachhaltige vs. eine provisorische Lösung?

Diese Diskussion ist genauso wichtig wie die technische Fertigstellung.

Viel Erfolg! 🚀