Pierwszą cechą rozpoznawczą jest konfiguracja Lighttpd. Składnia wyraźnie odróżnia się od tego, co znamy z Apache'a i jest według mnie bardziej czytelna. Dyrektywy grupowane są w postaci przestrzeni nazw, np. server.xxx, można także tworzyć tablice, korzystając z podobnej składni do tej, którą znamy z PHP. W parze z tym idzie logiczniejsze ułożenie dyrektyw. Widać to szczególnie na przykładzie wspomnianego wyżej FastCGI. W Apache'u jest to strasznie zakręcone i za bardzo nie wiadomo, co do czego idzie, ani nawet co jest potrzebne. Lighttpd ma bardziej eleganckie podejście - odpowiednia tablica i warunki na zdefiniowanie, w jakiej subdomenie ma być aktywna dana instancja:
$HTTP["host"] =~ "(^|[a-zA-Z0-9\-\_\.])localhost$" { fastcgi.server = ( ".php" => ( "localhost" => ( "socket" => "/tmp/php-fastcgi1.socket" ) ) ) } $HTTP["host"] =~ "(^|[a-zA-Z0-9\-\-\.]+)lh$" { fastcgi.server = ( ".php" => ( "localhost" => ( "socket" => "/tmp/php-fastcgi2.socket" ) ) ) }
Jedyny poważniejszy problem, jaki napotkałem, dotyczył obsługi subdomen, a właściwie jej braku. Z nieznanych mi dotąd powodów, Lighttpd zupełnie ignorował moduł module_simple_vhost oraz jego całą konfigurację - dokładne logi pokazywały, że pomimo jego załadowania nie jest on w ogóle uruchamiany w trakcie przetwarzania żądania i wszystko szło zawsze z głównego document-root. Nawet samodzielna kompilacja nie rozwiązała tego, jednak na szczęście znalazłem obejście dzięki dyrektywom warunkowym. Lighttpd posiada zestaw zmiennych reprezentujących elementy żądania, które możemy warunkowo sprawdzać (porównanie, dopasowanie do wyrażeń regularnych), a także dowolnie zagnieżdżać. Umożliwia to wykonanie subdomen w zasadzie bez konieczności ładowania jakiegokolwiek modułu:
$HTTP["host"] == "test.sites.lh" { server.document-root = "/home/lighttpd/vhosts/Sites/test/www" }
W ostatecznym rozrachunku Lighttpd chyba zostanie na moim dysku. Pomimo problemów z subdomenami, wreszcie mam możliwość uruchamiania moich skryptów na własnych prawach, a w ostatecznym rozrachunku ta rzecz jest istotniejsza.
Edit: poprawka, ta "praca na prawach właściciela" nie działała do końca tak, jak powinna. Po pierwsze, był błąd w konfiguracji FastCGI i poprawiłem go już w tym poście. Po drugie, mając uruchomione dwie instancje FastCGI (jedną na prawach użytkownika, drugą - serwera), musiałem sklonować wszystkie binarki, skrypty startowe oraz dodatkowo je przerobić, by ustawiały odpowiednie prawa dostępu do socketów. Tak więc trochę zabawy z tym jednak było :).















Napisał nrm w wtorek, 12 lutego 2008 o 12:06
lighttpd uzywam od ponad roku i jestem w miare zadowolony ale chyba na nastepnym serwerze zainstaluje nginxa ;D