Веб-сервер lighttpd


До недавнього часу, Apache не мав серйозних конкурентів з відкритим вихідним кодом. В останньому огляді веб-серверів, проведеному Netcraft, ми можемо бачити щось нове. Як і зазвичай, Apache очолює список, Microsoft IIS другий, а знаменитий unknown - третій. Четвертим є Sun Java Web Server (раніше відомий як ONE, колишній iPlanet, колишній Netscape). Але п'ятим номером, обслуговуючи близько 1,4 мільйона сайтів, щось під назвою lighttpd. Звідки це взялося? Ми вивчимо історію lighttpd, початкову установку і настройку, а також деякі погляди на майбутнє проекту.

Ви можете вимовляти цю назву як лайт-ти-пі-ді або, менше плюючи, лайти. Як би ви не говорили / випльовували назва цього веб-сервера, ви знайдете багато інформації на його веб-сайті, вики, блозі, або на форумах. lighttpd проектувався як високоефективний веб-сервер з низьким використанням ресурсів. Він використовує набагато менше пам'яті, ніж Apache і, як правило, працює швидше. lighttpd тихо підсилює багато високонавантажених сайтів, включаючи YouTube, Wikipedia, Meebo і A List Apart; ви побачите, що він часто використовується замість Apache разом з популярними інструментами, такими як Ruby on Rails і Trac.


Що не так з Apache?

Не дивлячись на свою популярність, іноді використання Apache не є найкращим рішенням. Apache надає різні Мульти-Процесні Моделі (MPMs) для використання в різних середовищах роботи. Модель prefork - найбільш популярна в Linux - створює певне число процесів Apache при його запуску і керує ними в пулі. Альтернативною моделлю є worker, яка використовує кілька потоків замість процесів. Хоча потоки легше, ніж процеси, ви не можете їх використовувати до тих пір, поки весь ваш сервер не буде безпечний для потоків (thread safe). Хоча Apache і mod_php - безпечні для потоків, це не гарантує, що всі сторонні модулі можуть використовуватися. Сайт PHP не схвалює використання Apache 2 з потокової MPM; це уповільнює перехід розробників з Apache 1.3 на 2.x. А модель prefork має свої проблеми: кожен процес (Apache + PHP + сторонні модулі) займає багато пам'яті (30 МБ не є чимось незвичайним). Коли ви збільшуєте число одночасних процесів Apache, доступна вам пам'ять може швидко закінчитися.


lighttpd в тумані.

Наступним кроком було обробити динамічні (CGI) додатки, зокрема PHP. Кнесчке здув пил з FastCGI, розробленому Open Market в самих ранніх днях існування інтернету, з метою поліпшення роботи CGI. Замість того, щоб веб-сервер запускав ту ж зовнішню CGI-програму при кожному виклику, FastCGI по суті був демоном для попереднього запуску CGI-програми та управління зв'язком між ним і веб-сервером. Це було швидше, але Perl і PHP пізніше були впроваджені в Apache в якості модулів, які були навіть швидше і отримували доступ до внутрішніх дій Apache по обробці HTTP. FastCGI для Apache став нехтувати, але після того, як він був доданий в lighttpd і до нього підключили PHP, його продуктивність дорівнювала або перевищувала ту, що показував Apache з mod_php. Як доповнення, в реалізацію lighttpd була додана автоматична балансування завантаження.

Давайте встановимо lighttpd і поколупатися в ньому образними паличками. Сторінка установки на вікі дає приклади установки бінарників або з початкових кодів для різних дистрибутивів Linux. Для розробників з волохатими грудьми (це волосся не обов'язково повинні бути вашими), повна установка з початкових кодів виглядає так:

# Tar xvzf lighttpd-1.4.13.tar.gz


Це встановить lighttpd в / usr / local. Якщо збірка не вдалася, перевірте, що необхідні пакети розробки pcre і zlib встановлені у вашій системі.

Якщо ви хочете запускати і зупиняти lighttpd вручну, то вперед. А щоб встановити lighttpd як сервіс на кшталт Apache, відредагуйте і встановіть скрипт ініціалізації:


# Sed -e # 'S / FOO / lighttpd / g #' doc / rc.lighttpd> lighttpd.init

# Chmod a + rx lighttpd.init

# Cp lighttpd.init /etc/init.d/lighttpd

# Cp -p doc / sysconfig.lighttpd / etc / sysconfig / lighttpd

# Install -Dp ./doc/lighttpd.conf /etc/lighttpd/lighttpd.conf

# Chkconfig lighttpd on

На вигляд синтаксис файлів настройки lighttpd може мати відмінності від Apache. Приклади зі сторінки настройки з вікі виглядають більше схожими на Perl (або PHP, або Python), ніж чим на стиль XML httpd.conf в Apache. Для простого сайту із статичними файлами, вам потрібно вказати ті ж речі, що і в Apache: document root, розташування access і error логів і імена user і group для роботи сервера. Ось еквівалентні варіанти Apache (httpd.conf) і lighttpd (lighttpd.conf):
Apache:

lighttpd не підтримує файли .htaccess, так що вам потрібно вказувати всі налаштування в файлі lighttpd.conf, або в файлах, до нього підключеним. Він розуміє файли користувачів Apache для простої і загальної аутентифікації, але підтримка групових файлів ще не реалізована. Ось приклад, як захистити паролем високорівнева каталог під назвою special:
Apache:

AuthName "My Special Directory"

lighttpd:
auth.backend = "htpasswd"

auth.require = ( "/ special /" =>

"Method" => "basic",