Um PHP-basierte Webanwendungen performanter zu machen, kann man statt des klassischen Apache-Modules auf FastCGI zurückgreifen. Wenn man PHP mit dem IIS verwenden möchte, kommt man um FastCGI nicht herum.
Anbei eine Anleitung, wie man unter Windows den Apache-Webserver mit FastCGI und PHP installiert.
Ändert man die Pfade ab, lässt sich diese Anleitung vermutlich auch für Linux verwenden. Dies habe ich allerdings nicht getestet.
In diesem Beispiel kommt der Apache-Webserver von Apache Lounge unter Windows 7 Professional x64 zum Einsatz.
Apache installieren
- Das aktuelle Apache-Archiv (x86/32-bit, x64/64-bit) herunterladen und nach
C:\Apache2
entpacken.
- In einer Eingabeaufforderung mit erhöhten Rechten (rechtsklick “Als Administrator ausführen”) folgenden Befehl eingeben, um den Apache-Webserver als Dienst zu installieren:
C:\Apache2\bin\httpd -k install
- Um den Webserver zu starten entweder in einer Eingabeaufforderung mit erhöhten Rechten den Befehl
C:\Apache2\bin\httpd -k start
oder
net start apache2.2
eingeben.
Alternativ kann man auch über “Computerverwaltung – Dienste und Anwendungen – Dienste – Apache2.2” den Webserver starten.
FastCGI-Module installieren
- Das FastCGI-Module “mod_fcgid…” (x86/32-bit, x64/64-bit) herunterladen und entpacken.
- Die Datei “mod_fcgid.so” nach “C:\Apache2\modules” kopieren.
- Die Apache-Konfigurationsdatei “httpd.conf” im Ordner “C:\Apache2\conf” editieren und wie folgt abändern:
Zeile 219 von
"Options Indexes FollowSymLinks"
zu
"Options Indexes FollowSymLinks ExecCGI"
erweitern.
Zeile 242 von
DirectoryIndex index.html
zu
DirectoryIndex index.html index.php
erweitern.
- Am Ende der Konfigurations-Datei folgende Zeilen einfügen:
LoadModule fcgid_module modules/mod_fcgid.so FcgidInitialEnv PHPRC "c:/php" FcgidInitialEnv PATH "c:/php;C:/WINDOWS/system32;C:/WINDOWS;C:/WINDOWS/System32/Wbem;" FcgidInitialEnv SystemRoot "C:/Windows" FcgidInitialEnv SystemDrive "C:" FcgidInitialEnv TEMP "C:/WINDOWS/Temp" FcgidInitialEnv TMP "C:/WINDOWS/Temp" FcgidInitialEnv windir "C:/WINDOWS" FcgidIOTimeout 64 FcgidConnectTimeout 16 FcgidMaxRequestsPerProcess 500 <Files ~ "\.php$"> AddHandler fcgid-script .php FcgidWrapper "c:/php/php-cgi.exe" .php </Files>
PHP installieren
PHP gibt es nur als x86/32-bit, dafür aber in x weiteren Versionen. Eine kurze Aufschlüsselung habe ich hier geschrieben.
Für diesen Artikel habe ich die Version “VC9 x86 Non Thread Safe” als Zip-Archiv verwendet.
NTS (Non Thread Safe) macht nur bei MultiCore- bzw. MultiCPU-Systemen Sinn.
- PHP-Archiv herunterladen und nach “C:\PHP” entpacken.
- Im Ordner “C:\PHP” die Datei “php.ini-production” kopieren und in “php.ini” umbenennen.
- Die Datei “php.ini” editieren und wie folgt abändern:
Zeile 998 von
; date.timezone =
zu
date.timezone = "Europe/Berlin"
erweitern.
- Damit die geänderte Konfiguration übernommen wird, muss der Apache-Webserver neu gestartet werden. Entweder wieder über die Diensteverwaltung (z.B. innerhalb der Computerverwaltung) oder in einer Eingabeaufforderung mit erhöhten Rechten mit dem Befehl
C:\Apache2\bin\httpd -k restart
oder
net stop apache2.2
net start apache2.2
Damit ist die Basis-Einrichtung von Apache mit FastCGI und PHP abgeschlossen.
Verheiratet, Vater von zwei Kindern, eines an der Hand, eines im Herzen. Schon immer Technik-Freund, seit 2001 in der IT tätig und seit über 10 Jahren begeisterter Blogger. Mit meiner Firma IT-Service Weber kümmern wir uns um alle IT-Belange von gewerblichen Kunden und unterstützen zusätzlich sowohl Partner als auch Kollegen.
Ist es möglich, diese excellente Tutorial zu erweitern?
Ich würde gerne wissen, wie manmit dieser Konfig mehrere php Versionen parallel betreiben kann.
Wie lege ich fest, welche Version default ist und wie kann ich mittels AppHandler in der .htdocs steuern, dass eine andere Version für das aktuelle Script gilt?