Drupal pod kontrolą Lighttpd - opis konfiguracji.
Moduł magnet do poprawnego działania wymaga aby Lighttpd było skompilowane z opcją --with=lua, wymagane jest posiadanie lua w wersji 5.1 lub wyższej. Aby sprawdzić czy posiadasz obsługę lua uruchom lighttpd z parametrem -V:
-
# lighttpd -V
-
(...)
-
+ LUA support
-
(...)
Mając odpowiednio przygotowane środowisko przystępujemy do konfiguracji. Podobnie jak w przypadku mod_rewrite dodajemy do sekcji server.modules obsługę mod_magnet:
-
server.modules = ( ..., "mod_rewrite", "mod_magnet" ... )
Moduł magnet dodaje do Lighttpd zaawansowaną obsługę zapytań. Pozwala na zaawansowaną manipulacje URLem - jest idealnym uzupełnieniem dla mod_rewrite.
Skrypy w lua napisał darix, jest dostępny na jego stronie oraz tutaj:
-
-- little helper function
-
function file_exists(path)
-
local attr = lighty.stat(path)
-
if (attr) then
-
return true
-
else
-
return false
-
end
-
end
-
function removePrefix(str, prefix)
-
return str:sub(1,#prefix+1) == prefix.."/" and str:sub(#prefix+2)
-
end
-
-
-- prefix without the trailing slash
-
local prefix = ''
-
-
-- the magic ;)
-
if (not file_exists(lighty.env["physical.path"])) then
-
-- file still missing. pass it to the fastcgi backend
-
request_uri = removePrefix(lighty.env["uri.path"], prefix)
-
if request_uri then
-
lighty.env["uri.path"] = prefix .. "/index.php"
-
local uriquery = lighty.env["uri.query"] or ""
-
lighty.env["uri.query"] = uriquery .. (uriquery ~= "" and "&" or "") .. "q=" .. request_uri
-
lighty.env["physical.rel-path"] = lighty.env["uri.path"]
-
lighty.env["request.orig-uri"] = lighty.env["request.uri"]
-
lighty.env["physical.path"] = lighty.env["physical.doc-root"] .. lighty.env["physical.rel-path"]
-
end
-
end
-
-- fallthrough will put it back into the lighty request loop
-
-- that means we get the 304 handling for free. ;)
Jedna bardzo ważna kwestia. Jeżeli Twoja strona znajduje się w katalogu domeny np. www.kompy.net/drupal/, to należy ustawić wartość zmiennej prefix (linia 15) na '/drupal', bez zakończenia slashem!
Teraz wystarczy tylko dodać obsługę modułu magnet w konfiguracji hosta (podobnie jak z regułkami mod_rewrite):
-
$HTTP["url"] =~ "^/files/imagecache/" {
-
magnet.attract-physical-path-to = ( "/usr/local/etc/lighttpd/drupal.lua" )
-
}
Uzupełniając poprawną ścieżką do pliku ze skryptem.
Teraz możemy cieszyć się w pełni funkcjonalnością Drupala na lekkim serwerze jakim niewątpliwie jest Lighttpd!

