Lighttpd

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 18:50, 30 мая 2018.
lighttpd
249px-Lighttpd logo.svg.png
Разработчики: Ян Кнешке
Постоянный выпуск: 1.4.49 / 11.03.2018
Операционная система: UNIX-подобные, Microsoft Windows
Тип ПО: Веб-сервер
Веб-сайт lighttpd.net
lighttpd — один из веб-серверов, разрабатываемый и оптимизированный с расчётом на работу в требовательных ко скорости средах, не теряя при этом безопасности и гибкости, а также совместимости со стандартами. Представляет собой свободное программное обеспечение, распространяемое по лицензии BSD. lighttpd работает в Linux и других UNIX-подобных операционных системах, а также в Microsoft Windows.

Невысокий объем требуемой памяти (по сравнению с другими веб-серверами), небольшая нагрузка на процессор и хорошая оптимизация скорости работы делают lighttpd подходящим для серверов, которые страдают проблемами высокой нагрузки, или для обслуживания статических модулей средств массовой информации (СМИ) отдельно от динамически изменяющегося контента (пример - использование для загрузки картинок и превью видео на Youtube).

Сообщества разработки таких языков, как Python, Perl, Ruby и Lua уделяют немалое внимание этому веб-серверу.

lighttpd (произносится как "lighty")-это веб-сервер с открытым исходным кодом, оптимизированный для критически важных сред, оставаясь при этом совместимым со стандартами, безопасным и гибким. Он был первоначально написан Яном Кнешке в качестве доказательства концепции проблемы c10k - как обрабатывать 10 000 соединений параллельно на одном сервере, но приобрел всемирную популярность.По другому его называют"httpd".

Особенности

  • Балансировка нагрузки Поддержка FastCGI, SCGI и HTTP-прокси
  • поддержка Chroot
  • Производительность механизма событий веб-сервера - select (), poll () и epoll ()
  • Поддержка более эффективных схем уведомления о событиях, таких как kqueue и epoll
  • Условное переписывание URL (mod_rewrite)
  • TLS/SSL с поддержкой SNI через OpenSSL
  • Аутентификация сервера LDAP
  • Статистика RRDtool
  • Загрузка на основе правил с возможностью использования сценария только для проверки подлинности
  • Серверная сторона Включает поддержку (но не серверный CGI)
  • Гибкий виртуальный хостинг
  • Поддержка модулей
  • Cache Meta Language (в настоящее время заменяется mod_magnet) с использованием языка программирования Lua
  • Минимальная поддержка WebDAV
  • Поддержка сервлета (AJP) (в версиях 1.5.x и выше)
  • HTTP-сжатие с использованием mod_compress и нового mod_deflate (1.4.42)
  • Легкий (менее 1 МБ)
  • Однопроцессорный дизайн с несколькими потоками. Никаких процессов или потоков для каждого соединения.

Использование

Низкий объем памяти (по сравнению с другими веб-серверами), небольшая загрузка процессора и оптимизация скорости делают lighttpd подходящим для серверов, которые испытывают проблемы с загрузкой, или для обслуживания статических носителей отдельно от динамического контента. lighttpd - бесплатное программное обеспечение с открытым исходным кодом и распространяется под лицензией BSD. Он запускается изначально в UNIX-подобных операционных системах, а также в Microsoft Windows.

Поддержка приложений

lighttpd поддерживает внешние интерфейсы FastCGI, SCGI|SCGI и CGI, позволяя веб-приложениям, написанным на любом языке программирования, использоваться с сервером. Как особенно популярный язык, производительность PHP получила особое внимание. FastCGI Lighttpd может быть настроен на правильную и эффективную поддержку PHP с кэшами операций (например, APC). Кроме того, он получил внимание от своей популярности в сообществах Python, Perl, Ruby и Lua. Lighttpd также поддерживает WebDNA, отказоустойчивую базу данных в базе данных, предназначенную для создания веб-сайтов, управляемых базами данных. Это популярный веб-сервер для веб-фреймворков Catalyst и Ruby on Rails. Lighttpd не поддерживает ISAPI.

Производительность

