Hlavní navigace

Lighttpd: lehký webserver

Adam Štrauch 21. 8. 2008

Ve spojení s web serverem se často slýchá o balíku Apache nebo IIS. I když mají tito dva konkurenti mezi sebou rozdělenou většinu webového trhu, nejsou zdaleka jedinými. Stává se, že možnost masivní konfigurace není jedinou prioritou a pokud se projekt rozrůstá a zabírá pořád víc a víc systémových prostředků, nastupuje lighttpd.

Úvod

Od tohoto mini seriálu by možná někdo očekával i srovnání s ostatními web servery, ale tomu bych se rád vyhnul. Tam, kde se nasazují Apache a IIS, se lighttpd nikdy nedostane a stejně tak to platí obráceně. Lighttpd je velmi rychlý a spolehlivý web server. Nedosahuje ovšem možností konfigurace, jakou má zmíněný Apache. Je navržen tak, aby zůstal jednoduchým a rychlým web serverem. Nasazuje se na místech, kde by Apache zahltil svoji prací celou paměť, nebo tam, kde není potřeba komplexní řešení, vystačíme si s jednoduchou konfigurací a případný výkonnostní nárůst bude spíše bonus než požadavek.

Historie

Začátky vývoje hezky mapuje pár odstavců na hlavní stránce web serveru. Když Jan Kneschke psal v roce 2003 svoji diplomovou práci a dostal se podle svých slov k té nejnudnější části, kterou bylo napsání dokumentace, rozhodl se trochu odlehčit napětí a vytvořit tzv. proof-of-concept k problému c10k popsaný Danem Kegelem. Zjistil, že když na svém počítači pustí simulaci se stovkou paralelních přístupů k web serveru Apache, ten vyčerpá veškerou paměť a přejde ke swapu. První týdny to byl pouze návrh nového web serveru, začátky implementace základních vlastností a hlavně cachování. Také byla přidána podpora pro PHP, protože ho Jan Kneschke používal ve svých projektech a dokonce dopsal i možnost rozdělení zátěže mezi další web servery. Když měl napsán tento základ web serveru, rozhodl se porovnat výkonové výsledky s paralelními přístupy s dalšími web servery a výsledky byly pro jeho web server velmi dobré.

Vývoj pokračovat dál a do dnešního dne se nezastavil. To, co začalo pouhou hrou, se stalo během posledních pár let velmi oblíbeným lehkým web serverem.

Koncept a jeho nevýhody

Ač je lighttpd velmi výkoný a ve většině případů se nestane brzdou provozu na serveru, i přes to tu ta možnost je. Na rozdíl od Apache je lighttpd jednoprocesový (single-process) a jednovláknový (single-threaded). To znamená, že operační systém prakticky nemá šanci přidělit pro lighttpd více než jedno procesorové jádro. Na první pohled tato koncepce vypadá hrozivě, ale není. V praxi je velmi časté, že webová prezentace neběží „uvnitř“ web serveru, ale má svůj vlastní proces. Lighttpd podporuje všemožná *CGI, tam se jedná vždy o jeden či více procesů/threadů a operační systém může v klidu rozdělovat čas všech jader mezi jednotlivé aplikace. Vlákna, případně více procesů ve web serveru by systému zbytečně přidělávalo režii. Lighttpd ukázalo nejen v testech, ale i v ostrém provozu (youtube.com, mininova.org, isohunt.com, wikipedia) kde se zatížení pohybuje v tisících požadavků za vteřinu, že takovýto nápor uživatelů vydrží.

Hlavní vlastnosti

Modulárnost

Veškerá pokročilá funkcionalita se rozdělila do modulů. Díky tomu lze web server optimalizovat přesně pro ty účely, kterým má sloužit. Také to přináší výhody v rozšiřování nejen vývojovým týmem, ale i samotnými uživateli, bez razantního zásahu do samotného kódu web serveru.

Rychlost

S cílem, se kterým lighttpd vznikl, se stále nerozešel a pořád se jedná o jeden z nejrychlejších web serverů, který mohou uživatelé na svých serverech nasadit.

Paměťová nenáročnost

Lighttpd vychází z jiné koncepce než Apache a jemu podobní. Proto i po několikadenním obsluhování požadavků je obsazená paměť relativně malá, řádově jednotky MB.

Cachování

Lighttpd svoji rychlost nabírá díky masivnímu internímu cachování a také díky mod_cache. Tento modul umí získávat data v pravidelných intervalech od služby poskytující dynamický obsah a servírovat ho z cache web serveru. Tím se rapidně zvýší výkon celé aplikace. Samozřejmě se tento modul nedá použít na celý projekt, ale s trochou snahy se dá velmi kvalitně optimalizovat celý webový projekt.

Jednoduchost

Jednoduchý konfigurační soubor s mnoha „bonusy“, které si popíšeme v příštích dílech, a které dělají z lighttpd velmi flexibilní nástroj, se dá dostat „pod palec“ během pár desítek minut. Lighttpd také disponuje velmi kvalitní dokumentací a s ní dokáže tento web server nastavit pro své potřeby opravdu každý.

*CGI

Největší silou lighttpd je podpora různých *CGI protokolů (cgi, fastcgi, scgi). Ty slouží ke komunikaci s externími aplikacemi jako je třeba PHP, django projekt či RoR projekt. V porovnání s Apachem, lighttpd nedisponuje alternativou k jeho mod_php, ale výkon, který tento modul nabízí, se vyrovná kombinaci lighttpd+fastcgi+php.

Generování skriptem

