lighttpd – истребитель в мире веб-серверов

При использовании VPS-сервера с мощным ограничением памяти у меня встал вопрос – какой веб-сервер использовать? Apache отпал сразу, так как потребляет очень много памяти даже на один ресурс. Попробовал отечественную разработку nginx, намного лучше, но настройка оказалась не тривиальной, приходилось копаться в интернете, чтобы решить довольно простые задачи. И по памяти, хотя и много меньше nginx потреблял чем apache, но как оказалось, есть гораздо лучшее решение.

Если честно, я немного лукавлю, когда говорю, что начинал свои тесты с apache и затем переходил на nginx. Конечно же, это было не так. Еще до заказа VPS-сервера я знал, что буду использовать lighttpd, но нужно было протестировать и остальные сервисы. Что я собственно и сделал. Но уже после того, как досконально обкатал lighttpd…

При использовании в условиях жесткого ограничения памяти lighttpd показал себя только с наилучшей стороны. Он потреблял порядка 5-8 мегабайт памяти на все домены, которые были на него настроены. В отличие от nginx, процесс которого в памяти занимал более 30 мегабайт. Апач при тех же условиях сжирал всю доступную память. И в тоже время настройка lighttpd столь тривиальна, что на ней можно было бы и не останавливаться. Но хочу показать, насколько это просто.

Основная часть VPS-серверов использует Debian, поэтому я буду рассматривать именно эту операционную систему. Настройка в других операционных системах несколько отличается от представленной.

Если VPS-сервер был заказан с установленным апачем, его необходимо отключить и убрать из автозагрузки:

#/etc/init.d/apache2 stop
#update-rc.d -f apache2 remove

Теперь можно приступать к установке легкого веб-сервера:

#apt-get install lighttpd

Начиная с этого момента на сервере уже будет работать lighttpd, осталось его настроить. Разберем возможность использования PHP и MySQL на веб-сервере. Для этого, если это не было сделано заранее, установим необходимые пакеты:

#apt-get install php5-cgi mysql-server mysql-client

При установке mysql-сервера будет запрошен пароль на доступ к серверу. Не забудьте его задать, иначе сервер баз данных будет открыт для доступа из интернета. Теперь нужно только включить модуль fastcgi в lighttpd:

# lighttpd-enable-mod
Available modules: auth cgi fastcgi proxy rrdtool simple-vhost ssi ssl status userdir phpmyadmin
Already enabled modules: auth fastcgi simple-vhost phpmyadmin
Enable module:

Используется команда lighttpd-enable-mod, если запустить ее без параметров, как показано в примере, будут выведены имена всех доступных модулей и предложено включить нужные. Можно сократить немного времени, если сразу задавать команду с параметром в виде имени того модуля, что нужно активировать:

#lighttpd-enable-mod fastcgi

После выполнения этой команды нужно будет перезагрузить веб-сервер:

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

Теперь наш веб-сервер может работать с PHP-скриптами. Проверим. Для этого в корне нашего сайта (по умолчанию все сайты располагаются в /var/www/) создаем файл info.php со следующим содержимым:

<?php
  phpinfo();
?>

И обращаемся к нашему веб-серверу с помощью браузера по адресу www.examples.ru/info.php, в данном случае подразумевается, что www.examples.ru имя сайта, если доменное имя еще не зарегистрировано, можно вместо него обращаться по ip-адресу. В ответ должны получить полную информацию о используемом PHP.

Для отключения модуля используется команда lighttpd-disable-mod.

После перезапуска веб-сервера в памяти будут висеть несколько процессов php-cgi, каждый из которых занимает порядка 30 мегабайт (после оптимизации использования стека оперативной памяти). Количество процессов напрямую зависит от значения переменной max-procs, заданной в файле /etc/lighttpd/conf-available/10-fastcgi.conf, минимальное значение равно единице (1), при этом будет использоваться 2 процесса php-cgi.

По умолчанию fastcgi настроено на обработку файлов .php. Если необходимо использовать perl, python или ruby, необходимо изменять файл /etc/lighttpd/conf-available/10-fastcgi.conf. Например, если необходимо отключить обработку php-файлов и включить python для использования django, приводим его к такому виду:

## FastCGI programs have the same functionality as CGI programs,
## but are considerably faster through lower interpreter startup
## time and socketed communication
##
## Documentation: /usr/share/doc/lighttpd-doc/fastcgi.txt.gz
##                http://www.lighttpd.net/documentation/fastcgi.html

server.modules   += ( "mod_fastcgi" )

fastcgi.server    = (
    "/" => (
        "main" => (
            # Use host / port instead of socket for TCP fastcgi
            "host" => "127.0.0.1",
            "port" => 3033,
            #"socket" => "/tmp/django.socket",
            "check-local" => "disable",
        ))
)

alias.url = (
    "/media" => "/var/www/django/django/contrib/admin/media/",
)

