Lighttpd 1.5 fastcgi php mod proxy backend fastcgi configuration howto
Old version 1.4.xx has mod_fastcgi for PHP. This module has been replaced by mod_proxy_backend_fastcgi and mod_proxy_core in Lighttpd 1.5.xx.
FastCGI was developed by FastCGI and is a binary container around HTTP requests which reduces the parsing overhead.
FastCGI used for both PHP and rails application. In this small howto I will explain howto configure PHP under Lighttpd 1.5.xx.
Required softwares
[a] Make sure you have Lighttpd v1.5.xx installed
[b] spawn-fcgi binary (part of lighttpd software) to spawns fastcgi processes. It is used to spawn remote/local FastCGI processes such as PHP or ruby.
[c] PHP compiled / installed as fastcgi. Type the following command to verify that php is installed as fastcgi binary (look for cgi-fcgi word):
$ php-cgi -v
OR
$ php -v
Output:
PHP 5.1.6 (cgi-fcgi) (built: Mar 9 2007 07:25:36) Copyright (c) 1997-2006 The PHP Group Zend Engine v2.1.0, Copyright (c) 1998-2006 Zend Technologies
mod_proxy_backend_fastcgi configuration
Open configuration file /etc/lighttpd/lighttpd.conf
# vi /etc/lighttpd/lighttpd.conf
Make sure following modules are loaded:
server.modules += ( "mod_proxy_core", "mod_proxy_backend_fastcgi" )
Configure fastcgi PGP module by appending following configuration directives:
$HTTP["url"] =~ "\.php$" {
proxy-core.balancer = "round-robin"
proxy-core.allow-x-sendfile = "enable"
proxy-core.check-local = "enable"
proxy-core.protocol = "fastcgi"
proxy-core.backends = ( "unix:/tmp/php-fastcgi.sock" )
proxy-core.max-pool-size = 16
}
Save and close the file.
Task: Start lighttpd
Type the following command to swap php using spawn-fcgi:
# /usr/bin/spawn-fcgi -s /tmp/php-fastcgi.sock -f /usr/bin/php-cgi -u lighttpd -g lighttpd -C 5 -P /var/run/spawn-fcgi.pid
Start/restart lighttpd:
# /etc/init.d/lighttpd start
Task: Stop lighttpd
Type the following command:
# /etc/init.d/lighttpd stop
Kill external php process:
# killall php-cgi
Task: Patch lighttpd init startup script
Since lighttpd uses external binary to swap php or ruby application you need to add stop and start functionality by patching /etc/init.d/lighttpd file. You can grab my /etc/init.d/lighttpd file .
# cd /etc/init.d/
# mv lighttpd lighttpd.old
# wget http://www.cyberciti.biz/files/lighttpd/1.5.0/lighttpd.init.d.txt
# mv lighttpd.init.d.txt lighttpd
# chmod +x lighttpd
Want to stay up to date with the latest Linux tips, news and announcements? Subscribe to our free e-mail newsletter or RSS feed to get all updates.
You can Email this page to a friend.
You may also be interested in other helpful articles:
- Lighttpd PHP fastcgi configuration
- How to: Run and install PHP FastCGI on Microsoft IIS Server
- Lighttpd map html pages to php (execute html pages as php)
- Linux Lighttpd Configure ASP.NET Applications as FastCGI Mono Server
- FreeBSD Install Lighttpd Web Server
Discussion on This Article:
Leave a Reply
We encourage your comments, and suggestions. But please stay on topic, be polite, and avoid spam. Thank you very much for stopping by our site!


Ah, nice work. I’ll have to play with this once 1.5x comes out officially. Bookmarked till then.
thanks!
good job dude, just upgraded today from 1.4.18 to 1.5 and was surprise to see the fastCGI system fuly rewrote, but finnally that’s better I no more have to use the 3rd party tool execwrap now because spawn-cgi does the job, thanks for the nice page dude, already ready for 1.5.x by your help
Thanks for the spawn-fcgi tips! This was a lifesaver.
Included it in my post about setting up uploaders with lighttpd here:
Lighttpd 1.5 and PHP (Uber-Uploader too)