Мы — долго запрягаем, быстро ездим, и сильно тормозим.
www.lissyara.su —> статьи —> FreeBSD —> WWW —> Lighttpd + Apache

Lighttpd + Apache

Автор: helloworld.


Был сервер с виртуалхостами на обычной связке Apache,PHP,MySQL.
Увы с увеличением количества виртуалхостов, Apache стал загружать систему под 100%. Но от таких вкусных вещей как mod_rewrite отказываться не хотелось.
В этой статье покажу как можно сделать связку Lighttpd + Apache. Весь статический контент сайтов (картинки, видео, музыка и т.д.) будет раздавать Lighttpd (с чем web-сервер справляется на отлично, youtube.com, wikipedia.org и др. тому пример), всю динамику (php, cgi скрипты) будем перенаправлять к Apache.

В этой статье я НЕ буду описывать как установить Apache,php,mysql в одно единое. С настройкой можете ознакомиться в этом разделе по след статьям:
Apache2 + php5 + mod_fastcgi
Настройка хостинга под apache + PHP + MySQL

Установка и настройка Lighttpd.


# cd /usr/ports/www/lighttpd
# make install clean
# cd /usr/local/etc/
# cp ./lighttpd.conf.sample ./lighttpd.conf
# ee ./lighttpd.conf

Редактируем файл /usr/local/etc/lighttpd.conf. Так как Lighttpd будет обрабатывать только статику, настроек по минимуму:

server.modules = (
“mod_rewrite”,
“mod_redirect”,
“mod_alias”,
“mod_access”,
“mod_proxy”,
“mod_accesslog” )

Общая настройка Lighttpd описана в этой статье.
Добавим в конце файла последнее:


$HTTP["url"] =~ "^.*(html|php|cgi|/|\?|\?.*)$" {
proxy.server = ("" => ( (
"host" => "127.0.0.1",
"port" => 8080 ) ) )
}

Все скрипты, оканчивающиея на .php,.cgi отправляем на Apache.

В конфиге Apache httpd.conf нужно всего лишь изменить следующие строки:


Listen 127.0.0.1:8080
Port 8080

На этом настройка связки закончена.
Не забудьте добавить в /etc/rc.conf: lighttpd_enable="YES"

Если вы используете несколько виртуальных хостов в httpd.conf, то их нужно описать и в lighttpd.conf.
На пример, домен - www.domain.com
Добавим в lighttpd.conf:


$HTTP["host"] =~ “(^|\.)domain\.com$” {
server.document-root = “/usr/home/user/public_html/domain.com”
accesslog.filename = “/usr/home/user/log/access.log”
server.errorlog = “/usr/home/user/log/error.log”
}

Accesslog и Errorlog можно обрабатывать через WebAlizer, Awstats и др.
Несколько очень полезных ссылок:
1. Lighttpd and Joomla - A How To
2. Howto: Lighttpd web server setting up virtual hosting

Если есть желание поиграться с оптимизацией отдачи файлов через Lighttpd, можете поэкспериментировать со следующими настройками в lighttpd.conf:

server.max-worker=50
server.max-keep-alive-requests=250
server.max-keep-alive-idle=120
server.max-read-idle =120

P.S.: Я ни в коем случае не хочу устраивать Hollywar по поводу использования других связок по типу Nginx + FastCGI, Nginx frontend + Apache backend, Lighttpd + FastCGI. Каждый выбирает своё и под свои нужды.
Несколько слов о преимуществе использования описанной выше статьи Lighttpd frontend + Apache backend.
Пишет один из администраторов крупной зарубежной хостинговой компании:
Right out of the box, Lighttpd blew Apache away in terms of throughput. The problem with it is that it uses a LOT of CPU power. Durring the past high traffic event, my server was averaging around 50 hits/second while using 100% of dual - dual core Xeons. Then I came across two directives, server.event-handler and server.network-backend. You will have to set these based on your OS, as seen here , but what a difference. Once I restarted Lighttpd, I saw average traffic jump to over 125 hits/second, with a CPU time of 25% and under. What a difference! The switch to Lighttpd can be a lot of work, and a headache at times, but it’s WELL worth it for speed and performance!

Моя статья на английском.

Комментарии приветствуются.





размещено: 2009-02-10,
последнее обновление: 2009-02-10,
автор: helloworld


NARKOZ, 2010-01-05 в 21:42:32

Не работает.



 

  Этот информационный блок появился по той простой причине, что многие считают нормальным, брать чужую информацию не уведомляя автора (что не так страшно), и не оставляя линк на оригинал и автора — что более существенно. Я не против распространения информации — только за. Только условие простое — извольте подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой, незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
  Если соизволите поставить автора в известность — то вообще почёт вам и уважение.

© lissyara 2006-10-24 08:47 MSK

Время генерации страницы 0.0356 секунд
Из них PHP: 20%; SQL: 80%; Число SQL-запросов: 77 шт.
Исходный размер: 17588; Сжатая: 5652