30.7. Der Apache HTTP-Server

Beigetragen von Murray Stokely.

30.7.1. Überblick

Einige der weltgrößten Internetauftritte laufen unter FreeBSD. Die Mehrzahl der Webserver im Internet nutzt den Apache HTTP-Server. Die Installationspakete für den Apache sollten auf Ihrem Installationsmedium vorhanden sein. Wenn Sie den Apache noch nicht installiert haben, können Sie dies jederzeit über den Port www/apache22 nachholen.

Nachdem der Apache erfolgreich installiert wurde, muss er noch konfiguriert werden.

Anmerkung:

Dieser Abschnitt beschreibt die Version 2.2.X des Apache HTTP-Servers, da diese Version unter FreeBSD am häufigsten verwendet wird. Weiterführende Informationen zu Apache 2.X finden Sie auf http://httpd.apache.org/.

30.7.2. Konfiguration

Der Apache HTTP-Server wird unter FreeBSD primär über die Datei /usr/local/etc/apache22/httpd.conf konfiguriert. Bei dieser Datei handelt es sich um eine typische UNIX®-Konfigurationsdatei, in der Kommentarzeilen mit einem #-Zeichen beginnen. Eine komplette Beschreibung aller Optionen würde den Rahmen dieses Handbuchs sprengen, daher beschreiben wir hier nur die am häufigsten verwendeten Optionen.

ServerRoot "/usr/local"

Legt das Standardwurzelverzeichnis für die Apache-Installation fest. Binärdateien werden in die Verzeichnisse bin und sbin unterhalb des Serverwurzelverzeichnisses installiert, während sich Konfigurationsdateien im Verzeichnis etc/apache befinden.

ServerAdmin you@your.address

Die E-Mail-Adresse, an die Mitteilungen über Serverprobleme geschickt werden sollen. Diese Adresse erscheint auf vom Server erzeugten Seiten, beispielsweise auf Fehlerseiten.

ServerName www.example.com

Über die Option ServerName können Sie einen Rechnernamen festlegen, den Ihr Server an die Clients sendet, wenn sich dieser von tatsächlichen Rechnernamen unterscheidet (sie könnten etwa www statt des richtigen Rechnernamens verwenden).

DocumentRoot "/usr/local/www/apache22/data"

DocumentRoot: Das Verzeichnis, in dem Sie Ihre Dokumente ablegen. In der Voreinstellung befinden sich alle Seiten in diesem Verzeichnis, durch symbolische Links oder Aliase lassen sich aber auch andere Orte festlegen.

Es ist empfehlenswert, eine Sicherungskopie Ihrer Konfigurationsdatei anzulegen, bevor Sie Änderungen durchführen. Nachdem Sie die Konfiguration beendet haben, können Sie den Apache starten.

30.7.3. Den Apache betreiben

Der www/apache22 Port installiert ein rc(8) Skript, welches zum starten, stoppen und neustarten von Apache benutzt werden kann. Das Skript befindet sich in /usr/local/etc/rc.d/.

Um den Apache beim Systemstart zu starten, fügen Sie folgende Zeile in /etc/rc.conf ein:

apache22_enable="YES"

Wenn Sie während des Systemstarts weitere Parameter an den Apache übergeben wollen, können Sie diese durch eine zusätzliche Zeile in rc.conf angeben:

apache22_flags=""

Die Konfiguration von Apache kann vor dem ersten Start des httpd-Daemon, oder bei nachfolgenden Änderungen an der Konfigurationsdatei bei laufendem httpd, auf Fehler überprüft werden. Dies kann durch das rc(8)-Skript direkt , oder über das Dienstprogramm service(8) geschehen, indem Sie eines der folgenden Kommandos ausführen:

# service apache22
configtest

Anmerkung:

Es ist wichitg zu beachten, dass configtest kein rc(8)-Standard ist, und somit nicht zwingend mit anderen rc(8)-Startskripten funktioniert.

Wenn der Apache keine Fehler in der Konfiguration meldet, kann der Apache  httpd mithilfe von service(8) gestartet werden:

# /usr/local/etc/rc.d/apache22
start
# service apache22
start

Sie können den httpd-Dienst testen, indem Sie http://localhost in Ihren Browser eingeben, wobei Sie localhost durch den vollqualifizierten Domainnamen der Machine ersetzen, auf dem der httpd läuft. Die Standard Webseite, die angezeigt wird, ist /usr/local/www/apache22 /data/index.html.

30.7.4. Virtual Hosting

Der Apache unterstützt zwei Formen des Virtual Hostings. Die erste Möglichkeit bezeichnet man als namenbasiertes virtuelles Hosting. Dabei wird der HTTP/1.1-Header der Clients dazu verwendet, den Rechnernamen zu bestimmen. Dadurch wird es möglich, mehrere Domains unter der gleichen IP-Adresse zu betreiben.

