Lighttpd

From ArchWiki
Revision as of 09:30, 18 January 2011 by Prometheus (talk | contribs)
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 – فارسی

Introduction

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.

Installation

Lighttpd is available in the extra repository so:

# pacman -S lighttpd

Configuration

Basic Setup

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.

FastCGI

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, /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.

php

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!

Rubygems

$ sudo pacman -S rubygems

ruby-fcgi

$ 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 [1] 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 [2].

TroubleShooting

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