From ArchWiki
Revision as of 22:47, 24 August 2011 by Unikum (talk | contribs) (Output Compression)
Jump to: navigation, search

This template has only maintenance purposes. For linking to local translations please use interlanguage links, see Help:i18n#Interlanguage links.

Local languages: Català – Dansk – English – Español – Esperanto – Hrvatski – Indonesia – Italiano – Lietuviškai – Magyar – Nederlands – Norsk Bokmål – Polski – Português – Slovenský – Česky – Ελληνικά – Български – Русский – Српски – Українська – עברית – العربية – ไทย – 日本語 – 正體中文 – 简体中文 – 한국어

External languages (all articles in these languages should be moved to the external wiki): Deutsch – Français – Română – Suomi – Svenska – Tiếng Việt – Türkçe – فارسی

Merge-arrows-2.pngThis article or section is a candidate for merging with Lighttpd For Both SSL And Non-SSL.Merge-arrows-2.png

Notes: please use the second argument of the template to provide more detailed indications. (Discuss in Talk:Lighttpd#)

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


Basic Setup

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.


Install fcgi

# 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 = (

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 (see also PHP and LAMP):

# 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:

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.)

Install ruby from [extra] and Template:Package AUR from AUR.

Follow instructions on RubyOnRails.

Output Compression

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:

include "conf.d/compress.conf"

Template:Box Note Now restart your server:

# rc.d restart lighttpd


Lighttpd downloads .php files

If lighttpd downloads Template:Filename files instead of "initializing" them you probably missed to add these lines to your Template:Filename.

server.modules = (

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.

See also