Damit der Apache namenbasierte virtuelle Domains verwalten kann, fügen Sie die folgende Zeile in httpd.conf ein:

NameVirtualHost *

Wenn Ihr Webserver www.domain.tld heißt und Sie die virtuelle Domain www.someotherdomain.tld einrichten wollen, ergänzen Sie httpd.conf um folgende Einträge:

<VirtualHost *>
ServerName www.domain.tld
DocumentRoot /www/domain.tld
</VirtualHost>

<VirtualHost *>
ServerName www.someotherdomain.tld
DocumentRoot /www/someotherdomain.tld
</VirtualHost>

Ersetzen Sie dabei die Adressen sowie den Pfad zu den Dokumenten durch Ihre eigenen Einstellungen.

Ausführliche Informationen zum Einrichten von virtuellen Domains finden Sie in der offiziellen Apache-Dokumentation unter http://httpd.apache.org/docs/vhosts/.

30.7.5. Häufig verwendete Apache-Module

Es gibt viele verschiedene Apache-Module, die den Server um zusätzliche Funktionen erweitern. Die FreeBSD-Ports-Sammlung ermöglicht es Ihnen, den Apache gemeinsam mit einigen der beliebtesten Zusatzmodule zu installieren.

30.7.5.1. mod_ssl

Das Modul mod_ssl verwendet die OpenSSL-Bibliothek, um, unter Nutzung der Protokolle Secure Sockets Layer (SSL v2/v3) sowie Transport Layer Security (TLS v1) starke Verschlüsselung zu ermöglichen. Durch dieses Modul können Sie ein signiertes Zertifikat von einer Zertifizierungsstelle anfordern, damit Sie einen sicheren Webserver unter FreeBSD betreiben können.

Das Modul mod_ssl wird standardmäßig kompiliert, kann aber auch noch nachträglich durch die Angabe von -DWITH_SSL zur Kompilierzeit aktiviert werden.

30.7.5.2. Skriptsprachen

Für die wichtigsten Skriptsprachen existieren Module, die es erlauben, Apache-Module nahezu vollständig in einer Skriptsprache zu programmieren. Derartige Module dienen oft dazu, einen Sprach-Interpreter in den Webserver einzubetten. Dadurch wird ein zusätzlicher externer Interpreter überflüssig, was die Startzeit von dynamischen Internetseiten deutlich verringert.

30.7.6. Dynamische Webseiten

In den vergangenen Jahren haben immer mehr Unternehmen das Internet als Mittel für die Steigerung ihrer Einnahmen sowie für die Erhöhung ihrer Reichweite entdeckt. Dadurch stieg auch die Nachfrage nach interaktiven Internetinhalten. Neben einigen Unternehmen, darunter Microsoft®, die dafür proprietäre Produkte entwickelt haben, hat auch die Open Source Community auf diesen Umstand reagiert und unter anderem mit Django, Ruby on Rails, mod_perl2, und mod_php Möglichkeiten zur Generierung dynamischer Internetseiten geschaffen.

30.7.6.1. Django

Bei Django handelt es sich um ein unter der BSD-Lizenz verfügbares Framework zur schnellen Erstellung von mächtigen Internet-Applikationen. Es beinhaltet einen objekt-relationalen Mapper (wodurch Datentypen als Phyton-Objekte entwickelt werden können) sowie eine API für den dynamischen Datenbankzugriff auf diese Objekte, ohne dass Entwickler jemals SQL-Code schreiben müssen. Zusätzlich existiert ein umfangreiches Template-System, wodurch die Programmlogik von der HTML-Präsentation getrennt werden kann.

Django setzt das Modul mod_python, den Apache-Webserver sowie eine SQL-Datenbank voraus. Für FreeBSD gibt es einen Port, der alle Abhängigkeiten mit sinnvollen Optionen konfiguriert und installiert.

Beispiel 30.3. Django mit Apache2, mod_python3, und PostgreSQL installieren
# cd /usr/ports/www/py-django; make all install clean -DWITH_MOD_PYTHON3 -DWITH_POSTGRESQL

Nachdem Django (sowie die abhängigen Pakete) installiert ist, müssen Sie ein Projektverzeichnis erstellen. Danach konfigurieren Sie Apache so, dass der eingebettete Python-Interpreter spezifische URLs Ihrer Seiten aufruft.

Beispiel 30.4. Apache-Konfiguration für Django/mod_python

Sie müssen die Apache-Konfigurationsdatei httpd.conf anpassen, damit Apache Anfragen für bestimmte URLs an Ihre Internet-Applikation übergibt:

<Location "/">
    SetHandler python-program
    PythonPath "['/dir/to/your/django/packages/'] + sys.path"
    PythonHandler django.core.handlers.modpython
    SetEnv DJANGO_SETTINGS_MODULE mysite.settings
    PythonAutoReload On
    PythonDebug On
