Webserver Apache
Willemers Informatik-Ecke
Wer einen Webserver auf der Basis von Windows aufsetzt, demonstriert damit, dass er Angst hat, sich mit Linux zu befassen. Ein Linux-Server ist lizenzfrei, wartungsärmer und schon allein deshalb performanter, weil nicht ständig ein Virenscanner mitläuft. Darüber hinaus sind die Software-Quellen sicher und ein Update deutlich unproblematischer.

Es gibt also keinen sachlichen Grund, der für einen Windows-Server spricht. Aus diesem Grund befasst sich diese Seite gar nicht erst mit Apache in einer Windows-Umgebung.

Installation

Jedes Linux hat Apache in seinem Repository.

Debian, Ubuntu und Linux Mint verwenden das Tool apt-get für die Installation seiner Pakete. Das Apache-Paket heißt apache2. Die Installation erfolgt mit dem Befehl:

apt-get install apache2
Im weiteren Verlauf der Seite wird von einer Debian-Installation ausgegangen, die auch der unter einem Ubuntu-Server entspricht. Einige Linux-Versionen unterscheiden sich in Details.

Red Hat und CentOS

Red Hat und CentOS verwenden das Tool yum und das Apache-Paket heißt dort httpd, weil Apache ein HTTP-Server (oder Daemon) ist.
yum install httpd
Entsprechend heißt das Konfigurationsverzeichnis bei Red Hat und CentOS auch /etc/httpd.

SUSE und OpenSUSE

Installation unter SUSE

Umgebung und Pfade

Test und Neustart

Ob der Apache auf dem lokalen Computer läuft, lässt sich einfach durch einen dort gestarteten Browser, beispielsweise Firefox prüfen. Man gibt in die Adressleiste einfach localhost ein und es meldet sich die Standardseite, die von Apache bei der Installation hinzugefügt wird.

Bei Änderungen an der Konfiguration muss der Apache neu gestartet werden. Dazu verwendet man das Kommando:

systemctl restart apache2
Im Allgemeinen ist es auch noch möglich, die System-V-Startskripte zu verwenden.
/etc/init.d/apache2 restart

Konfigurationsdateien für Websites

Die Konfiguration eines Apachen erfolgt im Verzeichnis /etc/apache2.

Für jede Präsenz wird typischerweise eine eigene Konfigurationsdatei erstellt. und im Verzeichnis /etc/apache2/sites-available abgelegt.

Damit die Konfigurationsdatei aber wirksam wird, muss sie im Verzeichnis /etc/apache2/sites-enabled erscheinen. Anstatt die Dateien zu verschieben, wird üblicherweise ein symbolischer Link auf die jeweilige Datei des Verzeichnisses sites-available angelegt. Änderungen in einer der beiden Verzeichnisse gelten so für beide und die Konfiguration der Site läuft nicht auseinander. Ein solcher symbolischer Link wird wie folgt angelegt:

cd /etc/apache2/sites-enabled
ln -s ../sites-available/meineseite
Die Struktur der Verzeichnisse sieht folgendermaßen aus:
/etc/apache2
             sites-enabled
             sites-available
Dateien in den enabled-Verzeichnissen sind normalerweise symbolische Links auf Dateien im parallelen available-Verzeichnis.

Geltungsbereiche

Für jede Website wird sinnvollerweise eine eigene Konfigurationsdatei angelegt. Sie beginnt mit dem Schlüsselwort VirtualHost. Ihm folgen der Hostname, ein Doppelpunkt und die Portnummer.
<VirtualHost *:80>
    ... Direktiven ...
</VirtualHost>
Die Direktive DocumentRoot legt fest, wo sich die HTML-Dateien befinden. Ihr folgt also der Pfad, typischerweise liegt er unterhalb von /var/www.

Jeder Pfad kann einzeln konfiguriert werden. Dazu wird ein Bereich mit dem Schlüsselwort Directory gekennzeichnet. Es folgt der Pfad des Aufrufs. Erfolgt der Aufruf per www.firma.de/produkte, kann der Bereich der Produkte gesondert behandelt werden, indem Folgendes definiert wird:

<Directory /produkte>
    ... Direktiven ...
</Directory>

Direktiven

Module

Apache kann durch mehrere Module erweitert werden. Am bekanntesten dürfte das Interpretermodul für die Sprache PHP sein. Für dieses, wie für alle anderen Module, gibt es je eine Datei php.conf und eine Datei php.load. Die erstere konfiguriert das Modul und ist modulspezifisch, die zweite Datei gibt an, wo sich das Modul befindet und wie es geladen wird.

Auch die Module werden in zwei Verzeichnissen enabled und available abgelegt und werden analog zu sites verwaltet.

/etc/apache2

             mods-enabled
             mods-available

Private Konfiguration mit .htaccess

Wurde in der Konfiguration die Direktive AllowOverride freigeschaltet, kann im Datenverzeichnis eine Datei .htaccess abgelegt werden, die Konfigurationen auf Verzeichnisebene erlaubt. Das ist insbesondere interessant, wenn man eine Webpräsenz bei einem Provider hat, dessen Apache sich der eigenen Konfiguration entzieht.

Eine .htpasswd-Datei wird mit dem Befehl htpasswd gepflegt. Der folgende Befehl trägt einen Benutzer paul in der Datei /var/www/sicher/.htpasswd ein. Er fordert anschließend die doppelte Eingabe des Passworts auf der Konsole ein.
htpasswd -c /var/www/sicher/.htpasswd paul

HTTPS-Der verschlüsselte Zugriff

Bei der HTTP-Kommunikation über den Port 80 werden alle Daten im Klartext übertragen. Das ist insbesondere bei der Eingabe von Passwörtern nicht gut. Für einen verschlüsselten Transport wird HTTPS verwendet, das über den Port 443 kommuniziert.

Damit der Apache über den Port 443 kommuniziert, muss dieser bei der VirtuaHost-Definition angegeben werden. Hinzu kommen Direktiven, die angeben, wo die Zertifikate zu finden sind.

<VirtualHost *:443>
    SSLCertificateFile    /etc/apache2/ssl/mein.cert.crt
    SSLCertificateKeyFile /etc/apache2/ssl/mein.cert.key
Nicht nur die Dateien werden Sie noch nicht haben, auch das Verzeichnis /etc/apache2/ssl gibt es noch nicht. Das lässt sich mit einem einfachen mkdir beheben. Die Erzeugung der Zertifikatsdateien ist etwas komplizierter.

Erzeugen Sie das neue Verzeichnis /etc/apache2/ssl und wechseln Sie hinein. Geben Sie die folgenden Befehle ein. Sie werden einige Eingaben von Ihnen fordern. Dazu gehört insbesondere eine Passphrase, die Sie sich merken sollten. Hinzu kommen Informationen über die Domain und die Organisation, die die Website betreibt.

openssl req -new > mein.cert.csr
openssl rsa -in privkey.pem -out mein.cert.key
openssl x509 -req -days 365 -in mein.cert.csr -signkey mein.cert.key -out mein.cert.crt
Anschließend finden Sie die folgenden Dateien in dem Verzeichnis vor: Da das Zertifikat selbst signiert wurde, wird es vom Browser mit der Meldung quittiert, dass er die Zertifizierungsstelle nicht kennt. Sie müssen eine Ausnahme definieren. Oder Sie wenden sich an eine offizielle Zertifizierungsstelle und lassen sich von dieser das Zertifikat signieren.