Итак, скачиваем снепшот (с официального зеркала или с нашего - не важно, и там и тут последние версии имеются), распаковываем его и собираем:
Код: Выделить всё
# wget http://lighttpd.sysadmins.el.kg/lighttpd/snapshots-2.0.x/lighttpd-2.0.0-snap-20110509-g259cdb.tar.gz
#tar -xvf lighttpd-2.0.0-snap-20110509-g259cdb.tar.gz
#cd lighttpd-2.0.0-snap-20110509-g259cdb/lighttpd-2.0.0
#./configure --build=x86_64-redhat-linux-gnu --host=x86_64-redhat-linux-gnu --target=x86_64-redhat-linux-gnu --program-prefix= --prefix=/usr/local --exec-prefix=/usr/local --bindir=/usr/local/bin --sbindir=/usr/local/sbin --sysconfdir=/usr/local/etc --datadir=/usr/local/share --includedir=/usr/local/include --libdir=/usr/local/lib64 --libexecdir=/usr/local/libexec --localstatedir=/usr/local/lighttpd --sharedstatedir=/usr/local/lighttpd/lib --mandir=/usr/local/share/man --infodir=/usr/local/share/info --libdir=/usr/local/lib64/lighttpd
(У меня x64 архитектура, я задал префикс /usr/local, дабы не создавать каши в структуре. Кстати, lighttpd2 требует пакет ragel, установить его можно так
#rpm -Uvh http://elders.princeton.edu/data/puias/unsupported/6/x86_64/ragel-6.6-2.puias6.x86_64.rpm)
#make && make install
В /usr/local/etc создаем файл angel.conf следующего содержания:
Код: Выделить всё
instance {
user "lighttpd"; # Пользователь от которого все это дело запускаем
max-open-files 16384; # Лимит файлов
binary "/usr/local/libexec/lighttpd2/lighttpd2-worker"; # Путь к файлу воркера
config "/usr/local/etc/lighttpd.conf"; # Путь к сонфигу воркера
modules "/usr/local/lib64/lighttpd/lighttpd-2.0.0"; # Путь в папку с модулями
copy-env ( "PATH" );
# env ( "G_SLICE=always-malloc", "G_DEBUG=gc-friendly" );
# wrapper ("/usr/bin/valgrind", "--leak-check=full", "--show-reachable=yes", "--leak-resolution=high" );
}
Код: Выделить всё
setup {
# Рассказываем ему какие модули подтягивать
module_load (
"mod_accesslog",
"mod_balance",
"mod_proxy"
);
# Обьясняем что слушать
listen "0.0.0.0:80";
listen "[::]:80";
# Ну, с логами думаю все понятно
log = ["debug": "", "*": "/usr/local/var/error.log"];
accesslog = "/usr/local/var/access.log";
accesslog.format = "%h %V %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"";
# Файл mimetypes.conf по дефолту лежит в папке с исходниками, копировать придется вручную
include "/usr/local/etc/mimetypes.conf";
static.exclude_extensions = ( ".php", ".pl", ".fcgi", "~", ".inc" );
}
# Собственно сам балансир. Пока существует 2 вида балансировки - balance.rr (RoundRobin, то есть тупо разброс запросов на бекенды) и balanse.sqf (формирование очереди запросов на каждый сервер), какой из них будет удобен вам - решать только вам.
balance.sqf (
${ proxy "192.168.50.3:80"; }, # Бэкенд №1
${ proxy "192.168.50.2:80"; } # Бэкенд №2
);
Код: Выделить всё
#/usr/local/sbin/lighttpd2 -c /usr/local/etc/angel.conf
Теперь при обращении на IP 192.168.0.1 вы будете попеременно попадать то на 192.168.0.2, то на 192.168.0.3
P.S. Чуть не забыл - директории под логи и прочую муть имеющуюся в конфиге придется создать тоже ручками))).