Hintergrund / Motivation

Die Bereitstellung von Webanwendungen erfolgte bisher im Unternehmen auf klassische Weise durch manuelle Installation und Konfiguration einzelner Komponenten auf angemieteten Servern. Dabei wurden Webserver, PHP, Datenbanken, WordPress sowie Administrationswerkzeuge wie phpMyAdmin direkt auf den Systemen eingerichtet und gepflegt. Dieses Vorgehen brachte mehrere Nachteile mit sich:

  • hoher manueller Aufwand bei jeder neuen Umgebung
  • fehleranfällige Konfiguration durch unterschiedliche Vorgehensweisen
  • Versionsunterschiede zwischen Entwicklungs-, Test- und Produktivumgebungen
  • schwierige Wartbarkeit und geringe Nachvollziehbarkeit der Systemkonfiguration
  • Sicherheitsrisiken durch uneinheitliche Benutzer- und Zugriffsverwaltung
Gerade bei häufig wiederkehrenden Setups – wie bei WordPress-basierten Webanwendungen – führt dieses Vorgehen zu unnötigem Zeitverlust und inkonsistenten Systemzuständen. Ziel des Projekts ist daher die Standardisierung und Automatisierung der Bereitstellung solcher Webumgebungen.

 

Beschreibung

Ist-Zustand
Die Bereitstellung von WordPress-basierten Webanwendungen erfolgt aktuell überwiegend manuell. Für jede neue Umgebung wird ein Server angemietet und die benötigten Komponenten einzeln installiert und konfiguriert, darunter:

  • Webserver
  • Datenbank (z. B. MariaDB)
  • Administrationswerkzeuge wie phpMyAdmin
Die Installation und Konfiguration erfolgen nicht standardisiert, sondern abhängig von der ausführenden Person. Dadurch entstehen mehrere Probleme:
  • Hoher Zeitaufwand: Jede Umgebung muss erneut manuell eingerichtet werden.
  • Fehleranfälligkeit: Tippfehler, vergessene Schritte oder falsche Rechte führen zu instabilen oder unsicheren Systemen.
  • Unterschiedliche Systemstände: Entwicklungs-, Test- und Produktivumgebungen unterscheiden sich häufig.
  • Schwierige Wartung: Keine zentrale, dokumentierte Definition des Systemzustands.
Soll-Zustand
Ziel ist eine vollständig automatisierte, standardisierte und sichere Bereitstellung einer WordPress-Umgebung auf einem frisch installierten System. Die Lösung basiert auf folgenden Grundprinzipien:
  1. Automatisierte Bereitstellung mit Ansible
    Ein Ansible-Playbook übernimmt die komplette Installation und Konfiguration (Infrastructure as Code: versionierbar und reproduzierbar).
  2. Containerbasierte Architektur
    Dienste werden in getrennten Containern betrieben:
    • WordPress-Container
    • MariaDB-Container
    • phpMyAdmin-Container
  3. Integration in Jenkins
    Die Bereitstellung wird über einen Jenkins-Job angestoßen. Nach Eingabe der IP-Adresse des Zielservers wird das Ansible-Playbook ausgeführt, wodurch der manuelle Prozess standardisiert wird.
  4. Sicherheitskonzept
    • Einrichtung eines technischen Benutzers „ansible“
    • SSH-Zugriff ausschließlich per Key-Authentifizierung
    • Der Benutzer ansible darf notwendige Befehle per sudo ohne Passwort ausführen
    • Root ist initial per Passwort erreichbar, wird später auf Key-Login beschränkt
    • phpMyAdmin zusätzlich per .htaccess geschützt
    • WordPress-Backend Anbindung an LDAP für zentrale Benutzerverwaltung

 

Technologien
Automatisierung & Deployment
  • Ansible
    • Automatisierte Installation und Konfiguration
    • Container-Bereitstellung
  • Jenkins
    • Startet Ansible-Playbook per Job
    • Übergabe der Server-IP als Parameter
    • Standardisierter Deployment-Prozess
Containerisierung
  • Docker
    • Betrieb der Dienste in isolierten Containern
    • Reproduzierbare Umgebungen
  • Container:
    • WordPress
    • MariaDB
    • phpMyAdmin
Web- & Anwendungstechnologien
  • WordPress – Content-Management-System
  • PHP – Laufzeitumgebung für WordPress
Datenbank
  • MariaDB – Relationale Datenbank für WordPress
Authentifizierung & Sicherheit
  • LDAP – Zentrale Authentifizierung für WordPress-Adminbereich
  • .htaccess – Zugriffsschutz für phpMyAdmin
Projektinfo
Schuljahr:
25/26
Ausbildung:
Systemintegration
Schüler:
Alexander Mayer
Betreuer:
Herr Heitzer Stefan
Bilder
Wir benutzen Cookies

Wir nutzen Cookies auf unserer Website. Einige von ihnen sind essenziell für den Betrieb der Seite, während andere uns helfen, diese Website und die Nutzererfahrung zu verbessern (Tracking Cookies). Sie können selbst entscheiden, ob Sie die Cookies zulassen möchten. Bitte beachten Sie, dass bei einer Ablehnung womöglich nicht mehr alle Funktionalitäten der Seite zur Verfügung stehen.