Немного про 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.