LIGHTY :The future in Web servers
Lighttpd is the Web server of choice if the goal is performance. Lighttpd consumes less resources and at the same time is powerful web server. With FastCGI and Xcache as performance boosters, lighttpd is the best solution for any webserver facing high CPU usage. This article is intended to present Lighttpd and few of its enhanced features. The article will give you steps for installing lighttpd in a fresh linux server and to compile php with fastcgi and finally install Xcache.
Lighttpd is a secure,fast and very flexible websever that is much faster than apache and much much much more flexible/configurable/secure and its fcgi php support is simply great. It takes care of the cpu load and use very low memory compared to other webserver. Few of its advanced feature-set includes FastCGI,load balancing,protecting docroot,Xcache etc out which we are discussing briefly about fcgi and xcache here.
1.1 Why ‘lighty’?
Light footprint + httpd = LightTPD
You can call him ‘lighty’ if you feel as that is what the lighttpd lovers call .
Lighttpd has got wide variety of advanced,php support and security features.Few are mentioned below for your knowledge.
- *virtual hosts
- * virtual directory listings
- * URL-Rewriting, HTTP-Redirects automatic
- * expiration of files Large File Support (64bit fileoffsets)
- * gzip, bzip2 authentication backends:
- * secure application controlled downloads
- * Server Side Includes
- * User Tracking FastCGI, CGI, SSI
- * faster than apache + mod_php4
- * it can spawn FastCGI processes (necessary for PHP 4.3.x) via FastCGI and CGI interface.
- * load-balanced FastCGI (one webserver distributes request to multiple PHP-servers via FastCGI)
- * chroot(), set UID, set GID
- * protecting docroot and
- * strict HTTP-header parsing
1.3 .Install lighttpd
Download source file : lighttpd-1.4.11 tar -xzvf lighttpd-1.4.11.tar.gz cd lighttpd-1.4.11 ./configure --enable-fastcgi --prefix=/usr/local/lighttpd-1.4.11 make make install
Configuring conf file:
mkdir /etc/lighttpd/ cp -rp doc/lighttpd.conf /etc/lighttpd/lighttpd.conf vi /etc/lighttpd/lighttpd.conf
and edit the following section:
server.document-root = "/var/www/html" server.port = 80 server.username = "lighttpd" server.groupname = "lighttpd" server.bind = "192.168.1.77" server.tag ="lighttpd" server.errorlog = "/var/log/lighttpd/error.log" accesslog.filename = "/var/log/lighttpd/access.log"
2.1 What is Fast-cgi?
F-cgi stands for Fast Common Gateway Interface. FastCGI is an interface which helps to connect webservers with new application where these applications can be static or dynamic in nature. Dynamic application allows us to deliver products, services, and messages whose shape varies according to the customer requirements.
- * Performance:F-cgi can be reused to handle multiple request without creating new processes for each request.
- * Simplicity:Can be easily migrated from existing CGI.
- * Language independence: FCGI applications can be written in nearly any language
- * Process isolation:A buggy FastCGI application cannot crash or corrupt the core server or other applications neither can they steal any secrets from the webserver.
- * Architecture independence:Any webserver can include fcgi irrespective of any particular server architecture.
- * Distributed computing:Fcgi has the ability to run remotely which helps in managing external websites and load distribution.
2.3 Compile PHP5 with Fast-cgi support
Download source file :
wget http://museum.php.net/php5/php-5.0.5.tar.gz tar -xzf php-5.0.5.tar.gz cd php-5.0.5 ./configure --prefix=/usr/local/php5-fcgi --enable-fastcgi --enable-force-cgi-redirect --disable-cli --enable-memory-limit --with-layout=GNU --with-regex=php make make install
Edit lighttpd.conf file:
Now add the following to lightpd.conf
fastcgi.server = ( ".php" => ( "localhost" => ( "socket" => "/tmp/php5-fcgi.socket", "bin-path" => "/usr/local/php5-fcgi/bin/php" ) ) )
Restart lightpd and you should get the module in phpinfo.php page or should show something like this in command prompt:
PHP 5.0.5 (cgi-fcgi) (built: Oct 15 2006 11:34:04) Copyright (c) 1997-2004 The PHP Group Zend Engine v2.0.5, Copyright (c)
3.1 What is Xcache?
Opcode cache is a tool which helps in eliminating inefficiency found in scripts. Opcode caches are very easy to deploy and that it significantly increases the performance of applications by eliminating the parsing process on every request.
XCache is a fast, stable PHP opcode which can be run in servers under high load.
3.2 Installing Xcache:
Download from the source:
wget http://188.8.131.52/pub/XCache/rc/1.0.3-rc1/xcache-1.0.3-rc1.tar.bz2 bunzip2 xcache-1.0.3-rc1.tar.bz2 cd xcache mkdir ../xcache-build cd ../xcache-build ./xcache/configure --enable-xcache --enable-xcache-coverager make make install
Edit php.ini file
cat xcache.ini >> /usr/local/lib/php.ini
replace the line in php.ini
with something like this as per the server configuration:
Edit the following section:
[xcache] xcache.size = 64M xcache.mmap_path = "/tmp/xcache" xcache.cacher = 1 zend_extension="/usr/local/lib/php/extensions/no-debug-non-zts-20041030/xcach e.so" # or extension="xcache.so"
Restart lightpd and type php -v in the command prompt and should get something as shown below:
PHP 5.0.5 (cgi-fcgi) (built: Oct 15 2006 11:34:04) Copyright (c) 1997-2004 The PHP Group Zend Engine v2.0.5, Copyright (c) 1998-2004 Zend Technologies with XCache v1.0.3-rc1, Copyright (c) 2005-2006,
Conclusion: It seems Apache 2.0.x has performance 50% greater to Apache 1.3.x but lighttpd is still 2-3 times faster.Transfer rate of data for lighttpd is found to be almost 1.5 times that of apache where as lighttpd + fastcgi is found to 25% more faster than apache + mod_php4. Now why not try out and feel for yourself how everything gets faster.
About the author:
Sindhu N works as Tech Support engineer in Bobcares. She primarily works on administering cPanel servers.