Apache 2.4 vhost konfigurieren

Im Februar 2012 wurde der 2.4er-Zweig vom Apache Webserver veröffentlich und befindet sich aktuell bei der Version 2.4.28 (Oktober 2017). Alternativ dazu hat sich NGINX sowie NodeJS als Webserver-Alternative entwickelt, auf die ich an dieser Stelle nur kurz eingehen möchte.

NodeJS kann über Proxy-Parameter in der Apache-Konfiguration parallel zum Apache betrieben werden (natürlich auch Standalone) und kommt häufig im AngularJS-Umfeld vor, während NGINX vor allem seine Stärken im Bereich von CDN’s hat, da NGINX für jeden Request ein Event startet und dadurch deutlich weniger Prozesse und Threads benötigt als der Apache. Somit kann der NGINX, theoretisch, ca. 10.000 Zugriffe auf statischen Content gleichzeitig aushalten, wohingegen ein Apache bei ca. 4.200 Request sein Limit in Tests erreicht hatte und zusammengebrochen war. Bei klassischem Webhosting (PHP, MySQL, Python, Perl, CGI’s, etc.) ist der Apache wiederum die bessere Wahl. Wie so oft kommt es halt darauf an, was man mit dem Webserver machen möchte.

Installiert man den Apache 2.4 unter Debian ganz normal, landen seine Konfigurationsdateien standardmäßig unter /etc/apache2. Dort findet man dann die folgenden, sehr wichtigen Verzeichnisse:

sites-available:
Hier legt man fest, welche Seiten überhaupt zur Verfügung stehen sollen. Diese müssen aber nicht zwangsläufig auch aktiviert sein!

sites-enabled:
An dieser Stelle verlinkt man, mittels „symbolischen Links„, auf die Seiten, die auch aktiv sein und beim Start vom Apache geladen werden sollen.

Hat man zusätzlich mittels „lets encrypt“ auch ein SSL-Zertifikat für seine Domain(s) erstellt, kann man die Einträge wie folgt anlegen und somit zuordnen:

/etc/apache2/sites-available# vim domain.tld-80.conf 

<VirtualHost *:80>
        <IfModule mpm_itk_module>
        AssignUserId USER GROUP
        MaxClientsVHost 100
        NiceValue 10
        </IfModule>

        ServerName domain.tld
        ServerAlias www.domain.tld
        Redirect permanent / https://www.domain.tld
        CustomLog /dev/null common
</VirtualHost>

Damit hat man schon mal festgelegt, was passieren soll, wenn eine Anfrage über „http://“ – also unverschlüsselt – rein kommt. Diese wird an die Schreibweise mit „https://“ weitergeleitet. Zusätzlich legt man fest, unter welchem USER und unter welcher GROUP der HTTP-Prozess laufen soll. Der Wert „MaxClientsVHost“ limitiert die Anzahl an gleichzeitigen Client-Zugriffen für diesen spezifischen vHost. Mit „NiceValue“ kann man dem Prozess eine Priorität zuweisen. Negative Werte haben dabei eine geringere Priorität als normalerweise.

Nun legen wir noch die vHost-Datei für den Zugriff per „https“, also SSL-verschlüsselt, an:

/etc/apache2/sites-available# vim domain.tld-443.conf 

<VirtualHost *:443>
        <IfModule mpm_itk_module>
        AssignUserId USER GROUP
        MaxClientsVHost 100
        NiceValue 10
        </IfModule>

        ServerName domain.tld
        ServerAlias www.domain.tld
        DocumentRoot /www/www.domain.tld

        SSLEngine on
        SSLCertificateFile /etc/letsencrypt/live/www.domain.tld/fullchain.pem
        SSLCertificateKeyFile /etc/letsencrypt/live/www.domain.tld/privkey.pem

        <Directory /www/www.domain.tld>
          Options Indexes FollowSymLinks
          AllowOverride All
          Require all granted
        </Directory>

        ErrorLog ${APACHE_LOG_DIR}/domain.tld.error.log
        CustomLog ${APACHE_LOG_DIR}/domain.tld.access.log combined
</VirtualHost>

Wenn man dann die symbolischen Links zu beiden Dateien in „sites-enabled“ gesetzt und den Apache neu gestartet hat, sollte man die Domain problemlos im Browser aufrufen können.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.