Sturbi's Home

  • Gallery
  • Modellflug
  • Datenschutz
  • Impressum

Blog

  • Allgemein (15)
    • Sprüche (6)
  • Angeln (3)
  • Computer (25)
    • Linux (16)
      • Nagios (5)
      • Nginx (4)
      • Postfix (3)
      • Subversion (1)
    • VMware (3)
    • Windows (9)
      • Powershell (8)
  • Fotografie (26)
  • Reise (8)
    • Hawaii (4)
    • Irland (1)
    • USA (5)
Wenn du etwas so machst,
wie du es seit zehn Jahren gemacht hast,
dann sind die Chancen groß,
daß du es falsch machst.

Charles F. Kettering amerikanischer Ingenieur * 29.08.1876, † 25.11.1958

Nginx, PHP-FPM und WordPress auf Debian Lenny

23. April 2010 by Sturbi Kategorie: Linux, Nginx

Nachdem unser Nginx nun statischen Content ausliefern kann, kommen wir heute zum Thema PHP.
Realisiert wird das ganze über FastCGI mit PHP-FPM

also runterladen und patchen:

cd /usr/local/src
wget http://de.php.net/get/php-5.2.13.tar.gz/from/this/mirror
tar xvfz php-5.2.13.tar.gz
wget http://php-fpm.org/downloads/php-5.2.13-fpm-0.5.13.diff.gz
gzip -d php-5.2.13-fpm-0.5.13.diff.gz
patch -p1 -d php-5.2.13 < php-5.2.13-fpm-0.5.13.diff

So. Jetzt nur noch php compilieren *g*


cd php-5.2.13
./configure --enable-fastcgi --enable-fpm --with-mcrypt --with-zlib --enable-mbstring --with-curl --disable-debug --disable-rpath --enable-inline-optimization --with-bz2 --with-zlib --enable-sockets --enable-sysvsem --enable-sysvshm --enable-pcntl --enable-mbregex --with-mhash --with-xsl --with-pcre-regex --with-mysqli --with-mysql --enable-exif --with-gd --with-ldap --with-pdo-mysql --with-bz2 --with-ttf --with-t1lib --with-jpeg-dir=/usr --with-png-dir=/usr --with-gettext
make
make install

Wenn Configure mit fehlenden Librarrys abbricht, die entsprechenden „-dev“ Pakete suchen und installieren.
z.B.

apt-cache search libjpeg
apt-get install libjpeg62-dev

Unsere php.ini liegt dann unter „/usr/local/lib/php.ini“ Hier müssen wir die üblichen Anpassungen vornehmen, besonders das „extension_dir“ anpassen!

In der Datei „/usr/local/etc/php-fpm.conf“ ist dann an 4 Stellen als User/Gruppe „www-data“ einzutragen.

Dann lässt sich der FCGI Prozessmanager starten:

/usr/local/sbin/php-fpm start

Jetzt müssen wir unserem Nginx sagen, was er mit .php Datein machen soll und fertig sind wir.

location ~ (.*)\.php$ {
fastcgi_pass localhost:9000; # port where FastCGI processes were spawned
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www$fastcgi_script_name; # same path as above

fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;

fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param REQUEST_URI $request_uri;
fastcgi_param DOCUMENT_URI $document_uri;
fastcgi_param DOCUMENT_ROOT $document_root;
fastcgi_param SERVER_PROTOCOL $server_protocol;

fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;

fastcgi_param REMOTE_ADDR $remote_addr;
fastcgi_param REMOTE_PORT $remote_port;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;

# required if PHP was built with --enable-force-cgi-redirect
fastcgi_param REDIRECT_STATUS 200;
}

Nginx neu starten und schon sollten Php-Scripte ausgeführt werden. Am besten probiert man das mit einer kleinen phpinfo.php

Wer das WordPress als root des Nginx angelegt hat, braucht nur das Rewrite für die „/“ Location anpassen:

if (!-e $request_filename) {
rewrite ^(.+)$ /index.php?q=$1 last;
}

Dumm nur, wenn man das WordPress in einem Unterverzeichniss hat z.B. „/blog/“, aber auch das kann man einfach lösen:

location /blog {
root /var/www;
index index.php;

if (-f $request_filename) {
break;
}

if (!-e $request_filename) {
rewrite ^(.+)$ /blog/index.php?$1 last;}
}

Quellen:
http://n3m0.net/blog/2010/04/03/php-fpm-auf-debian-5-0-lenny/
http://elasticdog.com/2008/02/howto-install-wordpress-on-nginx/

© 2026 · Sturbi's Home