Apache & PHP – eigene Entwicklungsumgebung kompilieren

Schon zu Zeiten meiner Ausbildung hat mich der wohl beste Webserver samt PHP-Umgebung in den Bann gezogen – war damals noch alles über den Debian-Paketmanager von CDs installiert worden, kam irgendwann einmal der Wunsch auf, Apache & PHP selbst zu kompilieren und sich somit eine massgeschneiderte Entwicklungsumgebung zu kreieren. Wie man das macht, möchte ich im folgenden nun Beschreiben, Testsystem war ein aktuelles openSUSE 11.2, das bereits Unterbau für mein MySQL-Tutorial war.

Die aktuelle Versionen von Apache (2.2.14) und PHP (5.3.1) können müssen zuerst einmal als Source-Paket von den Herstellerseiten (http://httpd.apache.org) bzw. http://www.php.net) heruntergeladen werden, idealerweise ins Verzeichnis “/usr/local” (wobei sich Eure Pfadangaben natürlich entsprechend unterscheiden können, dieses Verzeichnis ist für mich nur schon seit Urzeiten mein Installationsverzeichnis – daher dient es hier als Muster!).

Anschliessend entpacken wir erst einmal den Apache-Quellcode durch Eingabe von

“tar zxvf httpd-2.2.14.tar.gz “.

Anschliessend wechseln wir in das “httpd-2.2.14”-Verzeichnis und generieren wieder das Makefile, sprich: Durch den “./configure”-Befehl passen wir das zu erstellende Apache-Paket an unsere Systemumgebung- und Bedürfnisse an und geben direkt das ein oder andere nützliche Modul mit an – der Beispiel-Befehl würde also in etwa so lauten:

“./configure
–prefix=/usr/local/apache2
–enable-cgi
–enable-ssl
–enable-so
–enable-rewrite
–enable-mime-magic
–enable-suexec
–enable-static-rotatelogs
–enable-speling”

Der Befehl kann in einer Reihe eingegeben werden, dann fallen natürlich die Backslashes weg, wenn Ihr die Zeilen oben 1:1 in Eure Shell kopiert, sollte das Erstellen des Makefiles auch kein Problem darstellen. Wenn eine Fehlermeldung erscheint (bei mir waren es beispielsweise für die Entwicklung benötigte openSSL-Bibliotheken, die fehlten), sorgt bitte für eine Nachinstallation der gewünschten Pakete und startet den Konfigurationsvorgang erneut. Ist der ohne Fehler durchgelaufen, kann man durch Eingabe von

“make”

wie gewohnt den eigentlichen Kompilierungsvorgang starten. Läuft auch dieser ohne Fehler durch, ist der finale Befehl zum Kopieren und Installieren der Binaries der Befehl

“make install”.

Damit ist der eigentliche Apache-Kompilierungsvorgang abgeschlossen und man kann durch Eingabe von

“/usr/local/apache2/bin/apachectl start”

den Apache-Dämon starten. Ob der funktioniert, lässt sich durch das Ansurfen der IP Eures – nun – Webservers über den Browser Eurer Wahl oder direkt am Server über Eingabe von

“telnet localhost 80”

feststellen – auf jeden Fall sollte eine entsprechende Apache-Startseite (“It works!”) erscheinen und damit liegt die erste Hälfte dieses Tutorials bereits erfolgreich hinter uns – parallel kann man durch Eingabe von

“cp /usr/local/apache2/bin/apachectl /etc/init.d/apache”

das Apache-Startskript schon mal in den Startordner des Systems kopieren, damit beim nächsten Neustart der Apache-Server direkt mitgestartet wird. Diesen Zustand erreicht man durch Eingabe von

“/sbin/chkconfig –add apache”.

Nun geht es weiter mit der PHP-Umgebung, die ebenfalls noch gepackt im Verzeichnis “/usr/local” liegt und durch Eingabe von

“tar zxvf php-5.3.1.tar.gz”

entpackt wird.

Nun gilt es, auch hier das Makefile zu erzeugen, welches durch Eingabe von

“./configure –with-apxs2=/usr/local/apache2/bin/apxs –with-mysql=/usr/local/mysql –prefix=/usr/local/php –with-config-file-path=/usr/local/php –disable-cgi –with-mcrypt”

geschieht. Die einzelnen Optionen für die grundsätzliche Installation sind natürlich optional und stellen folgendes dar:

  • “with-apxs2” :
  • “with-mysql” : Angabe des Verzeichnisses, in dem eine ggf. vorhandene MySQL-Installation liegt, damit die Verbindung mit MySQL direkt miteinkompiliert werden kann. Ist noch kein MySQL installiert, diesen Schalter entweder weglassen oder aber MySQL nachinstallieren
  • “prefix”: Installationspfad der eigentlichen PHP-Umgebung
  • “with-config-file-path”: Dateipfad der PHP-Konfigurationsdatei php.ini
  • “disable-cgi”: Stellt sicher, das PHP nicht in einer CGI-Umgebung bzw. in einem CGI-Modus läuft
  • “with-mcrypt”: Integration der MCrypt-Bibliothek aus Gründen der Datenverschlüsselung

Auch hier sollte das Makefile dann “vernünftig” erstellt werden, etwaige fehlende Programmbibliotheken (bei mir war es beispielsweise die libxml2-Bibliothek) müssen dann vorab wieder nachinstalliert werden. Läuft das Skript problemlos durch, kann der eigentliche Kompilierungsvorgang auch hier angeworfen werden – wie immer über den Befehl

“make”.

Nach einer Weile (und hoffentlich keinen Fehlern) können die Binärdateien nun via

“make install”

an ihre endgültige Position kopiert werden.

Während dieses Prozesses wird auch das eigentliche PHP5-Modul kopiert und in der Apache-Konfigurationsdatei httpd.conf aktiviert, der Eintrag sollte dort wie folgt aussehen:

“LoadModule php5_module        modules/libphp5.so”

Sollte dies wider Erwarten nicht in der httpd.conf stehen, so muss dieser Eintrag manuell nachgepflegt werden. Diverse PHP-Bibliotheken sollten dann noch (wie es am Ende der Ausgabe des Makefiles steht) durch Eingabe von

“./libtool –finish /usr/local/php-5.3.1/libs”

im Source-Verzeichnis (hier: /usr/local/php-5.3.1) dem System bekannt gemacht werden, bevor wir uns an die letzte Änderung der Apache-Konfigurationsdatei httpd.conf wagen – denn nachdem das PHP5-Modul bereits geladen ist, müssen wir unserem Webserver noch mitteilen, welche Dateiendungen überhaupt mit PHP geparst werden sollen. In meinem Beispiel sind das alle Dateien mit der Endung .php und .html:

“AddType application/x-httpd-php .php .html
AddType application/x-httpd-php-source .phps”

Anschliessend teilen wir der httpd.conf noch mit, das Dateien, die auch “index.php” heissen, als Startseite des Webservers anerkannt werden – der Eintrag für die index.html steht bereits dort drin und muss nur noch wie folgt abgeändert werden:

“<IfModule dir_module>
DirectoryIndex index.html index.php
</IfModule>”

Nun fehlt zum “finalen Glück” noch eine “php.ini”-Datei, die wir durch Eingabe von

“cp /usr/local/php-5.3.1/php.ini-production /usr/local/php/php.ini”

in das beim Kompilierungsvorgang angegebene Zielverzeichnis kopieren.

Nach einem Neustart des Apache-Webservers ist dann die grundlegende Implementation von PHP 5 in Apache abgeschlossen und wir können uns dem finalen Test widmen: Im Dokumentenroot (hier: /usr/local/apache2/htdocs) muss nun eine Datei mit dem Beispielnamen “phpinfo.php” angelegt werden, die nur den folgenden Inhalt enthält:

“<?php phpinfo(); ?>”

Wird nun Euer Webserver via http://linux-vm.pifferi.local/phpinfo.php (dies ist beispielsweise die URL meines Testsystems), müsste eine ausführliche PHP-Infoseite auf dem Bildschirm erscheinen, die besagt, das alles richtig gemacht wurde!

Damit ist auch dieses Tutorial beendet und zusammen mit dem vorherigen MySQL-Tutorial solltet Ihr nun eine ideale Entwicklungs- oder (je nach Anpassung) Produktivumgebung für Euer System besitzen. Wie immer gilt auch hier: Die einzelnen Schalter & Optionen des “configure”-Befehls sind sowohl bei Apache als auch bei PHP nahezu unendlich und für jeden Bedarf zugeschnitten – man muss nur lesen. Diese Anleitung soll nur der erste Schritt sein, um mit diesen wundervollen Softwarekomponenten arbeiten zu können und ich würde mich wie immer über Feedback jeglicher Art freuen!

Kommentar hinterlassen

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

*