Как установить lighttpd сервер на Ubuntu Server 9.10

Если вы задаетесь вопросом как установить Web-сервер lighttpd в Ubuntu то вам сюда. Это полное руководство по установке от “А” до “Я”, начиная от подготовки платформы, проектирования будущей файловой системы сайтов которые будут обслуживаться сервером. В статье подробно изложены вопросы настройки сервера и вопросы безопасности будущих сайтов, таких как правильно сформированная структура хранения файлов для основного домена и саб-домена. Прочитав статью до конца, вы сможете без труда запустить сервер и у вас вряд ли возникнут вопросы. Ниже изложенная статья является самым подробным руководством по установке lighttpd в Рунете. Как это делается читаем ниже

ФундаментЪ

Первое что нам необходимо это подготовить платформу будущего сервера. Удобнее всего запускать его на виртуалке. Так и поступим. Качаем последнюю версию VirtualBox. Ставим ее. Качаем Ubuntu Server 9.04. Устанавливаем внутри виртуалки наш образ. Получаем готовую сервер платформу. Лично мне нравиться использовать Ubuntu Server в связке с легким xfce. Далее все действия производятся уже в готовой платформе, т.е. внутри виртуальной машины. В xfce нет большой необходимости, но если вам так удобнее (как и мне) ставим его командой:

sudo aptitude install xubuntu-desktop
sudo aptitude install xubuntu-desktop

Обратите внимание, sudo по дефолту может не работать, добыть его можно так:

su -
nano /etc/sudoers
su -
nano /etc/sudoers

в файле нужно вписать своего пользователя, а перед рутом поставить %:

# User privilege specification
%root   ALL=(ALL) ALL
user ALL=(ALL) ALL
# User privilege specification
%root   ALL=(ALL) ALL
user ALL=(ALL) ALL

Итак в готовом виде мы уже имеем:

  • Виртуальную машину под управлением VirtualBox
  • Установленные внутри виртуалки Ubuntu Server 9.04
  • Графический рабочий стол xfce

Перед началом установки сервера не забудьте обновить систему:

sudo apt-get update
sudo apt-get safe-upgrade
sudo apt-get update
sudo apt-get safe-upgrade

Начнем с создания пользователя и группы под которыми будет работать веб-сервер.
Создаем пользователя www, для в вашем текущем сеансе станьте администратором:

su root
su root

Теперь создайте нового пользователя:

adduser www
adduser www

Присвойте ему пароль и всю необходимую информацию которую у вас запросит утилита.
Группа создалась автоматически, т.е. вам осталось только завести пользователя www в одноименную группу:

usermod -a -G www www
usermod -a -G www www

Что-бы не скомпрометировать систему в будущем, проверьте файлы /etc/passwd/ и /etc/group на наличие одинаковых PID с вашим новым пользователем и группой, если таковые имеются, смените PID на любой другой.

sudo cat /etc/passwd | grep 1001
www:x:1001:1002::/home/www:/bin/sh
sudo cat /etc/passwd | grep 1001
www:x:1001:1002::/home/www:/bin/sh

Всё готово. Можно залогиниться в систему под вашим новым пользователем.
Ваш текущий домашний каталог должен быть /home/www/

Давайте создадим файловую структуру нашего будущего сайта, схематично это должно выглядеть так:

1

Каждая из папок будет принадлежать пользователю www.

mkdir ~/public_html/
mkdir ~/public_html/site1/
mkdir ~/public_html/site1/www/
mkdir ~/public_html/site1/subdomain1/
mkdir ~/public_html/site1/logs/
mkdir ~/public_html/site1/stats/
mkdir ~/public_html/site1/archives/
mkdir ~/public_html/site1/uploads/
mkdir ~/public_html/
mkdir ~/public_html/site1/
mkdir ~/public_html/site1/www/
mkdir ~/public_html/site1/subdomain1/
mkdir ~/public_html/site1/logs/
mkdir ~/public_html/site1/stats/
mkdir ~/public_html/site1/archives/
mkdir ~/public_html/site1/uploads/

Для всех папок:

sudo chmod -R 766 ~/public_html/
sudo chmod -R 766 ~/public_html/

Установка сервера lighttpd

Далее все как по учебнику.
Устанавливаем сервер:

sudo apt-get install lighttpd
sudo apt-get install lighttpd

Поздравляю, сервер установлен, вы можете убедиться в этом перейдя в браузере по адресу: http://localhost/
Вы должны будете увидеть страницу приветствия сервера.

1

Итак директория для сайта по дефолту: /var/www/
Конфиг сервера: /etc/lighttpd/lighttpd.conf

Установка PHP5 с поддержкой CGI

Теперь нам необходимо поставить PHP5 с поддержкой CGI, в Ubuntu для этого есть готовые пакеты:

sudo apt-get install php5-cgi
sudo apt-get install php5-cgi

Что-бы PHP5 работало с Lighttpd через CGI-интерфейс необходимо отредактировать два файла:
1) Файл настройки PHP5 /etc/php5/cgi/php.ini
2) Файл конфигурации сервера /etc/lighttpd/lighttpd.conf

В файл /etc/php5/cgi/php.ini необходимо вставить директиву cgi.fix_pathinfo = 1

sudo nano /etc/php5/cgi/php.ini 
....
cgi.fix_pathinfo = 1
sudo nano /etc/php5/cgi/php.ini 
....
cgi.fix_pathinfo = 1

Сохраните и закройте файл.

В файл /etc/lighttpd/lighttpd.conf необходимо встроить целый ряд директив, первая mod_fastcgi которая подключит модуль CGI после перезапуска сервера.