url.rewrite-once = (
    "^(/media.*)$" => "$1",
    "^/favicon\.ico$" => "/media/favicon.ico",
    "^(/.*)$" => "/example$1",
)

Останавливаться на подробностях настройки различных движков я не буду. А перейду сразу к простому использованию виртуальных хостов. В том же apache для использования виртуальных хостов необходимо каждый раз менять конфигурацию сервера и перезапускать его. В lighttpd есть отдельный модуль, который необходимо активировать, настроить, после чего виртуальные хосты можно будет организовывать путем простого создания каталогов. Начинаем:

#vim /etc/lighttpd/conf-available/10-simple-vhost.conf

И проверяем значения переменных simple-vhost.server-root и simple-vhost.document-root:

## Simple name-based virtual hosting
##
## Documentation: /usr/share/doc/lighttpd-doc/simple-vhost.txt
##                http://www.lighttpd.net/documentation/simple-vhost.html

server.modules += ( "mod_simple_vhost" )

## The document root of a virtual host isdocument-root =
##   simple-vhost.server-root + $HTTP["host"] + simple-vhost.document-root
simple-vhost.server-root         = "/var/www"
simple-vhost.document-root       = "/html/"

## the default host if no host is sent
simple-vhost.default-host        = "example.ru"

В данном случае все виртуальные хосты будут располагаться в каталоге /var/www и каждый виртуальный хост содержит в себе папку html, в которой располагаются сами файлы. Теперь активируем модуль виртуальных хостов:

#lighttpd-enable-mod simple-vhost

И после перезапуска веб-сервера, начинаем создавать виртуальные хосты:

#/etc/init.d/lighttpd restart
#mkdir /var/www/test1.ru
#mkdir /var/www/test1.ru/html
#mkdir /var/www/test2.ru
#mkdir /var/www/test2.ru/html

И начинаем заполнять содержимое наших двух, только что организованных сайтов test1 и test2. Естественно, чтобы все работало, данные доменные имена должны быть зарегистрированы. Сразу после создания данных каталогов и создания нужных файлов в каталогах html сайты будут работать. Теперь не нужно для организации нового сайта перезагружать веб-сервер.

Про оптимизацию использования памяти веб-сервером с помощью команды ulimit -s я уже писал в статье VPS-хостинг. А про модуль proxy, который используется для работы в связке с mongrel-сервером я опишу как-нибудь в другой раз.

Как видите, веб-сервер является самым легким из всех существующих решений, которые есть на сегодняшний день. И в то же время его очень просто настраивать. Все тривиально и очень просто!

Похожие записи:

  1. VPS-хостинг
  2. Webmin – управление сервером
  3. SSH авторизация без пароля
  4. zsh – крылья в мире консоли
  5. shared hosting

Метки: debian, lighttpd, vps, хостинг

