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