lighttpd is a secure, fast, compliant, and very flexible web-server that has been optimized for high-performance environments. It has a very low memory footprint compared to other webservers and takes care of cpu-load. Its advanced feature-set (FastCGI, CGI, Auth, Output-Compression, URL-Rewriting and many more) make lighttpd the perfect webserver-software for every server that suffers load problems.
Source: The lighttpd website.
Lighttpd is available in the extra repository so:
# pacman -S lighttpd
The lighttpd configuration file is: Template:Filename. By default it should produce a working test page.
To check your lighttpd.conf for bugs you can use this command - helps finding misconfigurations very fast:
$ lighttpd -t -f /etc/lighttpd/lighttpd.conf
The default configuration file specifies Template:Filename as the document directory served.
It may be necessary to add a user and group for http if you don't already have one. That user seems to need to have permissions to write to the Template:Filename as well, so we'll make it the owner of that folder.
# groupadd http # adduser http # chown -R http /var/log/lighttpd
To test the install
# /etc/rc.d/lighttpd start # touch /srv/http/index.html # chmod 755 /srv/http/index.html # echo 'TestMe!' >> /srv/http/index.html
Then point your browser to localhost, and you should see the test page.
You may want to add lighttpd to the daemons list in Template:Filename to start the server on boot.
# pacman -S fcgi
Now you have lighttpd with fcgi support. If it was that what you wanted you're all set. People that want Ruby on Rails and/or PHP should continue. Template:Box Note
The following needs adding to the config file, /etc/lighttpd/lighttpd.conf
server.modules = ( "mod_access", "mod_fastcgi", "mod_accesslog" ) server.indexfiles = ( "dispatch.fcgi", "index.php" ) #dispatch.fcgi if rails specified server.error-handler-404 = "/dispatch.fcgi" #too fastcgi.server = ( ".fcgi" => ( "localhost" => ( "socket" => "/tmp/rails-fastcgi.socket", "bin-path" => "/path/to/rails/application/public/dispatch.fcgi" ) ), ".php" => ( "localhost" => ( "socket" => "/tmp/php-fastcgi.socket", "bin-path" => "/usr/bin/php-cgi" ) ) )
For php or Ruby on Rails see the next sections.
Install php and required modules,
# pacman -S php php-cgi
Check that php-cgi is working php-cgi --version
PHP 5.3.1 with Suhosin-Patch (cgi-fcgi) (built: Nov 23 2009 21:12:29) Copyright (c) 1997-2009 The PHP Group Zend Engine v2.3.0, Copyright (c) 1998-2009 Zend Technologies
If you get a similar output then php is installed correctly.
Note: Please keep in mind if you receive errors like No input file found after attempting to access your php files then make sure /etc/php/php.ini has the directives enabled:
cgi.fix_pathinfo=1 open_basedir = /home/:/tmp/:/usr/share/pear/:/another/path:/second/path
And that the files are world readable,
# chmod -R 755
Ruby on Rails
Considering you want to use Ruby on Rails I assume you have ruby installed. If not do so.
We need rubygems and ruby-fcgi. Check the AUR!
$ sudo pacman -S rubygems
$ wget http://aur.archlinux.org/packages/ruby-fcgi/ruby-fcgi/PKGBUILD $ makepkg $ sudo pacman -U ruby-fcgi-x.x.x-x-xxx.pkg.tar.gz
Now we have rubygems. Let's get rails!
$ sudo gem install rails --include-dependencies $ sudo gem install fcgi --include-dependencies
If this fails, run
# pacman -S fcgi
or get  and compile it yourself.
$ wget http://fastcgi.com/dist/fcgi.tar.gz $ tar zxvf fcgi.tar.gz $ cd fcgi-2.4.0 $./configure $ make # make install
And repeat the gem install.
Check if you have more than one fcgi.so
$ find /usr -name fcgi.so
If you have two, delete the one that doesn't have "/site_ruby/" in its path.
For documentation how to use Ruby on Rails please consult .
lighttpd downlads .php files
If lighttpd downloads .php files instead of "initializing" them you probably missed to add these lines to your Template:Filename.
server.modules = ( "mod_fastcgi", ) fastcgi.server = ( ".php" => (( "bin-path" => "/usr/bin/php-cgi", #depends where your php-cgi has been installed. Default here. "socket" => "/tmp/php.socket", "max-procs" => 2, "bin-environment" => ( "PHP_FCGI_CHILDREN" => "16", "PHP_FCGI_MAX_REQUESTS" => "10000" ), "bin-copy-environment" => ( "PATH", "SHELL", "USER" ), "broken-scriptfilename" => "enable" )))