Проект lighttpd начался со стремления автора реализовать веб-сервер, который мог бы выдержать одновременно 10 тысяч соединений. lighttpd использует так называемую асинхронную обработку сетевых соединений. Благодаря этому загруженность сервера (в отличие от Apache) при доступе к файлам на диске не зависит от количества текущих соединений.

В lighttpd возможно использование особых системных вызовов для повышения производительности при передаче файлов. При этом задействуются не стандартные системные интерфейсы, а специфичные для платформы вызовы ядра операционной системы, и смена контекста CPU сводится к минимуму.

Проекты, использующие lighttpd

Зачастую lighttpd (как и имеющий схожую архитектуру Nginx) используется для отдачи статического содержимого, в то время как его генерацией занимается более сложный веб-сервер.

  • Яндекс — использует lighttpd в некоторых своих проектах: Карты, Маркет.
  • Google — в своих проектах, в частности s.ytimg.com, который отдает все картинки для youtube.com, в том числе все превью для видео (в трех разрешениях) — использует lighttpd-yt (модификация от Google).
  • Википедия — использует lighttpd как кэширующий прокси-сервер (для отдачи статического содержимого).
  • WOT — использует lighttpd на своих серверах.
  • Ubuntu — использует lighttpd на некоторых серверах обновлений

Lighttpd используется несколькими сайтами с высоким трафиком, среди которых Bloglines и xkcd. Он использовался в прошлом Meebo и YouTube. Фонд Wikimedia также запускает серверы Lighttpd

История создания

Проект lighttpd начался со намерения автора - немецкого разработчика MySQL Яна Кнешке (Jan Kneschke) предоставить доказательство возможности решения заинтересовавшей его так называемой проблемы 10000 соединений. Для этого был написан веб-сервер, который мог бы выдержать одновременно 10 тысяч соединений[Источник 1]. Сервис был спроектирован как один процесс с одним потоком и неблокирующимся вводом-выводом. Вместо select были применены быстрейшие обработчики событий в целевой системе: poll, epoll, kqueue или /dev/poll. В качестве системных вызовов были выбраны безэкземплярные, такие как sendfile вместо read и write. В течение нескольких месяцев lighttpd стал обрабатывать статичные файлы быстрее, чем Apache.

Следующим шагом была обработка динамических CGI-приложений, в частности PHP. Кнешке "сдул пыль" с FastCGI, который был разработан Open Market еще в первые годы существования интернета, в целях улучшения работы CGI. Вместо запуска веб-сервером той же внешней CGI-программы при каждом вызове, FastCGI по существу был демоном для предварительного запуска CGI-приложения и управления связью между ним и веб-сервером. Это было быстрее на тот момент времени, но Perl и PHP позже были внедрены в Apache в качестве модулей, которые показали даже более высокую скорость работы и получали доступ к внутренним действиям Apache по обработке HTTP. FastCGI для Apache стали пренебрегать, но после того, как он был добавлен в lighttpd и к нему подключили PHP, его производительность сравнялась или даже стала превышать ту, что показывал Apache с mod_php. В качестве дополнения, в реализацию lighttpd была добавлена автоматическая балансировка загрузки.

Первая версия была выпущена в марте 2003 года. Неожиданно сервис приобрел популярность, и его разработка была продолжена.

Производительность

lighttpd использует так называемую асинхронную обработку сетевых соединений. Благодаря этому загруженность сервера (в отличие от Apache) при доступе к файлам на диске не зависит от количества текущих соединений. В lighttpd возможно использование особых системных вызовов для повышения производительности при передаче файлов. При этом задействуются не стандартные системные интерфейсы, а специфичные для платформы вызовы ядра операционной системы, и, таким образом, смена контекста CPU сводится к минимуму.

Сервис способен автоматически балансировать нагрузку, она может, в частности, распределяться по нескольким запущенным серверам lighttpd.

Установка

Пример установки дистрибутива lighttpd под Linux (где 1.4.хх - номер версии и сборки):

# tar xvzf lighttpd-1.4.хх.tar.gz
# cd lighttpd-1.4.хх
# ./configure
# make
# make install

Пример установки lighttpd на Ubuntu

Ссылки

Источник

  1. История создания lighttpd // lighttpd [2018]. Дата изменения: 30.01.2007. URL: http://www.lighttpd.net/story (Дата обращения: 23.05.2018).