# 3.3.1 Strukturierung der Konfigurationsdatei

Wir konnten bisher sehen, dass der Apache Webserver viele Module und Konfigurationseinstellungen besitzt. Schon alleine die Hauptkonfigurationsdatei `apache2.conf` bietet viele Möglichkeiten, die hier nicht alle behandelt werden sollen.

Damit die `apache2.conf` in der Struktur lesbarer wird, wurden die Kommentarzeilen entfernt und es wurde eine kleine Umsortierung vorgenommen. Auch wurde anstelle des letzten Eintrags `IncludeOptional sites-enabled/*.conf` die darin enthaltenen Daten direkt in die `apache2.conf` kopiert und die Kommentare entfernt.

Wie im letzten Kapitel schon beschrieben, ist im Verzeichnis `sites-enabled/` nur ein Link auf eine Datei `000-default.conf` im Verzeichnis `sites-available/`. Somit wurden genau genommen die Daten aus der Datei `sites-available/000-default.conf` verwendet.

Umstrukturierte `apache2.conf` und `000-default.conf`

    #####################################################
    # Globale Konfigurationseinstellungen
    #####################################################
    DefaultRuntimeDir ${APACHE_RUN_DIR}
    PidFile ${APACHE_PID_FILE}

    Timeout 300
    KeepAlive On
    MaxKeepAliveRequests 100
    KeepAliveTimeout 5

    User ${APACHE_RUN_USER}
    Group ${APACHE_RUN_GROUP}

    HostnameLookups Off
    Include ports.conf

    #####################################################
    # Externe Module und Konfigurationen laden
    #####################################################
    IncludeOptional mods-enabled/*.load
    IncludeOptional mods-enabled/*.conf
    IncludeOptional conf-enabled/*.conf

    AccessFileName .htaccess
    <FilesMatch "^\.ht">
        Require all denied
    </FilesMatch>

    #####################################################
    # Globale Einstellungen für Logdateien
    #####################################################
    ErrorLog ${APACHE_LOG_DIR}/error.log
    LogLevel warn
    LogFormat "%h %l %u %t \"%r\" %>s %O" common

    #####################################################
    # Globale Einstellungen für Verzeichnisse und Dateien
    #####################################################
    <Directory />
        Options FollowSymLinks
        AllowOverride None
        Require all denied
    </Directory>

    <Directory /usr/share>
        AllowOverride None
        Require all granted
    </Directory>

    <Directory /var/www/>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
    </Directory>

    #####################################################
    # Spezielle Einstellungen für Websites laden
    #####################################################
    <VirtualHost *:80>
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log common
    </VirtualHost>

Man könnte nun die Konfiguration noch weiter reduzieren und weitere unnötige Module vermeiden. Der Apache Webserver braucht aber zumindest ein MPM-Modul. Somit ist das Modul `mpm_prefork` auf jeden Fall notwendig.

Bevor Sie Ihre Konfigurationsdateien verändern, sollten Sie auf jeden Fall eine Kopie anlegen!!!

Hinweis

Auf der Website von "a-coding-project.de" werden die Direktiven der Grundkonfiguration gut beschrieben.