Apache a PHP/FI -- recenze knihy -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- Milan Šorm, 13. dubna 1998 Asi 320 stránková modrá kniha formátu A5 má jednu z těch lepších lepených vazeb, jak už u Neokortexu Neokortex, spol. s r. o. bývá zvykem. Kniha se neudrží otevřená, avšak listy nevypadávají. Prvních 15 kapitol (asi 220 stran) je věnováno instalaci, konfiguraci a popisu principu práce nejrozšířenějšího webového serveru Apache HTTPd http://www.apache.org, druhá (tenčí) část, je věnována vysvětlení slibného nástroje pro vývojáře webových sídel, jazyku PHP/FI http://www.php.net a jeho propojení s Apachem. Trochu netradičně působí, že vlastně první kapitola má číslo 3 (číslované kapitoly jsou i úvod a obsah). Najdeme v ní detailní popis spuštění Apache a seznam souborů, které Apache potřebuje pro svoji práci (konfigurační soubory a vznikající protokoly). Následující kapitola je věnována překladu a instalaci Apache. Podstatnou část kapitoly zabírá překlad originálního manuálu, v druhé části je však velmi pěkně popsána část týkající se konfigurací virtuálních hostitelů. Toto je významná vlastnost Apache, kdy server dokáže vytvářet několik virtuálních serverů (např. www.aaa.cz a www.bbb.cz) pod jednou spuštěnou kopií Apache a dokonce i na jediné IP adrese. Autor zde čtenáře provádí úskalími jednotlivých variant (více spuštěných démonů, jeden démon apod.) včetně popisu odstranění chyb, které vás při konfigurování mohou potkat. Kapitola 5 rozšiřuje tuto problematiku i výkladem, jak server provádí rozpoznání virtuálních hostitelů a další podobné teoretické záležitosti, které se vám budou hodit tehdy, až se vám nepodaří server nakonfigurovat ani podle příručky. Šestá kapitola je věnována bezpečnosti a provozování uživatelských CGI skriptů. Je zde vysvětlena práce programu suEXEC, který by vám měl zaručit podstatně vyšší bezpečnost, pokud při používání serveru Apache dovolíte uživatelům tvořit vlastní CGI skripty, a navíc chcete zajistit pohodlí při práci jednotlivých uživatelů. Kapitola 7 se zaobírá kompilací a provozováním Apache pod systémem UnixWare, kapitola 8 pak přináší překlad manuálového článku týkajícího se změn mezi verzemi 1.1 a 1.2 (pro informaci, poslední verzí řady 1.2 je 1.2.5, nyní už existuje řada 1.3 nově podporující i platformu WindowsNT). Za hodně zajímavou část této kapitoly považuji část, která stručně popisuje rozhraní API, které umožňuje dotvořit si další vlastnosti serveru přímo konkrétním uživatelem (zde myšleno samozřejmě správcem serveru). Možnosti API jsou bohaté a mimo standardní distribuce existuje celá řada doplňků, jako je např. modul pro podporu různých českých kódování, modul pro výše zmíněné PHP/FI, modul pro SSL (bezpečnostní protokol) či např. modul, který uživatelům usnadní zadávání URL na vašem serveru (např. chybně zadané písmenko se opraví aj.). Devátá kapitola rozebírá činnost serveru při problémovém stavu TCP protokolu, tzv. stavu FIN_WAIT_2. V tomto stavu je již komunikace mezi serverem a klientem ukončena, avšak stále ještě server eviduje spojení (nedošlo ke korektnímu ukončení). Kapitola osvětluje, proč k tomuto dochází a jak to na různých platformách odstranit. V druhé části kapitoly se nachází překlad dokumentu HOWTO (Jak na to), který dává odpovědi na základní problémy, se kterými se správce může setkat (např. jak omezit chování internetových robotů, jak přesměrovat server či resetovat protokolové soubory). Rovněž jsou zde zmíněny problémy, které mohou vzniknout na nelinuxových platformách (BSD, Digital Unix, ...). Část 9.6 popisuje, co může vést ke zdánlivému (či skutečnému) zpomalení serveru. Je zde objasněn problém, který se na Linuxu občas vyskytne, tj. zamrznutí serveru na několik sekund až minut a jeho opětovné probuzení v důsledku činnosti Apache. Kapitola 10 přináší zkušenosti, které mohou zvýšit bezpečnost vašeho serveru a usnadnit vám konfigurování. Druhá část kapitoly je referenční příručkou pro konfigurování serveru. Jde de facto o překlad originální dokumentace na www.apache.org, s podrobnějším popisem konfigurace modulu pro authentizaci vůči databázi mSQL. V druhé části kapitoly je ukázána nová vlastnost Apache 1.3, o které se málo ví. Server dokáže obsluhovat dynamicky zaváděné moduly ( mod_dld), tj. dotvářet si konfiguraci serveru až za chodu, bez nutnosti překladu. Apache 1.3 navíc přináší možnost používat i moduly ve formátu Win32 DLL. Toto samozřejmě využijí ti, kteří budou Apache používat ve Windows NT. Doufám, že toto bude jedna z klíčových vlastností (spolu s mod_isapi pro vytváření rozhraní mezi Apache a programy společnosti Microsoft), která nakonec vytlačí MIIS z oblasti Windows NT a nahradí jej Apachem. V samém závěru je ještě rozebrán interní proxy modul Apache ( mod_proxy), který dokáže pracovat i s protokolem SSL) a přepisovací modul (mod_rewrite), který umožňuje provádět přesměrování URL na základě regulárních výrazů. Tím lze např. dosáhnout, že uživatelská URL budou http://www.nekde.cz/Milan.Sorm/, i když účty na serveru jsou např. xsorm. Navíc lze při přepisování volat externí skripty např. v Perlu a tam už se fantazii meze nekladou. Jedenáctá kapitola rozebírá konfiguraci více IP adres na jednom síťovém rozhraní pro SunOS 4.1.x, 12. kapitola obsahuje překlad dokumentu FAQ (často kladené otázky) a popis známých chyb jednotlivých klientů (abyste věděli, až budete rozjíždět svůj vlastní server, komu dávat vinu). Nakonec kapitoly následuje seznam známých chyb Apache. Třináctá kapitola přináší pokračování referenční příručky z desáté kapitoly (bývalo by bylo asi inteligentnější dát je k sobě, ale autor použil tuto skladbu). Tato část se týká konfigurování samotného jádra Apache (kdežto v desáté kapitole byl popis konfigurace jednotlivých modulů). Čtrnáctá kapitola ukazuje možnosti nového Apache 1.3 při spojení s Microsoft Windows s rozhraním ISAPI (Internet Server Applications API). Patnáctá kapitola pak podává výčet vlastností jednotlivých verzí Apache. V druhé části knihy je popsán serverový skriptovací jazyk PHP/FI, který vám uvnitř HTML dovolí psát vlastní aktivní skripty (např. hodiny ukazující přesný čas apod.). Že už jste toto někde viděli? Ano, bylo to v JavaScriptu, ale ten byl závislý na implementaci v prohlížeči. PHP/FI je čistě záležitostí serveru. PHP/FI je rychlejší než CGI (protože jej provádí již běžící Apache), umožňuje připojení na programy pomocí mechanismu trubky (kolony), jak to známe např. z Perlu -- např. posílání pošty, komunikace s aplikacemi apod. Dále obsahuje značné možnosti pro protokolování své činnosti, takže uživatelé si sami mohou tvořit statistiky návštěvnosti jejich stránek apod., obsahuje vlastní ochranné metody přístupu k dokumentům, umí se napojit na řadu existujících SQL serverů (mSQL, Postgres, MySQL, Sybase, Oracle, Illustra, Adabas, Filepro), zvládá komunikaci skrz specifikaci ODBC či standardní DBM databáze. Zvládá uploadování souboru na server, ovládá matematické výpočty, matice, Perlovská asociativní pole (lze přenášet mezi jednotlivými webovými stránkami), možnosti skriptového jazyka C, regulární výrazy, tvorbu GIF obrázků atd. Jak je vidět, určitě má PHP/FI budoucnost, navíc je zadarmo. Kapitoly 16 a 17 poskytují základní úvod do problematiky PHP/FI a popis instalace. PHP/FI může pracovat jednak jako serverový modul nebo jako CGI skript zprostředkující PHP/FI vašim skriptům (pak lze PHP/FI užít i v jiných serverech než Apache, ovšem ne už v takové rychlosti). V kapitole 17 je rovněž rozebrána konfigurace PHP/FI do bezpečného režimu (aby mohly být využity všechny bezpečnostní techniky PHP/FI). Druhá část kapitoly 17 rozebírá konfiguraci jednotlivých částí PHP/FI a napojení na konkrétní SQL servery, využití jeho specifických vlastností apod. 18. kapitola podrobně popisuje vlastní jazyk PHP/FI. Kapitola 19 je potom referenční příručkou všech funkcí PHP/FI. V závěru 19. kapitoly je potom rozebrána možnost dodefinovat si vlastní příkazy do PHP/FI. To přináší jedinečnou možnost upravit si jazyk podle svého. Navíc autor PHP/FI nabízí, že pokud mu nové funkce zašlete, rozšíří o ně novou verzi PHP/FI. No není to skvělé? Dvacátá kapitola je pak dobře zpracovaný rejstřík. Mám však podezření, že není zcela kompletní. Např. mod_perl, o kterém autor hovoří v 16. kapitole, není v rejstříku k nalezení. Kniha budí dojem překladu originálních manuálů, o čemž se autor na začátku zmiňuje. Na mnoha místech je však tento překlad rozšířen o cenné zkušenosti, což zvyšuje jeho kvalitu. Navíc nesrozumitelné pasáže originálního manuálu autor převyprávěl, takže jsou nyní pochopitelnější. Kniha bude přínosem nejen pro toho, kdo se hodlá s Apachem seznámit (i když pro něj bude možná příliš stručná), ale především pro toho, kdo hodlá Apache vyladit na maximální možnou míru. Kniha je výbornou referenční příručkou a popisem toho, jak server pracuje (technický manuál). Ten, kdo se chce seznámit s PHP/FI a vážně v něm pracovat, by měl po této knize sáhnout zcela určitě. Negativně působí jen trochu zmatené uspořádání některých kapitol, přičemž by některé dlouhé kapitoly (10, 17) stálo za to rozdělit do několika menších. Sympatické by bylo, kdyby bylo alespoň za kapitolami vynecháno trochu volného místa na zapsání poznámek, protože do referenčních příruček si řada lidí vpisuje nově se objevivší direktivy či parametry. Na druhé straně toto by knihu prodražilo, a tak se musí člověk spokojit se čtyřmi volnými stranami na konci knihy. V knize mi rovněž chybí seznam literatury či webových stránek, kde by člověk získal další informace a rozšířil si tak vědomosti (např. podrobnější specifikaci API Apache i API PHP/FI modulu apod.). Knihu můžete zakoupit za 294 Kč v každém počítačovém knihkupectví. výheň