Немного про lighttpd, самую малость...

Очень долго я пользовался веб сервером apache. Он меня в принципе устраивал полностью, пока сервер не начал перегружаться. Вдумчивый просмотр логов, долгое курение манов и никакого толку - много ресурсов в никуда, а точнее на кучу его дочерних процессов, на юзера по процессу. Время шло, количество пользователей росло и нагрузка тоже поэтому, я решил попробовать LightTPD. Сказать по правде, радости моей не было предела.

Во первых, отпала возможность в таких извращениях - http://the-bosha.ru/2009/10/03/apache-vhost/. Во вторых заметно выросла производительность. Она приблизилась пожалуй даже к скорости nginx (его кстати решил не ставить, ибо не было времени на то, чтобы разобраться с ним), но это, конечно, субъективно =]

Подробно останавливаться на настройке lighttpd я не буду. Лишь вкратце. Ничего сложного в этом нет. Я вообще хотел написать небольшой пост про пару найденных, удобных фич и подводных камней, но вышло как всегда =]

Итак, ставим lighttpd и все необходимое:

sudo aptitude install lighttpd mysql-server mysql-client rrdtool php5-cgi php5-mysql php5-gd php5-curl php5-cli php5-imagick php5-mcrypt imagemagick

Это установит lighttpd с нужными php5 и mysql модулями для работы. Mcrypt для шифрования, imagemagic, php5-gd для отображения графики, rrdtool для работы cacti (если понадобиться), и конечно же mysql со всем необходимым.

В процессе установки у вас спросят пароль для root пользователя mysql баз данных.
Для правильной работы lighttpd и php:

sudo echo "cgi.fix_pathinfo = 1" >> /etc/php5/cgi/php.ini

Можно конечно просто просто найти и раскоментить нужную строчку, но мне проще так =]

Включим нужные модули:

sudo lighttpd-enable-mod simple-vhost

Замечательный кстати модуль. Достаточно просто прописать в днс адрес сервера, и создать директорию с именем домена в папке веб сервера, и домен сразу рабочий. Без перезапуска веб сервера, без каких либо еще лишних телодвижений.

Открываем файл /etc/lighttpd/conf-enabled/10-simple-vhost.conf и смотрим что бы все выглядело примерно так:

## 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 = "www.example.com"

В принципе тут все понятно и не раз было в других манах, но тут я встретился с одной сложностью. Дело в том, что для работы основных доменов, например simplehost.ru, я просто создавал директорию с таким же именем и домен был доступен по этому адресу, но если написать www.simplehost.ru, то попадали на стартовую страницу lighttpd, т.е. в корень веб сервера. Можно было конечно просто создать симлинки, но мне было жууутко лень. На каждый хост создавать симлинк, тем более что делал это не я а вебмастер. Я долго читал документацию, мучил гугль и в итоге победил. Хотя решение было всего в паре строк:

$HTTP["host"] =~ "^www\.(.*)" {
    url.redirect = ( "^/(.*)" => "http://%1/$1" )
}

Их мы добавляем в файл /etc/lighttpd/conf-enabled/10-simple-vhost.conf.

Затем включим модуль для редиректа и остальные необходимые модули в файле /etc/lighttpd/lighttpd.conf:

[...]  
 server.modules = (  
 "mod\_access",  
 "mod\_alias",  
 "mod\_accesslog",  
 "mod\_compress",  
 "mod\_fastcgi",  
 "mod\_rewrite",  
 "mod\_redirect",  
 "mod\_rrdtool",  
 [...]

Там же раскоментируем еще пару нужных строчек:

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

Итак.. Базовый сервер полностью готов к работе.

После этого, первое что нам необходимо сделать, это выключить поддержку ipv6. Т.к. это нигде не используется, может вызвать некоторые сложности. Везде написано целая куча про это, но на практике достаточно в файле /etc/modules.d/aliases закоментировать строчки:

alias net-pf-10 ipv6

И выполнить sudo update-modules.

Следующее с чем я столкнулся это с поддержкой .htaccess файлов. Способа без правки конфига я не нашел. Откроем файл и добавим в него примерно следующее:

auth.backend = "htpasswd"  
 auth.backend.htpasswd.userfile = "/var/www/passwd"  
 auth.require = ( "/cgi-bin/" =>  
 (  
 "method" => "basic",  
 "realm" => "This directory protected!,  
 "require" => "valid-user"  
 )  
 )

auth.backend.htpasswd.userfile это путь до файла с паролями
auth.require это директория для входа в которую нужен будет пароль.

Файл с паролями должен быть доступен для чтения веб серверу. И необходимо создать файл с паролями

sudo htaccess -c /var/www/passwd user_name

Главное если добавлять пользователя, то надо убрать параметр -c, он нужен только для создания файла.

В общем это все, что я хотел рассказать. Для меня lighttpd стал глотком свежего воздуха после apache.


Понравилась статья? Поделись с друзьями!




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