Erste Tests mit Apache 2.0, mod-perl 2.0 und PHP 5.2

Bis jetzt habe ich noch nie den Zwang verspürt, vom stabil laufenden Apache 1.3 weg zur Version 2.0 zu wechseln. Wenn man abber subversion einsetzen will und den Apache dazu als Zugang nutzen will, benötigt man Apache 2.0. Es stellt sich nun die Frage, inwieweit ein Apache 1.3.X mit mod_perl 1.X und PHP 4.4 neben einem Apache 2.0.X mit mod_perl 2.X und PHP 5.X lauffähig ist.

Bis jetzt habe ich den Apache immer statisch mit seinen Erweiterungen installiert. Ich habe also nicht das DSO genutzt. Dies hat vermutlich nur noch historische Gründe. Früher lief der Apache bedeutend stabiler auf diese Weise. Außerdem blieb er so schön schlank, da ich nur die Module einkompiliert, die ich wirklich benötigte. Zum anderen konnte ich verschiedene Apache-Versionen z.B. unter /usr/local installieren und über einen Symlink /usr/local/apache immer den aktuellen ansprechen.

Auf jeden Fall scheint dieses statische bauen des Apache in der Version 2.0 und PHP 5 nicht mehr vorgesehen zu sein, wenn man der Installationsanleitung glauben schenken darf. Nun gut, so habe ich also zunächts den Apache gebaut:

$ ./configure --prefix=/usr/local/apache-2.0.59-dso  --enable-rewrite=shared --enable-so
$ make
$ make install

installiert den Apache (hier 2.0.59).

Nun zu mod_perl (hier 2.0.3):

Laut der Voraussetzungsseite benötigt man mindestens Perl Version 5.8.0 oder höher:

$ perl -v

Außerdem muss

$ perl -V:useithreads -V:usemultiplicity 
useithreads='define';
usemultiplicity='define';

liefern sowie

$ perl -V:use5005threads
use5005threads='undef';

Ist das geklärt, baut man und installiert man wie folgt mod_perl:

$ perl Makefile.PL MP_AP_PREFIX=/usr/local/apache-2.0.59-dso
$ make
$ make test
$ make install

Dann kommt PHP 5 (hier 5.2.0) an die Reihe. Hierfür musste ich noch folgende Pakete auf dem Debian sarge System nachinstallieren:

$ apt-get install libxml2 libxml2-dev
$ apt-get install g++
$ apt-get install libpng-dev libgd-dev
$ apt-get install libmysqlclient12-dev

Dann geht es so weiter:

$ ./configure --with-apxs2=/usr/local/apache-2.0.59-dso/bin/apxs  --with-zlib --with-gd 
--with-mysql --prefix=/usr/local/php-5.2.0
$ make
$ make test
$ make install

Damit kann dann der neue Apache 2.0.59 neben der alten Version 1.3.37 genutzt werden. Interessant wird es, wenn es um diverse Perl-Module geht, die für die Mod_perl Version 1.x entwickelt wurden und in die diversen Request-Phasen des Apaches eingreifen.

Durch den Aufruf von use Apache2::compat(); im startup-Skript scheinen diese weitestgehend weiterzulaufen. Zur Migration finden man auf den Seiten von mod_perl weitere Hinweise.

Einen ersten Schrecken erlebte ich bei Modulen, die Apache::Cookie nutzen. Diese laufen nicht weiter. Dafür gibt es aber nun das Modul Apache2::Cookie (welch Überraschung ;-). Nun gut, also das schnell installiert — Pustekuchen. Dafür musste ich erst libexpat1-dev nachinstalliern:

$ apt-get install libexpat1-dev

Dann benötigte man noch das Paket ExtUtils::XSBuilder (unter http://www.cpan.org/modules/by-module/ExtUtils/ExtUtils-XSBuilder-0.28.tar.gz zu finden), was seinerseits noch Parse::RecDescent (http://www.cpan.org/modules/by-module/Parse/Parse-RecDescent-1.94.tar.gz zu finden) benötigt.

Nun erst kann man per

$ perl Makefile.PL --with-apache2-apxs=/usr/local/apache2/bin/apxs
$ make
$ make test
$ make install

das Perl-Modul Apache::Cookie installieren. Und hier sieht man auch, was mich nachdenklich stimmt: Zur Installation eines Perl-Modules muss ich das Apache-Installationsverzeichnis angeben. Es stellt sich sofort die Frage, was passiert, wenn ich einen neueren Apache installiere. Muss ich dann das (oder ggf. die) entsprechenden Perl-Module neu installieren?

Dass aber Apache 1.3.x/Mod_perl 1.x und Apache 2.0.x/Mod_perl 2.x so schön neben einander zu betreiben sind, freut mich doch.

Schreibe einen Kommentar

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