Lighttpd
Autor: Vladimir Cicović
Uvod
Pre nego krenemo sa opisom i instalacijom želimo da objasnimo zašto baš Lighttpd i Debian. Lighttpd je jedan od „lakih“ web servera koji podržava http servis. Brz je, lako se podešava i, prema nekim istraživanjima, on je na 4. mestu (apache, nginx, IIS pa lighttpd). Veliki broj CDN provajdera koristi lighttpd kao statički server ili SSL termination server. Naravno ovo nisu jedine mogućnosti, naprotiv, kao web server ima još mogućnosti kao što su: h264 transcoder, cache server , http proxy, http load balancer, bandwith throtling server i tako dalje. Uostalom preporučujem da pogledate link http://redmine.lighttpd.net/projects/1/wiki/Docs.
Što se tiče Debian-a to je jedan od najboljih produkcijskih servera koji dozvoljava komforan rad a pod tim se podrazumeva – jednostavna instalacija, konfiguracija i dodavanje novih i uklanjanje postojećih servisa. Jednostavno rečeno Debian u Linux svetu produkcijskih servera je nekrunisani kralj.
U prvom delu ćemo obraditi instalaciju i osnovu konfiguraciju servera. U drugom delu ćemo pokušati da ga instaliramo pod chroot to jest, da izolujemo od ostatka servera – imamo dve varijante – prva je kompletna izolacija Lighttpd i druga je samo php-cgi (vrlo problematično u svetu produkcijskih servera).
Instalacija Lighttpd
Kao što smo ranije naveli Debian je pravi izbor za produkcijski server. Instalacija Lighttpd se vrši jednostavno:
apt-get -y install lighttpd
Sa ovim smo postavili osnovnu konfiguraciju za rad. Sledeće što je potrebno – ako nije instaliran bzip2 (koristi se za kompresovanje datoteka i direktorijuma) je:
apt-get -y install bzip2
Lighttpd je instaliran pod korisnikom www-data, da bismo obezbedili pristup Lighttpd potrebno je da dodelimo prava nad direktorijumom u kojem se nalazi index.html . Sa komandom:
chown -R www-data:www-data /var/www/
dodeljujemo prava nad web root-om. Da bismo testirali iz komandne linije treba da instaliramo Lynx sa komandom:
apt-get -y install lynx
Da bismo proverili da li je pokrenut Lighttpd pokrenućemo komandu:
pidof lighttpd
Ako se pojave brojevi kao:
3444 3445
To je znak da je Lighttpd pokrenut. U suprotnom, startujemo ga sa komandom:
/etc/init.d/lighttpd start
Gde treba da se pojavi:
Starting web server: lighttpd
Nakon ovoga izvršićemo komandu:
lynx 127.0.0.1
Gde bi trebalo da se pojavi sadržaj datoteke /var/www/index.html. Sa ovim smo završili instalaciju.
Osnovna konfiguracija
Za objašnjenje uzećemo primer iz /etc/lighttpd/lighttpd.conf.
[code]server.modules = (
"mod_access",
"mod_alias",
"mod_compress",
"mod_redirect",
"mod_rewrite",
)[/code]
Linija server.modules označava početak liste modula koji će se učitati. Ovde vidimo: mod_access, mod_alias, mod_compress, mod_redirect, mod_rewrite.Mod_access je modul koji služi za sprečavanje pristupa određenim tipovima datoteka to jest sa određenim ekstenzijama. Primer:
url.access-deny = ( “~” , “.inc”) # zabrana pristupa datotekama sa //~ i .inc// ekstenzije
Mod_alias je modul koji vrši zamenu pod-url-a za fizičku putanju, na primer /test/ za /var/www/test/. Primer:
alias.url = ( "/test/" => "/var/www/test/" )
Mod_compress je modul koji koristi kompresovanje kako bi smanjio mrežno opterećenje i brže poslao klijentu sadržaj. Ovo je standard prema kojem rade svi server/klijent (pretraživači). Primer:
[code]compress.cache-dir = "/var/www/cache/" # direktorijum gde će biti kompresovan materijal
compress.allowed-encodings = ("bzip2", "gzip", "deflate") # dozvoljeni tipovi kompresije
compress.filetype = ("text/plain", "text/html") # koje tipove datoteka kompresovati[/code]
Mod_redirect se koristi za preusmeravanje na određeni url. Primer:
$HTTP["host"] =~ "^www\.(.*)$" { url.redirect = ( "^/(.*)" => "http://%1/$1" ) }
Gde se sa www.nekihost.com preusmerava na nekihost.com.
Mod_rewrite je modul koji radi re-writing to jest iz jednog određenog ulaza url-a prebacuje u drugi formatiran oblik. Pogodnosti ovoga su višestruke. Primer:
url.rewrite-once = ( "^/(.*)" => "$1" )
Ovde na primer www.host.com// prepisuje u host.com – koristi se regex-om Sad pokušajmo redom objasniti linije u lighttpd.conf. Sledeća linija na koju nailazimo u našem osnovnom primeru (dobijenom instalacijom) je: server.document-root = “/var/www/” server.* je deo core dela odnosno dela koji je direktno integrisan u Lighttpd serveru. Takođe pripada mu i server.modules. U ovoj liniji mi navodimo lighttpd server gde počinje document-root putanja. Podrazumevano bi trebalo da datoteka “index.html” koja se nalazi u /var/www bude ta koja će se učitati nakon što otvorimo internet stranicu host-a, 127.0.0.1 u našem primeru.
server.upload-dirs = ( “/var/cache/lighttpd/uploads” )
Ova linija sadrži putanju direktorijuma koji služi za privremeno čuvanje datoteke prilikom upload-a.
server.errorlog = “/var/log/lighttpd/error.log”
Ovde je definisan error log, vrlo bitan element za lighttpd. Ako nešto krene po zlu, najčešće bi trebalo da pogledamo ovde. Primer bi bio kada lighttpd neće da se pokrene ili ako nisu definisane određene promenljive za rad. server.pid-file = “/var/run/lighttpd.pid”
Pid file – lokacija u koju se smešta Process ID. server.username = “www-data” server.groupname = “www-data”
Pokretanje servera pod root-om nije moguće zato se koristi korisnik sa ograničenim pristupom. index-file.names = ( “index.php”, “index.html”, “index.htm”, “default.htm”,“index.lighttpd.html” )
Određivanje index datoteke. static-file.exclude-extensions = ( “.php”, “.pl”, “.fcgi” ) Možete „objasniti“ koje datoteke nisu statične i tom prilikom poboljšati performanse. Statične datoteke se „keširaju“ u RAM – to znači da nema potrebe za čitanjem sa čvrstog diska.
dir-listing.encoding = “utf-8” server.dir-listing = “enable”
Prva linija – enkodiranje, prezentacija direktorijuma u datom formatu. Druga linija – da li je listanje direktorijuma omogućeno? Po postavci nije, zato se dodatno stavlja “enable”. compress.cache-dir = “/var/cache/lighttpd/compress/” compress.filetype = ( “application/x-javascript”, “text/css”, “text/html”, “text/plain” )
Prva linija – direktorijum za kompresovanje, druga linija – kompresovanje određenih tipova datoteka. include_shell “/usr/share/lighttpd/create-mime.assign.pl” include_shell “/usr/share/lighttpd/include-conf-enabled.pl
U lighttpd konfiguraciji moguće je koristiti bash skriptu, perl, ruby, python – odnosno bilo koji integrisani interpretirani jezik pod linuksom. Sa ovim dobijamo neverovatnu moć konfiguracije.
Naprednije konfigurisanje Lighttpd servera ostavljamo za sledeći broj.