Veškerá konfigurace lighttpd může být vygenerována skriptem, resp. výstup skriptu bude vložen do konfiguračního souboru. To dává velké možnosti hlavě při vytváření administrace (přidávání „subwebů“, nastavování sdílení dat přes HTTP protokol atd.) nějakého projektu.

Základní konfigurace

A aby dnešní článek nebyl jen holou teorií. Nastavíme si lighttpd na servírování obsahu jednoho z adresářů na disku. Začneme samotnou konfigurací:

#moduly, které se mají načíst
server.modules = ("mod_accesslog","mod_dirlisting")

#uživatel a skupina, pod kterými pojede lighttpd
server.username            = "lighttpd"
server.groupname           = "lighttpd"
server.use-ipv6            = "enable" #povolení IPv6
server.errorlog-use-syslog = "enable" #použít syslog na logování chyb
accesslog.use-syslog       = "enable" #použít syslog na logování přístupu
server.indexfiles          = ("index.html", "index.htm")
server.document-root       = "/home/cx/share" #kde má mí web server /
server.dir-listing         = "enable" #povolit vylistování obsahu adresáře

include "mime-types.conf" 

Tohle je základ pro jednoduchý web server. Běží pod vlastním uživatelem, zapisuje do hlášení syslogu (nejjednodušší řešení) a zobrazuje obsah adresáře. Poslední řádek je závislý na distribuci. Na Gentoo funguje právě to, co jsem napsal. Jinde to bude obdobné. Tímto zápisem vložíme do konfiguračního souboru soubor mime-types.conf, který obsahuje vazby koncovka-mimetyp. Pro ukázku použití základního nastavení web serveru není nezbytný.

Závěr

Používám lighttpd na svém serveru přes rok a za tu dobu s ním nebyl jediný problém. Nastavení je otázka několika minut a v kombinaci s generováním konfiguračních souborů skriptem není problém udělat jednoduchou administraci prakticky pro jakoukoli činnost, kterou by měl web server vykonávat. V příštím díle se podíváme na pokročilou konfiguraci s podmínkami a nastavíme *CGI spojení mezi lighttpd,PHP a Pythonem.

Našli jste v článku chybu?

31. 8. 2008 21:18

hotovson (neregistrovaný)
uvazovani v tomto smyslu je cesta do pekel, jak v pocitacich, tak obecne v zivote cloveka i planety...

21. 8. 2008 10:38

sdilec (neregistrovaný)
Kazdy kdo pise o lighttpd nesetri chvalou nad vykonnosti a nenarocnosti tohohle webserveru. Provozuju nektere dost navstevovane a zatizene weby a musim konstatovat ze apache, pokud se dobre nakonfiguruje, naprosto staci. Requestu cca 1000 za vterinu a Load < 0.5.

Pro posilani dynamickeho obsahu je tento generovan beztak necim jinym (napr mod_php, cgi, atd), takze tady je to uplne fuk, a pro staticke stranky apache vyuziva sendfile() syscall, takze dany soubor defakto posila rovnou kernel, ne…

Lupa.cz: Slevové šílenství je tu. Kde nakoupit na Black Friday?

Slevové šílenství je tu. Kde nakoupit na Black Friday?

Vitalia.cz: Říká amoleta - a myslí palačinka

Říká amoleta - a myslí palačinka

Vitalia.cz: „Připluly“ z Německa a možná obsahují jed

„Připluly“ z Německa a možná obsahují jed

Podnikatel.cz: Přehledná titulka, průvodci, responzivita

Přehledná titulka, průvodci, responzivita

DigiZone.cz: Česká televize mění schéma ČT :D

Česká televize mění schéma ČT :D

Lupa.cz: Avast po spojení s AVG propustí 700 lidí

Avast po spojení s AVG propustí 700 lidí

Podnikatel.cz: K EET. Štamgast už peníze na stole nenechá

K EET. Štamgast už peníze na stole nenechá

Měšec.cz: U levneELEKTRO.cz už reklamaci nevyřídíte

U levneELEKTRO.cz už reklamaci nevyřídíte

Podnikatel.cz: Víme první výsledky doby odezvy #EET

Víme první výsledky doby odezvy #EET

Měšec.cz: Zdravotní a sociální pojištění 2017: Připlatíte

Zdravotní a sociální pojištění 2017: Připlatíte

Podnikatel.cz: Na poslední chvíli šokuje vyjímkami v EET

Na poslední chvíli šokuje vyjímkami v EET

Vitalia.cz: Tesco: Chudá rodina si koupí levné polské kuře

Tesco: Chudá rodina si koupí levné polské kuře

120na80.cz: Pánové, pečujte o svoje přirození a prostatu

Pánové, pečujte o svoje přirození a prostatu

Lupa.cz: UX přestává pro firmy být magie

UX přestává pro firmy být magie

Podnikatel.cz: EET: Totálně nezvládli metodologii projektu

EET: Totálně nezvládli metodologii projektu

120na80.cz: Jak oddálit Alzheimera?

Jak oddálit Alzheimera?

Vitalia.cz: Chtějí si léčit kvasinky. Lék je jen v Německu

Chtějí si léčit kvasinky. Lék je jen v Německu

Lupa.cz: Není sleva jako sleva. Jak obchodům nenaletět?

Není sleva jako sleva. Jak obchodům nenaletět?

Podnikatel.cz: 1. den EET? Problémy s pokladnami

1. den EET? Problémy s pokladnami

Lupa.cz: Proč firmy málo chrání data? Chovají se logicky

Proč firmy málo chrání data? Chovají se logicky