Úvod
Lighttpd má sice na poli webových serverů relativně nízký podíl (zhruba 0,6 % dle Netcraftu), avšak je používán některými velmi známými webovými službami jako např. Wikipedie nebo YouTube. Lighttpd nabízí vysoký výkon, minimální spotřebu paměti a architekturu vhodnou pro AJAXové (resp. Web 2.0) aplikace. Hodí se však nejenom do prostředí náročných webových aplikací s vysokou návštěvností, ale také třeba na osobní, domácí servery či VPS s málo RAM.
PHP aplikace a webové servery
Řada webových aplikací napsaných (nejen) v PHP je stavěna s ohledem na Apache, což může působit mírné komplikace při nasazení na jiný webový server. Člověk by řekl, že pro aplikaci napsanou v PHP nebo jiném jazyce bude podstatný příslušný interpret a na webovém serveru nebude záležet, ale bohužel tomu tak není. Problém tkví zejména v mechanismech jako rewrite
nebo v souborech .htaccess
. Řada „alternativních“ webových serverů sice rewrite mechanismy podporuje (včetně lighttpd
a Nginx
), nicméně jejich syntaxe je odlišná a konvertory bývají vzácné (resp. spíše neexistují). To představuje nutnost pravidla ručně přepsat.
Samotné .htaccess
soubory, tedy soubory s lokální konfigurací webového serveru specifickou pro daný adresář (a podadresáře) jsou také specifikem Apache a jinde obvykle nejsou podporovány (to je samozřejmě případ i lighttpd
). Příslušná pravidla a úpravy konfigurace je tedy třeba zohlednit v samotné konfiguraci webového serveru.
Webové aplikace využívají těchto dvou mechanismů zpravidla ke dvěma účelům. Prvním jsou „čistá“ nebo „pěkná“ URL (http://www.example.org/index.php?modul=clanky&uzel=354
versus http://www.example.org/clanky/354
) a druhým je ochrana citlivých souborů, u kterých by přímý přístup přes web představoval bezpečnostní riziko. Při nasazení webových aplikací na některé z „alternativních“ webových serverů byste měli přinejmenším tuto oblast prozkoumat. U známých a často používaných webových aplikací bývá možné dohledat specifika pro nasazení třeba na lighttpd
nebo na jiný webový server, stačí se podívat na web projektu či použít vyhledávač.
Instalace
Instalace samotného webového serveru je velmi jednoduchá, v Debianu postačí již tradičně použít správce balíčků k nainstalování stejnojmenného balíčku:
aptitude install lighttpd
Konfigurace lighttpd
Pokud si ještě vzpomínáte na Úvod do konfigurace Apache, Debian si konfiguraci webových serverů, zejména tedy Apache, přizpůsobuje a strukturuje, aby bylo nastavení a jeho změny co nejjednodušší. V případě lighttpd
se to promítá pouze do správy modulů, které je možné „zapínat“ a „vypínat“ prostřednictvím nástrojů lighttpd-enable-mod
a lighttpd-disable-mod
. Ty pak vytvářejí a ruší symlinky z /etc/lighttpd/conf-available
, kde se nacházejí dostupné konfigurační soubory jednotlivých modulů, do /etc/lighttpd/conf-enabled
, kde se nacházejí konfigurační soubory, které bude lighttpd
brát v úvahu a načte z nich příslušné nastavení.
Hlavním konfiguračním souborem je zde /etc/lighttpd/lighttpd.conf
, který je poměrně strohý a obsahuje jen základní nastavení. Určitě si zde přizpůsobte některé z následujících voleb:
server.document-root
– klasický document root, kořenový adresář webové prezentaceserver.dir-listing
– umožní procházet obsah adresáře, pokud mu chybí indexový souborindex-file.names
– všechny názvy souborů, které se berou jako indexovéserver.port
- port, na kterém málighttpd
naslouchat
PHP
Na rozdíl od Apache nemá lighttpd
vlastní „konektor“ pro obsluhu PHP aplikací, nicméně to není problém – můžete použít FastCGI. Za tímto účelem je ovšem potřeba do systému dostat CGI interpret PHP z balíčku php5-cgi
, pokud jej ještě nemáte:
aptitude install php5-cgi
Poté je potřeba upravit konfiguraci PHP pro CGI interpret tak, aby byla povolena volba cgi.fix_pathinfo
. Upravte tedy soubor /etc/php5/cgi/php.ini
a odstraňte středník (uvozující komentář) z řádky s touto volbou. Všimněte si, že konfigurace PHP pro CGI interpret je oddělena od konfigurace PHP pro Apache nebo pro jiná užití, třeba pro PHP interpret pro příkazovou řádku.
Poté je třeba povolit příslušné moduly, konkrétně modul fastcgi
a fastcgi-php
. Můžete ručně vytvořit příslušné symbolické odkazy, nebo použít nástroje pro obsluhu modulů zmíněné výše:
lighttpd-enable-mod fastcgi lighttpd-enable-mod fastcgi-php
Nyní už zbývá jen donutit lighttpd
znovu načíst konfiguraci:
/etc/init.d/lighttpd force-reload
Otestovat funkci PHP interpretu můžete vytvořením a pokusem o zobrazení libovolného souboru s příponou .php
s obsahem (zobrazit by se měl výpis konfigurace PHP interpretu):
<?php phpinfo(); ?>
Pokud chcete nasadit nějakou webovou aplikaci, budete nejspíše potřebovat ještě nějaký databázový server. Instalace databázového serveru byla již probrána v článcích Instalace LAMP (MySQL) a PostgreSQL: Instalace a zprovoznění. Jediné, co je potřeba zajistit kromě instalace databázového serveru, je propojení databáze s PHP interpretem, tedy dostupnost PHP knihoven pro práci s příslušnou databází (balíčky php5-mysql
či php5-pgsql
).
SSL
Chcete-li zprovoznit přístup k webovému serveru přes HTTPS, čtěte dále. Samotná problematika HTTPS a SSL včetně generování self-signed certifikátů či získání certifikátu zdarma od některé z volných certifikačních autorit byla v tomto seriálu již probrána. Budu tedy předpokládat, že máte k dispozici certifikát s klíčem.
Pokud máte certifikát a klíč ve dvou souborech, spojte je do jediného .pem
souboru (určitě nastavte jeho práva tak, aby jej nemohl číst nikdo jiný než webový server!):
cat certifikat.crt klic.key > certifikat.pem
Nyní povolte ssl
modul lighttpd
:
lighttpd-enable-mod ssl
Ještě před tím, než donutíte webový server znovu načíst konfiguraci, upravte cestu k .pem
souboru v /etc/lighttpd/conf-enabled/10-ssl.conf
tak, aby odpovídala skutečnému umístění souboru s certifikátem a klíčem. Teprve poté proveďte znovunačtení konfigurace a pokus o připojení přes HTTPS:
/etc/init.d/lighttpd force-reload
Rewrite
Jak už bylo řečeno výše, rewrite pravidla pro Apache nebo jiné servery mají jinou syntax než pravidla pro lighttpd
, tudíž je třeba je přizpůsobit. Samotnou dokumentaci k modulu pro rewrite lighttpd
naleznete na wiki projektu. Dodám jen, že modul pro rewrite není ve výchozí konfiguraci aktivní, musíte jej povolit v /etc/lighttpd/lighttpd.conf
, konkrétně ve volbě server.modules
odkomentováním řádky obsahující "mod_rewrite"
.