Project

General

Profile

Actions

TutorialConfiguration » History » Revision 7

« Previous | Revision 7/28 (diff) | Next »
Anonymous, 2006-03-26 20:33
massive wording changes to make it more English-like


= Configuration =

How much time do you have to setup lighttpd? 5 minutes? 10 minutes? more?

5 minutes

Want to run a fast, low-resource server for static content? It's easy:

{{{
server.document-root = "/var/www/servers/www.example.org/pages/"

server.port = 3000

mimetype.assign = (
".html" => "text/html",
".txt" => "text/plain",
".jpg" => "image/jpeg",
".png" => "image/png"
)
}}}

lighttpd will listen on TCP port 3000 and bind to all interfaces by default. The few important MIME types are assigned
and the document root (the base directory that is used for all requests) is set. The files in the document root have to be
readable by the user starting the web server.

First, check that your config is ok:

{{{
$ lighttpd -t -f lighttpd.conf
}}}

Now start the server for testing:

{{{
$ lighttpd -D -f lighttpd.conf
}}}

and point your browser to

[http://127.0.0.1:3000/]

To stop the server again, just press ctrl-c.

=== A real daemon ===

Next you should familiarize yourself with some settings necessary for your server's security:

{{{
server.document-root = "/var/www/servers/www.example.org/pages/"

server.port = 80

server.username = "www"
server.groupname = "www"

mimetype.assign = (
".html" => "text/html",
".txt" => "text/plain",
".jpg" => "image/jpeg",
".png" => "image/png"
)

static-file.exclude-extensions = ( ".fcgi", ".php", ".rb", "~", ".inc" )
index-file.names = ( "index.html" )
}}}

Now the web server is listening on port 80, the default for HTTP traffic, and will switch to the user {{{www}}} and the group {{{www}}}.
The server has to be started as root to take control of port 80, but it's not necessary or a good idea to continue running as root after port acquisition.

Lastly, we forbid access to the source of some types of files which will be used later for generating dynamic content, and we rewrite
all requests to a directory to the {{{index.html}}} file in that directory.

Assuming you have already created the {{{/etc/init.d/lighttpd}}} service as described in TutorialInstallation, place the config file in {{{/etc/lighttpd/lighttpd.conf}}} and start the server with:

{{{
$ /etc/init.d/lighttpd start
}}}

To stop it use:

{{{
$ /etc/init.d/lighttpd stop
}}}

10 minutes

Conditionals, conditionals, conditionals:

The most important part in Lighty's configuration is the use of conditionals. Using simple comparisions or regular expressions, they control
if a default setting will be overridden or not.

{{{
server.document-root = "/var/www/servers/www.example.org/pages/"

server.port = 80

server.username = "www"
server.groupname = "www"

mimetype.assign = (
".html" => "text/html",
".txt" => "text/plain",
".jpg" => "image/jpeg",
".png" => "image/png"
)

static-file.exclude-extensions = ( ".fcgi", ".php", ".rb", "~", ".inc" )
index-file.names = ( "index.html" )

$HTTP["host"] == "www2.example.org" {
server.document-root = "/var/www/servers/www2.example.org/pages/"
}

}}}

Now we have a new virtual server which will use the same settings as the first server, only the document root
will be replaced by a new one.

This server will also have a download area which will use the built-in directory listing feature:

{{{
server.document-root = "/var/www/servers/www.example.org/pages/"

server.port = 80

server.username = "www"
server.groupname = "www"

mimetype.assign = (
".html" => "text/html",
".txt" => "text/plain",
".jpg" => "image/jpeg",
".png" => "image/png"
)

static-file.exclude-extensions = ( ".fcgi", ".php", ".rb", "~", ".inc" )
index-file.names = ( "index.html" )

$HTTP["host"] == "www2.example.org" {
server.document-root = "/var/www/servers/www2.example.org/pages/"
$HTTP["url"] =~ "^/download/" {
dir-listing.activate = "enable"
}
}
}}}

As you can see, conditonals can be nested: only the {{{download}}} folder and its subfolders have the directory listings
enabled.

Now that we've covered the basics, you're ready to learn some more advanced topics like [http://blog.lighttpd.net/articles/2005/11/25/simplify-your-configfiles-with-includes includes] and configuring PHP with [http://www.lighttpd.net/documentation/fastcgi.html FastCGI].

After 30 minutes

Now you know the basic setup, include files, and maybe even how to set up PHP or Ruby. But there's so much more to find out.

Most of it is described in examples in the default configuration file that you can find in the {{{doc}}} directory
of the tarball or [http://trac.lighttpd.net/trac/file/branches/lighttpd-merge-1.4.x/doc/lighttpd.conf in the repository].

You can also check the [http://www.lighttpd.net/documentation/ online manual] and its [http://www.lighttpd.net/documentation/configuration.html description of the config file structure].

Updated by Anonymous over 18 years ago · 7 revisions