Lighttpd (wym. lighty) to serwer HTTP dostosowany do pracy nawet pod dużym obciążeniem. Jego konfiguracja jest w miarę prosta i logiczna, jednak użytkownicy i administratorzy Apache muszą się “przestawić”. Wszędzie obecna wojna exim ↔ postfix, irssi ↔ BitchX, przeszła i na grunt serwera http i mamy nową wojnę pt. Apache ↔ lighttpd którą wygrywa - nignx :). Pod względem wydajności nginx bije wszystkich na głowę, jednak posiada dość specyficzne podejście do konfiguracji, przez co jest przeznaczony dla bardziej zaawansowanych użytkowników i do serwisów które generują bardzo duże obciązenie. W tym artykule pokażemy, jak skonfigurować Lighttpd wraz z obsługą virtual host i php serwowanym przez fast-cgi.
Podstawowa instalacja w PLD ogranicza się do wklepania:
# poldek -i lighttpd [...] Run "/sbin/service lighttpd start" to start LigHTTPd webserver.
Właściwie serwer jest już gotowy, wystarczyłoby go teraz wystartować, przyjrzyjmy sie jednak kilku podstawowym opcjom w pliku
# vim /etc/lighttpd/lighttpd.conf
Jeśli dysponujemy kilkoma adresami IP, a chcemy by lighttpd słuchał tylko na jednym z nich, zmieniamy zawartość:
server.bind = "60.22.121.11"
Możemy również sprawić, by lighttpd przedstawiał się inaczej, poprzez zmianę server header:
server.tag = "lighttpd superserver"
Teraz już możemy przetestować czy to działa:
# service lighttpd start Uruchamianie usługi lighttpd......................................[ ZROBIONE ]
Po sprawdzeniu w przeglądarce www czy wszystko działa, możemy spróbować skonfigurować pierwszego virtualnego hosta na lighttpd.
Na początku instalujemy niezbędny moduł:
# poldek -i lighttpd-mod_simple_vhost [...] Przeładowanie usługi lighttpd.................................... [ ZROBIONE ]
Następnie edytujemy plik /etc/lighttpd/conf.d/50_mod_simple_vhost.conf i dopisujemy (najlepiej na samym dole):
$HTTP["host"] == "pld.thinkspire.org" {
server.document-root = "/usr/share/dokuwiki"
}
zmieniając oczywiście konkretną ścieżkę do dokumentu oraz domenę, przeładowujemy lighttpd. Jeśli mamy w danym katalogu jakiś plik index.* to powinna nam się wyświetlić konkretna strona.
Możemy również wyświetlić dodatkowo tzw dir listing - czyli listę plików w danym katalogu. Jeśli mamy zainstalowany moduł lighttpd-mod_dirlisting to w powyższym pomiędzy nawiasami “wąsatymi” dopisujemy:
dir-listing.activate = "enable" dir-listing.encoding = "utf-8" #kodowanie listingow dir-listing.hide-dotfiles = "enable" #ta opcja gwarantuje ukrycie plików z kropeczkami na poczatku
Kompletny widok poprawnie skonfigurowanego vhosta wraz z dir listingiem powinien wyglądać więc tak:
$HTTP["host"] == "pld.thinkspire.org" {
server.document-root = "/usr/share/dokuwiki"
dir-listing.activate = "enable"
dir-listing.encoding = "utf-8"
dir-listing.hide-dotfiles = "enable"
}
Jak wszystko poprzednie - w lighttpd - nie ma rzeczy trudnych, więc i defaultowa instalacja php w oparciu o fastcgi taka nie będzie.
Zacznijmy od instalacji niezbędnych modułów:
# poldek -i lighttpd-php-spawned [...] Reloading lighttpd service.........................................[ DONE ]
Ponieważ jest to PLD - to wszystko powinno śmigać “od ręki” :)
Standardowo - posługujemy się skryptem phpinfo(), do jego działania potrzebujemy stworzyć plik testowy np test.php, a w jego treści wpisać:
<?php phpinfo(); ?>
i z przeglądarki odwołać się do niego np: http://60.22.121.11/test.php Jeśli wszystko działa poprawnie - powinnismy ujrzeć stronę zaczynającą się od:
PHP Version 5.2.6
$HTTP["scheme"]=="https" {
# jakiego hosta ma dotyczyć
$HTTP["host"] == "source.pld.thinkspire.org" {
# troche ograniczamy i modyfikujemy logi - tak by wiedzieć kto i skąd się logował
accesslog.filename = "/var/log/lighttpd/source/access.log"
accesslog.format = "%h %u %t \"%r\" %>s %b"
# miejsce gdzie spoczywa certyfikat
ssl.pemfile = "/etc/lighttpd/cert/source.pld.thinkspire.org.pem"
# konfiguracja proxy
proxy.server = ( "" =>
( (
# host do którego ma kierować proxy oraz port
"host" => "192.168.1.123",
"port" => 8080
) )
)
# konfiguracja autentykacji
# jeden z dostępnych backendów
auth.backend = "htpasswd"
auth.debug = 2
# plik z hasłami
auth.backend.htpasswd.userfile = "/etc/lighttpd/auth/htpasswd.txt"
# jakiego zasobu w wyżej wymienionej domenie ma dotyczyć autentykacja
auth.require = ( "/" =>
(
"method" => "basic",
"realm" => "Prosze podac instniejacego uzytkownika i haslo",
"require" => "valid-user"
)
)
}
}
pozostaje jeszcze tylko wygenerować login i hasło:
# htpasswd -m /etc/lighttpd/auth/htpasswd.txt nazwausera