Отзывов (20) на «lighttpd – истребитель в мире веб-серверов»

  • У меня почему-то это инструкция не работает userdir.path = «public_html»
    У меня при localhost/~username/ вы дается 404 ошибка,хотя какталог есть
    Апач нормально работает.Не подскажите.Уже все доки перечитал

  • Поподробнее опишите проблему, покажите свой конфиг lighttpd, по какому адресу обращаетесь?

  • А у вас однако сейчас на этом сайте:
    $ wget -S –spider juev.ru

    Server: Apache

    Сорри если я излишне любопытен :)
    Так вы просто здесь не используете lighttpd или вообще отказались или это не правильно показывает? Просто сам щас выбираю что лучше lighttpd или nginx поставить на маленький vps, где будут обычные сайты на WordPress и Joomla, чтобы быстрее работали «летали и не падали» :)

  • На самом деле все очень просто. С VPS я ушел и давно уже. Сейчас использую обычный шаред хостинг, правда американский. За три месяца одна авария произошла с оборудованием, два дня сайт был в дауне, во всем остальном проблем нет. За два дня дауна начисляют дополнительный месяц хостинга.
    На данный момент на хостинге крутятся три рабочих сайта, все используют wordpress, на php выделяется 64 мегабайта на каждый процесс. Короче я доволен.

    Если выбирать между lighttpd и nginx – нужно брать то, что лучше всего знаете, и с чем у вас не возникнет проблем с настройкой.
    Кстати, сколько памяти на VPS? И сколько сайтов собираетесь на ней использовать? И почему выбрали именно VPS?

  • Просто последний хостер американский scalahosting, где у меня сайты были, начал руки выкручивать. Один раз просто без предупреждения взял выключил весь хостинг. Там, видите ли, один сайт превышал лимит по загрузке процессора. И это при том реселлинг был, который я брал с расчетом что там лимиты должны быть выше чем на обычном шареде. А там оказалось так же как на шареде. Потом, только когда я обратился, предложили перейти на план выше. Что главное, когда я согласился, перевели сайты на другой сервер, да и то некоторые потеряли, пришлось заново многое настраивать. Но сайты стали действительно летать на новом плане. Но мне не захотелось платить в три раза больше – 20$, да ещё с таким наездом. Ну и хорошо думаю, я всё равно давно хотел свой сервер где не будет 150 сайтов на одном IP. У меня просто много проектов и некоторые хочу чтобы росли до очень больших. И сейчас просто очень много предложений нормальных VPS по цена шареда. Только минус то, что там настраивать надо всё самому, а не так как на шареде всё готовое. Вот я думаю и потренируюсь на VPS, пока проекты будут расти, перед тем как дэдик брать. В общем чтобы и без сюрпризов что я там кто-то кому-то перегрузил, все что есть ресурсы мои. Сейчас 256 MB памяти 600 MHz CPU на VPS.

  • Я использую провайдера justhost, пока проблем не было, не считая конечно аварии. Но поддержка очень четко работает.
    Тебе просто не повезло. Бывает.
    20$?? Это за год? Или это разница в цене? У меня порядка 85$ в год выходит. Это сам тарифный план + SSH + расширенные ресурсы. Правда это все со скидкой в 50% +)
    Если в планах крупные проекты, тогда в любом случае свой сервер нужно брать. При очень хорошей посещаемости шаред уже не очень хорошо себя ведет.
    И сколько платишь за такой сервер? И сколько сайтов планируешь размещать на нем??

  • Там 20$ это за месяц на реселлерском тарифе повышенном, типа как вип. Сейчас за свой VPS я плачу 240 рублей, это он на сервере в Германии, я именно там хотел. А вообще знаю, есть американские, ещё дешевле. У меня сейчас 15 сайтов, большая часть пока в проекте, только домены, но думаю ещё 5 завести :)

  • Дешевле брать не стоит. За дешевизной обычно стоят проблемы и не малые. Уже познал на своем опыте.
    15 сайтов? И все на 256 метров памяти и 600 MHz CPU?? о_О
    Что-то мне подсказывает, что серьезные проекты работать просто не будут. На таком серваке обычно один нагруженный сайт оставляют. Не более, а часто берут несколько серверов и распределяют нагрузку между ними.
    А тут 15!

  • Ну попробую, эти же сайты не все сразу в огромные вырастут, я не тороплюсь. А потом всегда ведь можно увеличить тариф на VPS где будет больше ресурсов. А дальше уже и на дэдик сайты перенести. Благо что VPS дает опыт работы с сервером.

  • По ходу освоения мной сервера и установки сайтов выяснилось, что например Joomla, чтобы включить в ней ЧПУ требует сервер Apache с модулем mod_rewrite. Так, погуглив на тему lighttpd + mod_rewrite нашел, что настройка ЧПУ в lighttpd оказалась не тривиальной задачей. Там, насколько я понял, настройка lighttpd для одного движка сайта может быть одна, для другого другая. А как быть если я много сайтов хочу под lighttpd запустить? Интересно, может есть универсальная настройка lighttpd, чтобы на многих CMS ЧПУ работали?

  • Должна быть одна, универсальная. Так как даже работа множества сайтов организуется довольно просто через виртуальные каталоги.
    Но более точно не могу ответить.
    А почему кстати выбрали именно joomla??

  • Вот как раз столкнулся с реврайтом..
    _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
    RewriteEngine On
    RewriteBase /

    RewriteRule ^(.*)$ 1.php?path=$1 [L,QSA]
    _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

    Может вы посоветуете, как такое реализовать под lightTPD?

  • Если честно, я давно уже отошел от использования собственного сервера и соответственно lighttpd.
    Практики нет, забывается уже все.
    Не могу ответить на ваш вопрос.

  • Пока нет доступа к VDS, – на работе)
    Но вроде бы нашел. http://redmine.lighttpd.net/wiki/1/Docs:ModRewrite#Examples

  • Пусть ссылочка останется, пригодится!
    Спасибо большое!

  • Какие конфигурации script необходимые для установки на Lighttpd сервер ЧПУ ?
    Я нашла только конфигурации форума и хостинг администратор говорит, что это не работает
    _http://www.dle-files.ru/forum/textversion.html?t108
    сайты построен на DLE

  • Прошу прощения, я давно уже не работал с данным веб-сервером, не могу ответить на ваш вопрос.

  • Может быть, вы знаете, кто мог бы мне помочь?

  • По сути DLE построен на php, можно просто посмотреть статьи по организации ЧПУ в lighttpd, например http://www.akhundzade.ru/2010/04/lighttpd-apache-lighttpd.html
    Ну и поискос в гугле. Более точно не могу сказать, знакомых нет, кто работал бы на данном веб-сервере, и с DLE я ни разу не сталкивался.

  • Google, я уже ищу информацию, но я не нашла ничего подходящего. Но большое спасибо мере ответов и link

Вы можете оставить свой комментарий...

Имя (required)
Почта (обязательно)
Сайт