</Location>

30.7.6.2. Ruby on Rails

Bei Ruby on Rails handelt es sich um ein weiteres, als Open Source verfügbares Webframework. Es bietet einen kompletten Entwicklungsstack und erlaubt es Webentwicklern, umfangreiche und mächtige Applikationen in kurzer Zeit zu programmieren. Das Framework kann über die Ports-Sammlung installiert werden.

# cd /usr/ports/www/rubygem-rails; make all install clean

30.7.6.3. mod_perl2

Die Kombination Apache/Perl vereinigt die Vorteile der Programmiersprache Perl und des Apache HTTP-Servers. Durch das Modul mod_perl2 ist es möglich, vollständig in Perl geschriebene Apache-Module zu erzeugen. Da der Perl-Interpreter in den Server eingebettet wird, müssen Sie weder einen externen Interpreter noch Perl zusätzlich aufrufen.

mod_perl2 ist über den Port www/mod_perl2 erhältlich.

30.7.6.4. mod_php

Geschrieben von Tom Rhodes.

Bei PHP, dem Hypertext Preprocessor, handelt es sich um eine vielseitig verwendbare Skriptsprache, die besonders für die Internetprogrammierung geeignet ist. PHP kann in HTML eingebettet werden und ähnelt von der Syntax her Sprachen wie C, Java™ und Perl. Das Hauptanliegen von PHP ist es, Internetprogrammierern die rasche Erstellung von dynamisch erzeugten Internetseiten zu ermöglichen.

Damit Ihr System PHP5 unterstützt, müssen Sie als Erstes den Apache Webserver über den Port lang/php5 installieren.

Wenn Sie den Port lang/php5 das erste Mal installieren, werden die verfügbaren Optionen (OPTIONS) automatisch angezeigt. Erscheint das Konfigurationsmenü bei Ihnen nicht, so liegt dies daran, dass Sie den Port lang/php5 schon einmal auf Ihrem System installiert hatten. Es ist aber jederzeit möglich, dieses Menü aus dem Ports-Verzeichnis heraus über folgenden Befehl erneut aufzurufen:

# make config

In diesem Konfigurationsmenü müssen Sie die Option APACHE auswählen, damit mod_php5 als ein vom Apache-Webserver ladbares Modul gebaut wird.

Anmerkung:

Viele Seiten verwenden nach wie vor (beispielsweise wegen der benötigten Kompatibilität zu bereits vorhandenen Web-Applikationen) PHP4. Ist dies bei Ihnen der Fall, so müssen Sie statt mod_php5 mod_php4 über den Port lang/php4 installieren. Der Port lang/php4 unterstützt viele der Konfigurations- und Laufzeitoptionen von lang/php5.

Dieser Port installiert und konfiguriert die Module, die für die Unterstützung von dynamischen PHP-Anwendungen benötigt werden. Stellen Sie danach sicher, dass Ihre /usr/local/etc/apache22/httpd.conf die folgenden Abschnitte enthält:

LoadModule php5_module        libexec/apache/libphp5.so
AddModule mod_php5.c
    <IfModule mod_php5.c>
        DirectoryIndex index.php index.html
    </IfModule>
    <IfModule mod_php5.c>
        AddType application/x-httpd-php .php
        AddType application/x-httpd-php-source .phps
    </IfModule>

Nachdem dies erledigt ist, rufen Sie apachectl auf, um das PHP-Modul zu laden:

# apachectl graceful

Bei künftigen Upgrades von PHP wird make config nicht mehr benötigt, da die von Ihnen ursprünglich ausgewählten Optionen (OPTIONS) vom FreeBSD-Ports-Framework automatisch gespeichert werden.

Die PHP-Unterstützung von FreeBSD ist stark modular aufgebaut, daher verfügt eine Basisinstallation nur über wenige Funktionen. Eine Erweiterung um zusätzliche Funktionen ist allerdings sehr einfach über den Port lang/php5-extensions möglich. Der Port bietet Ihnen ein Auswahlmenü, über das Sie verschiedene PHP-Erweiterungen installieren können. Alternativ können Sie einzelne Erweiterungen aber weiterhin direkt über den jeweiligen Port installieren.

Um beispielsweise die Unterstützung des Datenbankservers MySQL in PHP5 zu aktivieren, installieren Sie den Port databases/php5-mysql.

Nachdem Sie eine Erweiterung installiert haben, müssen Sie den Apache-Server neu starten, damit die Erweiterung auch erkannt wird:

# apachectl graceful

Ab nun wird MySQL von PHP unterstützt.

Wenn Sie Fragen zu FreeBSD haben, schicken Sie eine E-Mail an <de-bsd-questions@de.FreeBSD.org>.

Wenn Sie Fragen zu dieser Dokumentation haben, schicken Sie eine E-Mail an <de-bsd-translators@de.FreeBSD.org>.