30 Einführung in den Apache HTTP Server

30.1 Allgemeine Beschreibung

Der Apache HTTP Server, oft einfach als Apache bezeichnet, ist einer der weltweit meistgenutzten Webserver. Entwickelt und gepflegt von der Apache Software Foundation, ist Apache eine Open-Source-Software, die Webinhalte über das Hypertext Transfer Protocol (HTTP) bereitstellt. Apache ist bekannt für seine Zuverlässigkeit, Flexibilität und Leistungsfähigkeit und wird häufig für das Hosten von Websites und Webanwendungen verwendet.

30.1.1 Hauptmerkmale von Apache

30.2 Konfiguration des Apache Webservers

Die Konfiguration von Apache erfolgt hauptsächlich über die Konfigurationsdateien, insbesondere die httpd.conf und in vielen modernen Installationen die apache2.conf. Diese Dateien enthalten die Einstellungen und Anweisungen, die den Betrieb des Servers steuern.

30.2.1 Grundlegende Konfigurationsparameter

  1. ServerRoot: Gibt das Verzeichnis an, in dem die Konfigurationsdateien und die Kernmodule des Servers gespeichert sind.

    ServerRoot "/etc/httpd"
  2. Listen: Definiert, auf welchen IP-Adressen und Ports der Server Anfragen entgegennehmen soll.

    Listen 80
  3. LoadModule: Aktiviert Module, die zusätzliche Funktionen bereitstellen.

    LoadModule dir_module modules/mod_dir.so
    LoadModule mime_module modules/mod_mime.so
  4. DocumentRoot: Gibt das Verzeichnis an, aus dem der Server die Dateien für die Webseite bereitstellt.

    DocumentRoot "/var/www/html"
  5. Directory: Definiert Einstellungen für spezifische Verzeichnisse.

    <Directory "/var/www/html">
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
    </Directory>
  6. ErrorLog und CustomLog: Definiert die Pfade zu den Protokolldateien, in denen Fehler und Zugriffe protokolliert werden.

    ErrorLog "/var/log/httpd/error_log"
    CustomLog "/var/log/httpd/access_log" common

30.3 Virtual Hosts

Eine der mächtigsten Funktionen von Apache ist die Unterstützung von Virtual Hosts (virtuelle Hosts). Diese ermöglichen es, mehrere Websites auf einem einzigen Server zu hosten, wobei jede Website ihre eigene Domain oder Subdomain hat. Dies wird häufig verwendet, um verschiedene Websites oder Anwendungen auf demselben physischen Server zu betreiben.

30.3.1 Arten von Virtual Hosts

30.3.2 Konfiguration von Name-based Virtual Hosts

<VirtualHost *:80>
    ServerName www.example.com
    DocumentRoot "/var/www/example.com/public_html"
    ErrorLog "/var/www/example.com/logs/error.log"
    CustomLog "/var/www/example.com/logs/access.log" combined
</VirtualHost>

<VirtualHost *:80>
    ServerName www.anotherdomain.com
    DocumentRoot "/var/www/anotherdomain.com/public_html"
    ErrorLog "/var/www/anotherdomain.com/logs/error.log"
    CustomLog "/var/www/anotherdomain.com/logs/access.log" combined
</VirtualHost>

In diesem Beispiel werden zwei Websites (www.example.com und www.anotherdomain.com) auf demselben Server gehostet. Beide Virtual Hosts verwenden den Standard-HTTP-Port 80, aber sie haben unterschiedliche DocumentRoots und Protokolldateien.