přejít na obsah přejít na navigaci

Linux E X P R E S, Správa linuxového serveru: Lighttpd a PHP přes FastCGI

Správa linuxového serveru: Lighttpd a PHP přes FastCGI

debain_notext.png

Dalším z webových serverů, který se pyšní menší režií a vyšším výkonem, je lighttpd. Tento díl seriálu se bude věnovat představení lighttpd a zprovoznění PHP v tomto serveru prostřednictvím FastCGI.


Ú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é prezentace

  • server.dir-listing – umožní procházet obsah adresáře, pokud mu chybí indexový soubor

  • index-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".

Nahoru

Odkazy

Příspěvky

Správa linuxového serveru: Lighttpd a PHP přes FastCGI
Kibo 12. 05. 2011, 09:36:25
Odpovědět  Odkaz 
Díky za fajn článek.
Je skvělé vidět, že existuje i něco jiného než Apache.
Správa linuxového serveru: Lighttpd a PHP přes FastCGI
James_Scott 12. 05. 2011, 16:09:31
Odpovědět  Odkaz 
Premyslim uz dlouho, ze bych zkusil nasadit misto Apache bud lighttpd,nebo nginx. Nevite nekdo jak jsou na tom tyhle mensi webove servery s podporou WebDav?

Jinak pekny a srozumitelny clanek :)
Re:Správa linuxového serveru: Lighttpd a PHP přes FastCGI
Michal Dočekal 22. 05. 2011, 13:07:49
Odpovědět  Odkaz 
Lighttpd má podle všeho modul pro Webdav:

http://www.howtoforge.com/how-to-set-up-webdav-with-lighttpd-on-debian-lenny

A Nginx taky:

http://wiki.nginx.org/HttpDavModule
Re:Re:Správa linuxového serveru: Lighttpd a PHP přes FastCGI
Ela 22. 05. 2011, 13:11:04
Odpovědět  Odkaz 
Me se ale WebDav nikdy nepovedlo rozchodit :p :)
A to jsem chtela synchronizovat lokalne bookmarks mezi 2 prohlizeci (ne pres cizi servr jako to nabizi jeden add-on pro FF).

Pokud by se nekomu nahodou chtelo step-by-step napsat tutorial, jak to udelat, predem diky :)
Re:Re:Re:Správa linuxového serveru: Lighttpd a PHP přes FastCGI
Michal Dočekal 23. 05. 2011, 23:12:25
Odpovědět  Odkaz 
Zkusmo jsem ověřil ten první z návodů, na které jsem odkázal (webdav pro lighttpd) a zjistil jsem, že funguje bezchybně i na Debianu Squeeze. Pokud vám nevadí angličtina, mělo by se vám dle něj povést webdav rozchodit. Postup je tam naznačen krok za krokem.

Pro výměnu dat mezi dvěma počítači může posloužit ledacos, pokud to jsou unixy, stačí SSH (a služby nad ním, třeba rsync), jinak je možno použít sambu, klasické FTP a určitě spoustu dalších věcí, které jsem vynechal.
Správa linuxového serveru: Lighttpd a PHP přes FastCGI
Jan 12. 12. 2019, 20:35:19
Odpovědět  Odkaz 
Chel bych se Vas zeptat, jsetli mate zkusenosti s toto variantou:
je mozne napojit webovy server (Apache,Nginx) s protokolem HTTP2 nejakym spusobem an webovy server s lighttpd, napriklad pres nginx jako reverzni proxy, nebo jinym zpusobem?
Apache Server----->HTTP2--> nginx reverzni proxy-----> Lighttpd Server

Dekuji za Vasi opdoved

S Pozdravem

Jan

Přidat názor

Nejsou podporovány žádné značky, komentáře jsou jen čistě textové. Více o diskuzích a pravidlech najdete v nápovědě.
Diskuzi můžete sledovat pomocí RSS kanálu rss



 
 

Top články z OpenOffice.cz