Preiswert und schnell: Apache 2 als Webserver

Tücken beim Update

Die größte Hürde für Umsteiger ist nun, dass SuSE mit dem Apache 2.x ein neues System zum Verwalten der Konfiguration eingeführt hat. An die Stelle der monolithischen Datei httpd.conf, die alle Konfigurationsparameter enthält, tritt dabei eine modulare Version derselben Datei. Diese ist nun eher der zentrale Verwalter mehrerer weiterer Konfigurationsdateien, die ja nach Bedarf per Include-Anweisung eingebunden werden.

Dazu kommt, dass Apache 2.x einige Kommandos nicht mehr kennt, die unter Version 1.3.x durchaus üblich waren. Außerdem finden sich einige Module unter neuem Namen, und da sich die Modulschnittstelle geändert hat, laufen alte Module sowieso nicht unter der neuen Apache-Generation. Um das Anpassen der existierenden Konfigurationsdatei kommt man also nicht herum. Eine große Hilfe ist dabei der Stream-Editor sed. Er erleichtert nicht nur das Anpassen der Pfade, sondern kann im selben Durchgang die nicht mehr benötigten Befehle entfernen, wodurch Sie sich viel Tipparbeit sparen. Da vor allem die Eingabe der Befehle für sed fehleranfällig ist, empfiehlt es sich, die einzelnen Schritte in einem Shell-Script zusammenzufassen:

#!/bin/bash

# apache_convert.sh
# Shell-Script zur Konvertierung der httpd.conf
# von Apache 1.3.x in ein unter Apache 2.x
#!/bin/bash

cd /etc/apache2
cp ../httpd/httpd.conf .

sed -e '/^[ \\t]*LoadModule.*/d' \\
-e '/^[ \\t]*AddModule.*/d' \\
-e '/^[ \\t]*PidFile.*/d' \\
-e 's%/httpd/%/apache2/%g' \\
-e 's%#NameVirtualHost \\*:80%#NameVirtualHost \\*%g' \\
-e 's%/suse_loadmodule.conf%/sysconfig\\.d/loadmodule.conf%g' \\
-e 's%/suse_include.conf%/sysconfig\\.d/include.conf\\nInclude /etc/apache2/vhosts\\.d/*.conf%g' \\
-e '/^[ /t]*ServerType.*/d' \\
-e '/^[ \\t]*ClearModuleList.*/d' \\
-e '/^.*suse_addmodule.*/d' \\
-e 's/^[ \\t]*Port\\(.*\\)/Listen\\1/g' \\
-e '/^[ \\t]*SSLLog.*/d' \\
-e 's/^[ \\t]*ServerName.*/Include \\/etc\\/apache2\\/sysconfig\\.d\\/global.conf/g' \\
httpd.conf > httpd.conf.tmp

sed -e ':t /<IfDefine STATUS/,/if Define>/{/<\/IfDefine>/!{$!{N; bt}}; s/<IfDefine STATUS.*IfDefine>/Include \\/etc\\/apache2\\/mod_status.conf\\nInclude \\/etc\\/apache2\\/mod_info.conf/g }' \\
httpd.conf.tmp > httpd.conf

Um ein wenig manuelle Arbeit kommen Umsteiger trotzdem nicht herum. Damit ein paar Einstellungen der alten Konfigurationsdatei funktionieren, sind Änderungen an der SuSE-spezifischen Datei /etc/sysconfig/apache2 notwendig. Zum einen sind hier in der Parameterliste der Variablen APACHE_MODULES die Einträge status und info hinzuzufügen, zum anderen sollte der Wert von APACHE_SERVER_FLAGS auf STATUS geändert werden. Empfehlenswert, aber nicht zwingend erforderlich ist das Einsetzen der IP-Adresse des Rechners als Parameter von APACHE_SERVER_NAME.

Zur Überprüfung der Konfigurationsdatei auf korrekte Syntax müssen Sie nicht unbedingt den Webserver starten und auf eine Fehlermeldung warten. Viel einfacher geht das mit dem Hilfsprogramm apache2ctl. Mit dem Parameter -t aufgerufen liest es die Konfigurationsdatei ein und bricht ab, sobald es einen Fehler findet.

Das Script können Sie hier downloaden.