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

Lighttpd + FastCGI

Автор: AlkoGekS.


Сидя на работе, решил заморочиться и перевести всё с Apache на Lighttpd, так как слышал про него много хороших отзывов, плюсами из которых в первую очередь была быстрота. Ну и к тому же по статье Лиссяры у меня почему то не получилось завести FastCGI на Apache =) Значить сам Бог велел.
Итак приступаем. Ставить соответственно будем из портов.
Перед этим не забываем обновить их, так как совсем недавно версия сервера была обновлена.

#portsnap fetch update

Обновились, следующим шагом переходим в папку с сервером и устанавливаем его.

lexx# whereis lighttpd
lighttpd: /usr/ports/www/lighttpd
lexx# cd /usr/ports/www/lighttpd && make install clean

Вылезает окошко с опциями, я поставил его без опций: "IPV6, OPENLDAP, OPENSSL, VALGRIND, WEBDAV"
Все остальное выбрал.

После окончания установки лезем править конфиг

lexx# cd /usr/local/etc/
lexx# cp ./lighttpd.conf.sample ./lighttpd.conf
lexx# ee ./lighttpd.conf

Сразу бросается в глаза то, что сам конфигурационный файл не такой уж и большой как к  примеру файл апача.
Еще одно мое наблюдение: Некоторые опции отсутвствую в примерах, например для mod_alias. Но все по порядку.
Привожу свой файл lighttpd.conf который полностью рабочий (только опции которые важны для работы, все остальное у меня закоментировано):

## список всех модулей
server.modules              = (
                                "mod_rewrite",
                                "mod_redirect",
                                "mod_alias",
                                "mod_access",
#                               "mod_cml",
#                               "mod_trigger_b4_dl",
#                               "mod_auth",
#                               "mod_status",
#                               "mod_setenv",
                                "mod_fastcgi",
#                               "mod_proxy",
#                               "mod_simple_vhost",
#                               "mod_evhost",
#                               "mod_userdir",
#                               "mod_cgi",
#                               "mod_compress",
#                               "mod_ssi",
#                               "mod_usertrack",
#                               "mod_expire",
#                               "mod_secdownload",
#                               "mod_rrdtool",
                                "mod_accesslog" )

## Алиасы сервера: к примеру http://www.mysite.ru/phpmyadmin/
alias.url += ( "/phpmyadmin/" => "/usr/local/www/phpMyAdmin/" )

## Корневая папка сервера
server.document-root        = "/usr/local/www/"

## Лог ошибок. Автоматически не создается
server.errorlog             = "/var/log/lighttpd.error.log"

# Пример http://www.mysite.ru/index.php
index-file.names            = ( "index.php", "index.html",
                                "index.htm", "default.htm" )

## Где то читал что это важная опция =)
server.event-handler = "freebsd-kqueue"

# Расширения
mimetype.assign             = (
  ".pdf"          =>      "application/pdf",
  ".sig"          =>      "application/pgp-signature",
  ".spl"          =>      "application/futuresplash",
  ".class"        =>      "application/octet-stream",
  ".ps"           =>      "application/postscript",
  ".torrent"      =>      "application/x-bittorrent",
  ".dvi"          =>      "application/x-dvi",
  ".gz"           =>      "application/x-gzip",
  ".pac"          =>      "application/x-ns-proxy-autoconfig",
  ".swf"          =>      "application/x-shockwave-flash",
  ".tar.gz"       =>      "application/x-tgz",
  ".tgz"          =>      "application/x-tgz",
  ".tar"          =>      "application/x-tar",
  ".zip"          =>      "application/zip",
  ".mp3"          =>      "audio/mpeg",
  ".m3u"          =>      "audio/x-mpegurl",
  ".wma"          =>      "audio/x-ms-wma",
  ".wax"          =>      "audio/x-ms-wax",
  ".ogg"          =>      "application/ogg",
  ".wav"          =>      "audio/x-wav",
  ".gif"          =>      "image/gif",
  ".jar"          =>      "application/x-java-archive",
  ".jpg"          =>      "image/jpeg",
  ".jpeg"         =>      "image/jpeg",
  ".png"          =>      "image/png",
  ".xbm"          =>      "image/x-xbitmap",
  ".xpm"          =>      "image/x-xpixmap",
  ".xwd"          =>      "image/x-xwindowdump",
  ".css"          =>      "text/css",
  ".html"         =>      "text/html",
  ".htm"          =>      "text/html",
  ".js"           =>      "text/javascript",
  ".asc"          =>      "text/plain",
  ".c"            =>      "text/plain",
  ".cpp"          =>      "text/plain",
  ".log"          =>      "text/plain",
  ".conf"         =>      "text/plain",
  ".text"         =>      "text/plain",
  ".txt"          =>      "text/plain",
  ".dtd"          =>      "text/xml",
  ".xml"          =>      "text/xml",
  ".mpeg"         =>      "video/mpeg",
  ".mpg"          =>      "video/mpeg",
  ".mov"          =>      "video/quicktime",
  ".qt"           =>      "video/quicktime",
  ".avi"          =>      "video/x-msvideo",
  ".asf"          =>      "video/x-ms-asf",
  ".asx"          =>      "video/x-ms-asf",
  ".wmv"          =>      "video/x-ms-wmv",
  ".bz2"          =>      "application/x-bzip",
  ".tbz"          =>      "application/x-bzip-compressed-tar",
  ".tar.bz2"      =>      "application/x-bzip-compressed-tar",
  # default mime type
  ""              =>      "application/octet-stream",
 )