sudo nano /etc/lighttpd/lighttpd.conf 
....
server.modules              = (
            "mod_access",
            "mod_alias",
            "mod_accesslog",
            "mod_compress",
            "mod_fastcgi", < - подключаем модуль 
...
sudo nano /etc/lighttpd/lighttpd.conf 
....
server.modules              = (
            "mod_access",
            "mod_alias",
            "mod_accesslog",
            "mod_compress",
            "mod_fastcgi", < - подключаем модуль 
...

В конце файла вставляем:

fastcgi.server = ( ".php" => ((  
                     "bin-path" => "/path/to/php-cgi",
                     "socket" => "/tmp/php.socket" 
                 )))
fastcgi.server = ( ".php" => ((  
                     "bin-path" => "/path/to/php-cgi",
                     "socket" => "/tmp/php.socket" 
                 )))

Установка MySQL

Приступаем к инсталляции MySQL, всё стандартно:

sudo aptitude install mysql-server mysql-client libmysqlclient15-dev
sudo aptitude install mysql-server mysql-client libmysqlclient15-dev

В целях безопасности меняем root-пароль:

sudo mysqladmin -u root password -p
sudo mysqladmin -u root password -p

а так же:

sudo /usr/bin/mysql_secure_installation
sudo /usr/bin/mysql_secure_installation

Проверяем работу MySQL:

sudo netstat -tap | grep mysql
sudo netstat -tap | grep mysql

Если всё хорошо, видим следующие (порт будет другой)

tcp        0      0 localhost:mysql         *:*                     LISTEN      1556/mysqld
tcp        0      0 localhost:mysql         *:*                     LISTEN      1556/mysqld

Теперь нам необходимо до установить пакеты поддержки MySQL в PHP5:

sudo apt-get install php5-mysql php5-curl php5-gd php5-idn php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-mhash php5-ming php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl php5-common
sudo apt-get install php5-mysql php5-curl php5-gd php5-idn php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-mhash php5-ming php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl php5-common

В принципе всё готов. Теперь по идеи, как написано на сайте разработчиков, необходимо включить FastCGI конфигурацию, файл которой расположен по адресу: /etc/lighttpd/conf-available/10-fastcgi.conf
Это выполняется командой:

sudo lighttpd-enable-mod fastcgi
sudo lighttpd-enable-mod fastcgi

После чего создать символьную ссылку файла /etc/lighttpd/conf-enabled/10-fastcgi.conf:

ls -l /etc/lighttpd/conf-enabled
ls -l /etc/lighttpd/conf-enabled

и в конце-концов перезагрузить сервер:

sudo /etc/init.d/lighttpd force-reload
sudo /etc/init.d/lighttpd force-reload

Теперь, если вы расположите файл с именем index.php с содержанием вида:

< ?php
phpinfo();
?>
< ?php
phpinfo();
?>

по адресу /var/www/ и перейдете сюда http://localhost/ вы должны увидеть информационную страницу PHP.

2

Ошибка

Так оно и было. Но вот буквально вчера, столкнулся со следующей проблемой, сервер не стартовал, ругаясь на то, что у него в конфиге есть строчка fastcgi.server, а самого PHP5 с CGI в процессах и в помине нет. Так оно и оказалось. Проверял на ряде систем: Ubuntu Server 9.04, Ubuntu Desktop 9.10, Ubuntu Server 8.04, везде было всё одно и тоже, хотя во всех случаях установка сервака и PHP5 проходила без шума и пыли. PHP5 по идее должен стартовать с подачи сервера, а он этого не делал, даже после включения sudo lighttpd-enable-mod fastcgi поддержки CGI.

Решение пришло случайно, что-бы запустить сервер и сопутствующий ему PHP5-CGI я выполнил следующие команды.
Включаем FastCGI конфигурацию:

sudo lighttpd-enable-mod fastcgi
sudo lighttpd-enable-mod fastcgi

Создаем символьную ссылку файла /etc/lighttpd/conf-enabled/10-fastcgi.conf:

ls -l /etc/lighttpd/conf-enabled
ls -l /etc/lighttpd/conf-enabled

Перезагружаем сервер:

sudo /etc/init.d/lighttpd force-reload
sudo /etc/init.d/lighttpd force-reload

Видим ошибку вида:
Duplicate config variable in conditional 0 global: fastcgi.server
2010-04-05 20:59:09: (configfile.c.864) source: /etc/lighttpd/lighttpd.conf line: 173 pos: 1 parser failed somehow near here: (EOL)

Выключаем FastCGI конфигурацию:

sudo lighttpd-disable-mod fastcgi
sudo lighttpd-disable-mod fastcgi

И успешно стартуем сервер:

sudo /etc/init.d/lighttpd force-reload
sudo /etc/init.d/lighttpd force-reload

Думаю ошибка таится именно в данной сборке сервера и скорее всего если вы будите ставить последнюю версию из исходников вы с такой проблемой не сталкнетесь.

Настройка сервера

И так сервер запущен. Осталось немного поправить конфиг, а именно подравнять директории, поменять пользователя www-data с которого стартует сервер на текущего, т.е. www, настроить виртуальные хосты, если в таких есть необходимость.
Файл прокомментирован!

server.modules              = (
            "mod_access",
            "mod_alias",
            "mod_accesslog",
            "mod_compress",
        "mod_fastcgi", < -- подключенный модуль FastCGI 
#           "mod_rewrite",
#           "mod_redirect",
#           "mod_evhost",
#           "mod_usertrack",
#           "mod_rrdtool",
#           "mod_webdav",
#           "mod_expire",
#           "mod_flv_streaming",
#           "mod_evasive"
)
 
## a static document-root, for virtual-hosting take look at the
## server.virtual-* options
server.document-root       = "/home/www/public_html/site1/www/" <-- сменили директорию сайта
 
## where to upload files to, purged daily.
server.upload-dirs = ( "/home/www/public_html/site1/uploads" ) <-- сменили папку куда будут сгружать файлы
 
## where to send error-messages to
server.errorlog            = "/home/www/public_html/site1/logs/error.log" <-- сменили папку для логов
 
## files to check for if .../ is requested
index-file.names           = ( "index.php", "index.html",
                               "index.htm" ) <-- убрали лишнее
 
## Use the "Content-Type" extended attribute to obtain mime type if possible
# mimetype.use-xattr = "enable"
 
#### accesslog module
accesslog.filename         = "/home/www/public_html/site1/logs/access.log" <-- сменили папку для логов
 
## deny access the file-extensions
#
# ~    is for backupfiles from vi, emacs, joe, ...
# .inc is often used for code includes which should in general not be part
#      of the document-root
url.access-deny            = ( "~", ".inc" )
 
# which extensions should not be handle via static-file transfer
#
# .php, .pl, .fcgi are most often handled by mod_fastcgi or mod_cgi
static-file.exclude-extensions = ( ".php", ".pl", ".fcgi" )
 
## Use ipv6 only if available.
#include_shell "/usr/share/lighttpd/use-ipv6.pl" <-- закомментили использование протокола ipv6
 
## bind to port (default: 80)
# server.port               = 81
 
## bind to localhost only (default: all interfaces)
## server.bind                = "localhost"  <-- тут можете указать свой IP 
 
## error-handler for status 404
#server.error-handler-404  = "/error-handler.html"
#server.error-handler-404  = "/error-handler.php" 
 
## to help the rc.scripts
server.pid-file            = "/var/run/lighttpd.pid" <-- PID файл как и в случае с nginx тоже можно сложить в хомяк
 
## Format: <errorfile-prefix><status>.html
## -> ..../status-404.html for 'File not found'
#server.errorfile-prefix    = "/var/www/"
 
## virtual directory listings
dir-listing.encoding        = "utf-8"
server.dir-listing          = "enable"
 
## send unhandled HTTP-header headers to error-log
#debug.dump-unknown-headers  = "enable"
 
### only root can use these options
#
# chroot() to directory (default: no chroot() )
#server.chroot            = "/"
 
## change uid to <uid> (default: don't care)
server.username            = "www" < -- сменили пользователя 
 
## change uid to <uid> (default: don't care)
server.groupname           = "www" < -- сменили группу 
 
#### compress module
compress.cache-dir          = "/var/cache/lighttpd/compress/"
compress.filetype           = ("text/plain", "text/html", "application/x-javascript", "text/css")
 
#### url handling modules (rewrite, redirect, access)
# url.rewrite                 = ( "^/$"             => "/server-status" )
# url.redirect                = ( "^/wishlist/(.+)" => "http://www.123.org/$1" )
 
#
# define a pattern for the host url finding
# %% => % sign
# %0 => domain name + tld
# %1 => tld
# %2 => domain name without tld
# %3 => subdomain 1 name
# %4 => subdomain 2 name
#
# evhost.path-pattern = "/home/storage/dev/www/%3/htdocs/"
 
#### expire module
# expire.url                  = ( "/buggy/" => "access 2 hours", "/asdhas/" => "access plus 1 seconds 2 minutes")
 
#### rrdtool
# rrdtool.binary = "/usr/bin/rrdtool"
# rrdtool.db-name = "/var/www/lighttpd.rrd"
 
#### variable usage:
## variable name without "." is auto prefixed by "var." and becomes "var.bar"
#bar = 1
#var.mystring = "foo"
 
## integer add
#bar += 1
## string concat, with integer cast as string, result: "www.foo1.com"
#server.name = "www." + mystring + var.bar + ".com"
## array merge
#index-file.names = (foo + ".php") + index-file.names
#index-file.names += (foo + ".php")
 
#### external configuration files
## mimetype mapping
include_shell "/usr/share/lighttpd/create-mime.assign.pl"
 
## load enabled configuration files,
## read /etc/lighttpd/conf-available/README first
include_shell "/usr/share/lighttpd/include-conf-enabled.pl"
 
#### handle Debian Policy Manual, Section 11.5. urls
## by default allow them only from localhost
## (This must come last due to #445459)
## Note: =~ "127.0.0.1" works with ipv6 enabled, whereas == "127.0.0.1" doesn't
$HTTP["remoteip"] =~ "127.0.0.1" {
    alias.url += (
        "/doc/" => "/usr/share/doc/",
        "/images/" => "/usr/share/images/"
    )
    $HTTP["url"] =~ "^/doc/|^/images/" {
        dir-listing.activate = "enable"
    }
}
 
fastcgi.server = ( ".php" => ((    < -- необходимый блок для работы с PHP5-CGI
"bin-path" => "/usr/bin/php5-cgi",
"socket" => "/tmp/php.socket"
)))</uid></status>
server.modules              = (
            "mod_access",
            "mod_alias",
            "mod_accesslog",
            "mod_compress",
	    "mod_fastcgi", < -- подключенный модуль FastCGI 
#           "mod_rewrite",
#           "mod_redirect",
#           "mod_evhost",
#           "mod_usertrack",
#           "mod_rrdtool",
#           "mod_webdav",
#           "mod_expire",
#           "mod_flv_streaming",
#           "mod_evasive"
)

## a static document-root, for virtual-hosting take look at the
## server.virtual-* options
server.document-root       = "/home/www/public_html/site1/www/" <-- сменили директорию сайта

## where to upload files to, purged daily.
server.upload-dirs = ( "/home/www/public_html/site1/uploads" ) <-- сменили папку куда будут сгружать файлы

## where to send error-messages to
server.errorlog            = "/home/www/public_html/site1/logs/error.log" <-- сменили папку для логов

## files to check for if .../ is requested
index-file.names           = ( "index.php", "index.html",
                               "index.htm" ) <-- убрали лишнее

## Use the "Content-Type" extended attribute to obtain mime type if possible
# mimetype.use-xattr = "enable"

#### accesslog module
accesslog.filename         = "/home/www/public_html/site1/logs/access.log" <-- сменили папку для логов

## deny access the file-extensions
#
# ~    is for backupfiles from vi, emacs, joe, ...
# .inc is often used for code includes which should in general not be part
#      of the document-root
url.access-deny            = ( "~", ".inc" )

# which extensions should not be handle via static-file transfer
#
# .php, .pl, .fcgi are most often handled by mod_fastcgi or mod_cgi
static-file.exclude-extensions = ( ".php", ".pl", ".fcgi" )

## Use ipv6 only if available.
#include_shell "/usr/share/lighttpd/use-ipv6.pl" <-- закомментили использование протокола ipv6

## bind to port (default: 80)
# server.port               = 81

## bind to localhost only (default: all interfaces)
## server.bind                = "localhost"  <-- тут можете указать свой IP 

## error-handler for status 404
#server.error-handler-404  = "/error-handler.html"
#server.error-handler-404  = "/error-handler.php" 

## to help the rc.scripts
server.pid-file            = "/var/run/lighttpd.pid" <-- PID файл как и в случае с nginx тоже можно сложить в хомяк

## Format: <errorfile-prefix><status>.html
## -> ..../status-404.html for 'File not found'
#server.errorfile-prefix    = "/var/www/"

## virtual directory listings
dir-listing.encoding        = "utf-8"
server.dir-listing          = "enable"

## send unhandled HTTP-header headers to error-log
#debug.dump-unknown-headers  = "enable"

### only root can use these options
#
# chroot() to directory (default: no chroot() )
#server.chroot            = "/"

## change uid to <uid> (default: don't care)
server.username            = "www" < -- сменили пользователя 

## change uid to <uid> (default: don't care)
server.groupname           = "www" < -- сменили группу 

#### compress module
compress.cache-dir          = "/var/cache/lighttpd/compress/"
compress.filetype           = ("text/plain", "text/html", "application/x-javascript", "text/css")

#### url handling modules (rewrite, redirect, access)
# url.rewrite                 = ( "^/$"             => "/server-status" )
# url.redirect                = ( "^/wishlist/(.+)" => "http://www.123.org/$1" )

#
# define a pattern for the host url finding
# %% => % sign
# %0 => domain name + tld
# %1 => tld
# %2 => domain name without tld
# %3 => subdomain 1 name
# %4 => subdomain 2 name
#
# evhost.path-pattern = "/home/storage/dev/www/%3/htdocs/"

#### expire module
# expire.url                  = ( "/buggy/" => "access 2 hours", "/asdhas/" => "access plus 1 seconds 2 minutes")

#### rrdtool
# rrdtool.binary = "/usr/bin/rrdtool"
# rrdtool.db-name = "/var/www/lighttpd.rrd"

#### variable usage:
## variable name without "." is auto prefixed by "var." and becomes "var.bar"
#bar = 1
#var.mystring = "foo"

## integer add
#bar += 1
## string concat, with integer cast as string, result: "www.foo1.com"
#server.name = "www." + mystring + var.bar + ".com"
## array merge
#index-file.names = (foo + ".php") + index-file.names
#index-file.names += (foo + ".php")

#### external configuration files
## mimetype mapping
include_shell "/usr/share/lighttpd/create-mime.assign.pl"

## load enabled configuration files,
## read /etc/lighttpd/conf-available/README first
include_shell "/usr/share/lighttpd/include-conf-enabled.pl"

#### handle Debian Policy Manual, Section 11.5. urls
## by default allow them only from localhost
## (This must come last due to #445459)
## Note: =~ "127.0.0.1" works with ipv6 enabled, whereas == "127.0.0.1" doesn't
$HTTP["remoteip"] =~ "127.0.0.1" {
	alias.url += (
		"/doc/" => "/usr/share/doc/",
		"/images/" => "/usr/share/images/"
	)
	$HTTP["url"] =~ "^/doc/|^/images/" {
		dir-listing.activate = "enable"
	}
}

fastcgi.server = ( ".php" => ((    < -- необходимый блок для работы с PHP5-CGI
"bin-path" => "/usr/bin/php5-cgi",
"socket" => "/tmp/php.socket"
)))</uid></status>

Настройка виртуальных хостов

Тут существует несколько способов.
Способ 1

Имеем:
IP: 87.69.172.191
Названия хостов: example.org и subdomain.example.com
Document-root: ~/public_html/site1/
Document-root для example.org: ~/public_html/site1/www/
Document-root для subdomain.example.com: ~/public_html/site1/subdomain1/
Logs: ~/public_html/site1/logs/

Открываем файл /etc/lighttpd/lighttpd.conf:

sudo nano /etc/lighttpd/lighttpd.conf
sudo nano /etc/lighttpd/lighttpd.conf

Document Root:

server.document-root = "/home/www/public_html/site1/"
server.document-root = "/home/www/public_html/site1/"

Указываем IP и порт:

server.port = 80
server.bind = "87.69.172.191"
server.port = 80
server.bind = "87.69.172.191"

В конце файла добавляем

include "example.org.conf"
include "subdomain.example.org.conf"
include "example.org.conf"
include "subdomain.example.org.conf"

Сохраните и закройте файл.

Соответственно нужно создать конфиги, создаём конфиг для example.org:

sudo nano /etc/lighttpd/example.org.conf
sudo nano /etc/lighttpd/example.org.conf

И пишем туда следующее:

$HTTP["host"] =~ "example\.org" {
            server.document-root = "/home/www/public_html/site1/www/"
            accesslog.filename = "/home/www/public_html/site1/logs/access.log"
            server.errorlog = "/home/www/public_html/site1/logs/error.log"
}
$HTTP["host"] =~ "example\.org" {
            server.document-root = "/home/www/public_html/site1/www/"
            accesslog.filename = "/home/www/public_html/site1/logs/access.log"
            server.errorlog = "/home/www/public_html/site1/logs/error.log"
}

Сохраняем и закрываем.

Создаём конфиг для для subdomain.example.org:

sudo nano /etc/lighttpd/subdomain.example.org.conf
sudo nano /etc/lighttpd/subdomain.example.org.conf

И пишем туда:

$HTTP["host"] =~ "subdomain.example\.org" {
            server.document-root = "/home/www/public_html/site1/subdomain1/"
            accesslog.filename = "/home/www/public_html/site1/logs/access_subdomain.log"
            server.errorlog = "/home/www/public_html/site1/logs/error_subdomain.log"
}
$HTTP["host"] =~ "subdomain.example\.org" {
            server.document-root = "/home/www/public_html/site1/subdomain1/"
            accesslog.filename = "/home/www/public_html/site1/logs/access_subdomain.log"
            server.errorlog = "/home/www/public_html/site1/logs/error_subdomain.log"
}

Сохраните и закройте.

Выполните перезагрузку сервера:

sudo /etc/init.d/lighttpd restart
sudo /etc/init.d/lighttpd restart

Способ 2

Всё тоже самое, только вместо того, чтобы подключать конфиги в файле /etc/lighttpd/lighttpd.conf можно вписать само содержимое конфигов внутрь конфигурационного сервера. Оба способа правильные. Например так:

server.document-root = "/home/www/public_html/site1/" 
 
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, index.php" )
 
$HTTP["host"] == "www.example.org" {
  server.document-root = "/home/www/public_html/site1/www/" 
  $HTTP["url"] =~ "^/download/" {
    dir-listing.activate = "enable" 
  }
}
server.document-root = "/home/www/public_html/site1/" 

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, index.php" )

$HTTP["host"] == "www.example.org" {
  server.document-root = "/home/www/public_html/site1/www/" 
  $HTTP["url"] =~ "^/download/" {
    dir-listing.activate = "enable" 
  }
}