Сколько времени у вас есть, чтобы настроить lighttpd? 5 минут? 10 минут? Больше?

5 минут

Хотите запустить быстрый сервер с низким уровнем ресурсов для статического контента? Это просто. Создайте текстовый файл с именем lighttpd.conf следующего содержания:

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 прослушивает TCP-порт 3000 и по умолчанию связывается со всеми интерфейсами. Назначены несколько важных типов MIME
и задается корневой каталог документа (базовый каталог, используемый для всех запросов). Файлы в корне документа должны быть
читается пользователем, запускающим веб-сервер.

Во-первых, проверьте, что ваша конфигурация в порядке:

$ lighttpd -t -f lighttpd.conf

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

$ lighttpd -D -f lighttpd.conf

 

и в браузере http://127.0.0.1:3000/

Чтобы остановить сервер, вернитесь в командную строку и нажмите ctrl-C.

Реальный демон

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

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

Теперь веб-сервер прослушивает порт 80, используемый по умолчанию для HTTP-трафика, и переключается на пользователя www и группу www.
Сервер должен быть запущен как root, чтобы получить контроль над портом 80, но это не обязательно или хорошая идея, чтобы продолжать работать как root после получения порта, поэтому сервер переключается на пользователя www.

Наконец, доступ к просмотру содержимого некоторых типов файлов запрещен, так как они используются для создания динамического содержимого. Запросы непосредственно в каталог переписываются в файл index.html в этом каталоге.

Предполагается, что вы уже создалислужбу /etc/init.d/lighttpd, как описано в разделе "Сценарий инициализации"  InstallFromSource, поместите файл конфигурации в /etc/lighttpd/lighttpd.conf и запустите сервер с помощью:

# /etc/init.d/lighttpd start

Чтобы остановить это, используйте:

# /etc/init.d/lighttpd stop

10 минут

Условия, условия, условия:

Наиболее важной частью конфигурации Lighty является использование условных обозначений. С помощью простых или регулярных выражений можно переопределить значение по умолчанию.

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/" 
}

Теперь у нас есть новый виртуальный сервер, www2.example.org, который использует те же настройки, что и первый сервер, отличается только корень документа.

Следующая конфигурация сервера добавляет область загрузки и включает встроенную функцию списка каталогов:

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

Как вы можете видеть, условные обозначения могут быть вложенными: только папка download и ее подпапки имеют включенные списки каталогов.

Есть также условие else для условных выражений. Несмотря на название, это конструкция else if, похожая на некоторые языки программирования, поскольку за ней должно следовать другое условие.

Вот пример vhosts на основе условий. Else используется для настройки поведения, которое должно присутствовать только в vhost " по умолчанию".

$HTTP["host"] == "example.org" {                                                                                         
  # конкретные варианты example.org
  expire.url = ( "" => "access plus 25 hours" )                                                                                        
} else $HTTP["host"] == "static.example.org" {
  # конкретные варианты static.example.org
  expire.url = ( "" => "access plus 2 weeks" )                                                                                        
} else $HTTP["host"] =~ "" {                                                                                                           
  # параметры, примененные к любым другим vhosts, присутствующим на этом ip 
  # те. параметр по умолчанию
  expire.url = ( "" => "access plus 3 hours" )                                                                                        
} 

еперь, когда мы рассмотрели основы, вы готовы изучить некоторые дополнительные темы, такие как includes и настройка PHP с помощью FastCGI

После 30 минут

Теперь вы знаете основные настройки, как  включать файлы, и, возможно, даже как настроить PHP или Ruby. Но еще столько всего нужно выяснить.

Большинство из них описано в примерах в файле конфигурации по умолчанию, который также можно найти в каталоге doc архива.

Синтаксис конфигурационного файла и полный список параметров конфигурации см. в справочном разделе wiki: справочная документация

Также проверьте наше сообщество.