## Лог доступа. Тоже не создается автоматически, следовательно создаем вручную
accesslog.filename          = "/var/log/lighttpd.access.log"

# Расширения для fastcgi
static-file.exclude-extensions = ( ".fcgi", ".php", ".rb", "~", ".inc", ".pl", ".yml" )

## Пид-файл сервера
server.pid-file            = "/var/run/lighttpd.pid"

# Виртуальные директории
$HTTP["host"] == "www.mysite.su" {
server.document-root = "/usr/home/Mysite/public_html/"
server.error-handler-404 = "/index.php?error=404" }

$HTTP["host"] == "www.mysite2.ru" {
server.document-root = "/usr/home/Mysite2/public_html/mysite2/"
server.error-handler-404 = "/index.php?error=404"}

## Просмотр пустых директорий
dir-listing.activate       = "enable"

## Пользователь, от которого работает сервер
server.username            = "www"

## Группа, от которой работает сервер
server.groupname           = "www"

## Конфигурация FastCGI (не забываем установить сам php)
fastcgi.server = ( ".php" =>( "localhost" =>
                ( "socket" => "/tmp/fcgi",
                     "max-procs" => 2,
                     "bin-environment" => (
                       "PHP_FCGI_CHILDREN" => "4",
                       "PHP_FCGI_MAX_REQUESTS" => "100"
                     ),
                "bin-path" => "/usr/local/bin/php-cgi",
                "broken-scriptfilename" => "enable"
)
)
)

Ну и напоследок, ресурсов стало кушать все это хозяйство намного меньше, работает тоже быстренько. Так что удачи :)



размещено: 2008-03-21,
последнее обновление: 2008-03-22,
автор: AlkoGekS


PbIXTOP, 2008-03-23 в 15:23:47

Все хорошо, но как заставить Lighttpd обрабатывать хосты от имен различных пользователей, чтобы повысить безопасность работы

barsykoff, 2008-06-10 в 16:28:36

to PbIXTOP:
http://trac.lighttpd.net/trac/wiki/Docs%3AModAuth

gx, 2009-02-14 в 3:07:26

server.event-handler = "freebsd-kqueue"
так что это за опция?))

во, 2009-07-24 в 18:55:58

почему то не работают php файлы. вчем проблема подскажет ктонить?

xakep, 2009-11-09 в 1:16:19

статья говно полно недачётов пора бы давно обновить ничего не работает !!

AlkoGekS, 2010-12-10 в 13:16:16

To xakep: Не работает - виновата кривизна рук! Напиши лучше статью, я не против.

вася, 2015-03-27 в 22:57:51

Пошли играть в контру



 

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

© lissyara 2006-10-24 08:47 MSK

Время генерации страницы 0.0486 секунд
Из них PHP: 40%; SQL: 60%; Число SQL-запросов: 77 шт.
Исходный размер: 23337; Сжатая: 6368