PHP mit FastCGI unter Apache
Es gibt ein paar gute Gründe, warum man man PHP über FastCGI benutzen möchte. Im folgenden Beispiel habe ich Apache 2.2.4 zusammen mit PHP 4.4.4 unter Solaris installiert. Die Anleitung kann man auch problemlos für PHP 5.2.x benutzen.
Als erstes muss man von Blastwave die Pakete apache2, ap2_worker, ap2_modfastcgi, php4_cgi und die je nach Bedarf benötigten PHP Module installieren. Danach kreieren wir im Verzeichnis /opt/csw/apache2/etc/extra ein config File für mod_fastcgi mit dem Namen httpd-fastcgi.conf und folgendem Inhalt:
FastCgiServer /var/www/foo/fcgi-bin/php4-fcgi-starter
Dieses File muss man dann in der httpd.conf includen:
# FastCGI settings Include etc/extra/httpd-fastcgi.conf
Über das File /var/www/foo/fcgi-bin/php4-fcgi-starter wir der FastCGI Server gestartet und sollte folgenden Inhalt haben:
#!/bin/sh PHPRC="/opt/csw/lib" export PHPRC PHP_FCGI_CHILDREN=8 export PHP_FCGI_CHILDREN PHP_FCGI_MAX_REQUESTS=5000 export PHP_FCGI_MAX_REQUESTS TZ=CET export CET exec /opt/csw/bin/php-cgi
Nachdem man auch noch in der /opt/csw/apache2/etc/extra/httpd-vhosts.conf folgende Einträge gemacht hat, ist man eigentlich schon fertig:
<VirtualHost foo:80> DocumentRoot /var/www/foo/htdocs/ ServerName foo.bar.com ServerAlias foo ErrorLog /var/log/apache/foo/error_log
CustomLog /var/log/apache/foo/access_log combined
ScriptAlias /fcgi-bin/ "/var/www/foo/fcgi-bin/" <Directory "/var/www/foo/fcgi-bin"> AllowOverride None Options None Order allow,deny Allow from all </Directory>
<Directory /var/www/foo/htdocs/> Order allow,deny Allow from all Options Indexes +ExecCGI </Directory> AddHandler php-fastcgi .php Action php-fastcgi /fcgi-bin/php4-fcgi-starter DirectoryIndex index.html index.php AddType application/x-httpd-php .php </VirtualHost>
Wichtig ist hier die Option +ExecCGI. Diese Option erlaubt es im entsprechenden Verzeichnis Programme über FastCGI auszuführen.
Jetzt kann man bereits den Apache starten:
# svcadm enable svc:/network/http:cswapache2
Mit ptree sieht das dann so aus:
7369 /opt/csw/apache2/sbin/httpd -k start 7370 /opt/csw/apache2/sbin/httpd -k start 7372 /opt/csw/bin/php-cgi 7375 /opt/csw/bin/php-cgi 7376 /opt/csw/bin/php-cgi 7377 /opt/csw/bin/php-cgi 7378 /opt/csw/bin/php-cgi 7379 /opt/csw/bin/php-cgi 7380 /opt/csw/bin/php-cgi 7381 /opt/csw/bin/php-cgi 7382 /opt/csw/bin/php-cgi 7371 /opt/csw/apache2/sbin/httpd -k start 7373 /opt/csw/apache2/sbin/httpd -k start 7374 /opt/csw/apache2/sbin/httpd -k start