From the lighttpd website:
- 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.
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 Template:Filename 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.
Examples configuration files are in Template:Filename.
# 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, Template:Filename
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.
# pacman -S php php-cgi
Check that php-cgi is working Template:Codeline
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 Template:Filename 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
Install and configure FastCGI. (See #FastCGI above.)
Follow instructions on RubyOnRails.
In Template:Filename add:
var.cache_dir = "/var/cache/lighttpd"
Then create directory for a compressed files:
# mkdir /var/cache/lighttpd/compress # chown http:http /var/cache/lighttpd/compress
Copy example configuration file:
# mkdir /etc/lighttpd/conf.d # cp /usr/share/doc/lighttpd/config/conf.d/compress.conf /etc/lighttpd/conf.d/
Add following in Template:Filename:
Template:Box Note Now restart your server:
# rc.d restart lighttpd
Lighttpd downloads .php files
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" )))
Styles (CSS) not working properly
The default lighttpd config does not include a mimetype definition for CSS so when standards compliant browsers get text/html instead of text/css they get confused and nothing displays properly. To fix this add an entry for CSS.
mimetype.assign = ( ".html" => "text/html", ".txt" => "text/plain", ".jpg" => "image/jpeg", ".png" => "image/png", ".css" => "text/css" )
New lines are not needed and are only used here for readability.