Český spolek uživatelů OS/2

OS/2 a WWW server Apache


Úvodní | Články | Forum | Hry | Mapa serveru | Poradna | Prohlídka OS/2 | Recenze | Rozcestník | Různé | Skupina | Tipy a triky

Apache | OS/2 Aurora verze 4.5 | BootOS/2 | Dialog Enhancer | File Commander/2 | HomePage 1.0 | HomePage 2.1 | Larsen Commander | Mr. ED | Několik recenzí | Netscape Communicator | NC 4.61CZ | NPS WPS Enhancer | NightVision | PMMail | SciTech Display Doctor | Sibyl | Speed Pascal/2 v1.5 | StarOffice | Styler/2 | Super Virtual Disk | Sysbench 0.9.4e | Tvorba HTML v OS/2 | Visual Age C++ 4.0 | WarpNote

Aktualizováno:
Autor: Zdeněk Wagner, 10. května 1999

 

V tomto příspěvku se budu věnovat verzi programu Apache pro OS/2. Nechci zde suplovat dokumentaci, a proto uvedu jen hlavní rysy, které čtenářům umožní udělat si hrubou představu o tom, co Apache umí. Nečekejte ani objektivní recenzi. Budu psát ze svého dosti subjektivního hlediska a popíšu své vlastní pocity a zkušenosti. Přesto doufám, že můj článek bude pro čtenáře zajímavý.

Zpět na začátek stránkyPrvní seznámení

Asi před pěti lety jsem začal experimentovat s HTML. Naučil jsem se, jak testovat stránky lokálně, a po dohodě s administrátorem jsem je sám vkládal na server. Vytvořil jsem několik jednoduchých stránek a v radosti z úspěchu jsem začal shánět podrobnější informace. Při té příležitosti jsem si přečetl, že mezi nejlepší WWW servery patří Apache.

Později jsem začal experimentovat s interaktivními formuláři. Dočetl jsem se, že musím napsat CGI skript. Všechny návody, které jsem na různých místech Internetu našel, se týkaly UNIXu. Náš hlavní server ovšem používá Windows NT. Zkusil jsem napsat velmi jednoduchý CGI skript v C, ale ani po několika týdnech intenzivního snažení se mi ho nepodařilo spustit.

O několik měsíců později jsem bloudil po archivech a díval jsem se, zda neobsahují nějaký program, který by se mi hodil. Přitom jsem náhodou objevil Apache 1.1.3 pro OS/2, a tím začalo mé dobrodružství.

Zpět na začátek stránkyInstalace

Apache jsem rozbalil na svůj disk a umístil do doporučeného adresáře. Poté jsem začal s konfigurací. Tehdy ještě byly 3 konfigurační soubory, v současné verzi (ke dni psaní tohoto článku je to 1.3.6 a verzi 1.3.7 lze očekávat velmi brzy) je vše zahrnuto do jediného souboru httpd.conf. Na začátku je uvedeno varování, že nemáte nic měnit, pokud nevíte, co děláte. Jste odkázáni na dokumentaci. Všechny příkazy však mají tak podrobné komentáře, že manuály vlastně není nutno číst (ale později budu tvrdit opak...). Apache je psán pro UNIX, takže všechny cesty jsou podle toho připraveny. Uživatel v OS/2 si musí adresáře přepsat, a to je v zásadě vše, co je třeba udělat. Ještě je nutná drobná úprava, aby šlo spouštět CGI skripty psané v Rexxu a EXE programy. To si ozřejmíme později. Pro úplného začátečníka, který ještě nikdy žádný WWW server nekonfiguroval, je to práce asi na 5 minut!

Po takto jednoduché instalaci jsem Apache spustil a on fungoval! Pak jsem napsal jednoduchý CGI skript v Rexxu i v C, a na první pokus jsem uspěl. Tak jsem za 15 minut dokázal to, oč jsem se marně snažil ve Windows NT více než měsíc.

Zpět na začátek stránkySynchronizace času

Pro řadu aplikací je nezbytné, aby počítač měl správně nastavený systémový čas. Zvlášť důležité je to pro server. Je-li počítač připojen do lokální sítě, pak může být čas automaticky nastavován při nalogování. Pokud ovšem k nastavení času nedochází, nebo pokud má lokální síť nespolehlivý čas, je nutno synchronizovat čas přímo po Internetu. Slouží k tomu volně dostupný program time868, který využívá Network Time Protocol podle RFC-868. Program jsem našel na www.leo.org.

Zpět na začátek stránkyPokročilá konfigurace

Jak jsem uvedl, základní konfiguraci lze úspěšně provést bez přečtení manuálů. Přesto však dokumentace za přečtení stojí. Apache totiž umí spoustu užitečných věcí, a bez návodu bychom se o ně ošidili. Není ovšem nutné prostudovat vše najednou. Je možné spustit Apache v základní konfiguraci a postupně k němu přidávat chytrá vylepšení.

Konfigurační příkazy lze psát na různá místa konfiguračního souboru. Podle toho platí buď pro celý server nebo jen pro určitý adresář a jeho podadresáře. Kromě toho lze za jistých okolností psát konfigurační příkazy i do souboru se jménem .htaccess umístěného v adresáři s dokumenty. Podrobněji je o tom pojednáno v dokumentaci, která je v distribuci přiložena.

Nejprve si ukážeme, jak spouštět CGI skripty psané v Rexxu a v C (přeložené jako EXE). Musíme serveru sdělit, že soubory s příponami .cmd a .exe jsou CGI skripty. Docílíme toho následujícími direktivami:

AddHandler cgi-script .cmd
AddHandler cgi-script .exe

Další možností je definice uvedená přímo ve vlastnostech adresáře. Ukážeme si to na příkladu skriptů psaných v perlu. OS/2 nedokáže spouštět perl přímo. Musíme si vytvořit jednoduchý soubor s příponou .cmd, což ani nemusí být psáno v Rexxu. Stačí jediný příkaz, kterým spustíme perlovský skript. Pokud je ovšem tento skript ve stejném adresáři a vzdálený uživatel (hacker) uhádne jeho jméno, mohl by si jej stáhnout, což se nám nemusí líbit. Nastavíme si tedy, že perlovské soubory jsou CGI skripty. Ve vlastnostech adresáře tedy použijeme:

AddType application/x-httpd-cgi PL

Pokud by někdo chtěl příslušný soubor stáhnout, server by jej spouštěl jako CGI skript přímo, což ovšem nelze. Uživatel by tedy dostal chybovou zprávu.

Pokud si nechcete překládat Apache sami a přidávat další moduly, nebudete asi spokojeni s podporou češtiny. Apache totiž nastaví pouze text/html, ale nedá žádnou informaci o použitém kódování. Pomocí konfiguračních direktiv to lze změnit. Pokud máme české dokumenty v jednom adresáři (a případně podadresářích), pak stačí napsat:

AddType "text/html; charset=iso-8859-2" HTML
AddType "text/html; charset=iso-8859-2" html

Můžeme ovšem definovat vlastní typ používající třeba příponu .chtml a zavést nový typ platný pro celý server.

Dalšími užitečnými direktivami jsou Alias a Redirect. Ty umožňuji přesměrování požadavků. První direktiva pouze přeadresuje dokument mimo obvyklý strom. To je někdy užitečné pro zajištění větší bezpečnosti, neboť to hackerům ztěžuje nalezení souboru. Druhá direktiva sdělí prohlížeči, že se dokument přestěhoval, a poskytne mu novou URL (třeba i na jiném serveru).

Pomocí těchto direktiv jsem zajišťoval interaktivní přihlášky na jistou konferenci. Formulář měl snadno zapamatovatelnou URL směřující na neexistující objekt. Tato URL se objevovala v základních informacích o konferenci na jiných WWW stránkách. Direktivou Redirect byl uživatel odeslán na správný formulář. Po vypršení termínu pro přihlášky jsem pouze změnil Redirect na stránku, informující o tom, že termín vypršel, a zájemci mají kontaktovat organizátory e-mailem. Nebylo tedy nutné vyhledávat v ostatních WWW stránkách odkazy a přepisovat je.

Mnohem pokročilejší metody využití těchto direktiv popisuji v článku Network Computing via World Wide Web. Předem upozorňuji, že zmíněný článek je určen zejména zkušeným programátorům.

Zpět na začátek stránkyCGI skripty

CGI skript je vlastně program, který se spouští na serveru a jeho výstup je odeslán zpět prohlížeči. CGI znamená Common Gateway Interface a je to vlastně norma, která určuje, jaké informace má server skriptu poskytnout. Není ovšem nijak limitován programovací jazyk. Můžeme tedy použít vše, co umí OS/2 spustit.

Před několika minutami jsem zjistil, že Apache 1.3.6 umí spustit perl přímo. Stačí, když první řádek skriptu obsahuje #!perl5 a perl5.exe je v adresáři ivedeném v PATH.

Pokud píšeme HTML stránky a chceme je lokálně otestovat, stačí nám k tomu libovolný prohlížeč. Na testováni CGI skriptů ovšem potřebujeme WWW server. Apache lze nainstalovat i na počítač, který není na Internet připojen. Využije se k tomu speciální IP adresa 127.0.0.1 (postup je popsán v dokumentaci).

Při ladění formulářů je často užitečné vědět, co přesně je CGI skriptu posíláno. K tomu slouží jednoduché programy, které pouze vypíší všechny informace a s minimálním formátováním jej pošlou prohlížeči. Takový "Form Testing Tool" jsem napsal převážně pro své potřeby a najdete jej v mých Web Tools.

CGI skripty lze také využít při překódování češtiny na serveru. Bližší informace najdete v mém balíku convert.zip. Pokud v OS/2 píšu HTML stránky v češtině, pak v editoru mám kódování CP852. Tomu ale Netscape nerozumí. Abych nemusel soubor neustále konvertovat, používám zmíněný konverzní skript a o vše se postará Apache.

Zpět na začátek stránkyServer Side Includes

Termín Server Side Includes (obvyklá zkratka SSI) v jedné české knize zcela nesmyslně přeložili jako "vkládaný kód serveru". Takový překlad ovšem vůbec neříká, o co se vlastně jedná. Ve skutečnosti SSI značí objekty vkládané na straně serveru.

Víte, že pro vkládání obrázků do HTML stránek použijete příkaz <img src="obrazky/obrazek.jpg">. Tento tag je jako součást HTML kódu předán prohlížeči. V dalším kroku prohlížeč požádá server, aby mu obrázek poslal. Vložení obrázku tedy provádí prohlížeč.

SSI naproti tomu obsahuje speciální příkazy. Server prohlíží kód stránky, a pokud na takový příkaz narazí, ihned jej interpretuje. Prohlížeč tedy vůbec netuší, že server do stránky něco vložil. Kromě vkládání statických souborů lze do stránky vložit dokonce výstup programu. Apache má i podmíněné příkazy, takže vkládání lze větvit podle různých kritérií. Snadno tím zajistíme, aby všechny stránky měly jednotný vzhled. Příkladem takového přístupu mohou být WWW stránky Zpravodaje Československého sdružení uživatelů TeXu. Všimněte si, že na úvodní stránce je pouze adresa redakce, zatímco ostatní stránky obsahují ještě další odkazy. To vše je zařízeno jediným souborem, v němž provádíme větvení podle názvu požadovaného dokumentu.

Protože kód je vkládán na straně serveru, nelze takové stránky testovat lokálně v prohlížeči. Potřebujeme k jejich prohlížení Apache, ale stačí lokální instalace, nemusíme být na Internetu.

Zpět na začátek stránkyChybové zprávy

Dojde-li k nějaké chybě, vyšle server příslušnou chybovou zprávu. Všechny zprávy jsou v programu obsaženy, takže se vlastně nemusíme o nic starat. Standardní zprávy však někdy neposkytnou nejvhodnější informace a nemají vzhled odpovídající organizaci vlastnící server. Naštěstí lze vzhled i obsah chybových zpráv předefinovat. Tou chybovou zprávou může být i CGI skript, který se může pokusit o nápravu chyby a poslat náhradní objekt nebo informaci o přesměrování prohlížeči. S výhodou také můžeme v chybových zprávách využít SSI.

Mechanismem konfigurovatelných chybových zpráv byl v roce 1998 na počítači hroch486.icpf.cas.cz zařízen i bojkot Telecomu. Byl připraven nový dokumentový strom, který obsahoval pouze bojkotní stránku. Přesně o půlnoci byl automaticky vyměněn konfigurační soubor a restartován server. Zprávou pro chybu 404 (nenalezená stránka) byla opět bojkotní stránka. Uživatel tedy nikdy nemohl z tohoto serveru získat žádnou jinou informaci. Následující půlnoc byl opět vyměněn konfigurační soubor a restartován server. Vše se tak vrátilo do původního stavu.

O dalším vhodném využití si povíme v následující kapitole.

Zpět na začátek stránkyProxy server

Název pochází z latinského slova proximus = nejbližší. Jde o to, že prohlížeč nebude tahat dokumenty z Internetu přímo, ale požádá blízký proxy server, aby to udělal za něj. Má to své výhody i pro uživatele na tak dobré lince, která přenáší až 150 KB za sekundu.

Představte si, že si opakovaně prohlížíte stejné WWW stránky z různých počítačů. Stránky mohou být za nějakým úzkým místem a stahují se pomalu. Pokud použijete proxy, pak je stáhnete pouze jednou a proxy je uloží do své cache. Při dalším stahování si proxy ověří, že se stránky nezměnily (to zařídí jednoduchým dotazem) a velmi rychle pošle svoji kopii.

Někdy se nepodaří stránku stáhnout celou, protože prohlížeč oznámí překročení časového limitu. I zde pomůže proxy. Apache totiž může mít nastaven delší časový limit. Navíc existuje direktiva CacheForceCompletion, která Apachi řekne, že se má snažit stáhnout celý dokument, i když prohlížeč přestal komunikovat. Pokud původní server umí protokol HTTP/1.1 a umožňuje stahování vybraného rozmezí bajtů, pak je vysoká pravděpodobnost, že Apache stáhne celý dokument i po velmi nekvalitní lince. Prohlížeč tedy po několika pokusech dostane kompletní stránku, na níž by se sám nikdy nedostal.

Ještě významněji se to projeví na stránkách, které používají "frames". Zde totiž samotný "reload" většinou nepomůže. vyřešíme to modifikací chybových zpráv. Přinutíme Apache, aby chybová zpráva obsahovala hypertextový odkaz na stránku, kterou se nepodařilo natáhnout. V případě stránky, která používá "frames", má potom každé okno vlastní chybovou zprávu s odpovídajícím odkazem. Můžeme tedy postupně klikat na odkazy v jednotlivých oknech. Tím se sníží zátěž původního serveru a přenosových linek a dostaneme se k informaci, kterou by samotný prohlížeč nedokázal stáhnout.

Zpět na začátek stránkyVirtual hosts

Apache umožňuje provozovat na jednom počítači několik serverů. Buď má každý server svoji IP adresu (v OS/2 to musíme řešit SLIPem na virtuální sériový port, v dokumentaci Apache je to dostatečně popsáno), nebo mají všechny servery stejnou IP adresu a liší se pouze jménem. Nutno poznamenat, že druhou metodu některé starší prohlížeče nepodporují.

Vlastnost je to velmi užitečná. Já osobně poskytuji WWW stránky na několik různých serverů. Stránky vytvářím na počítači, který není na Internet připojen. Přesto chci otestovat, zda odkazy mezi jednotlivými servery jsou funkční. Mám tedy lokálně nainstalován Apache, který simuluje všechny požadované servery. Většinu odkazů tak mohu prověřit ještě předtím, než vytvořenou stránku vložím na příslušný server.

Zpět na začátek stránkyLiteratura, další informace a dostupnost programu

Nedávno jsem v jednom knihkupectví objevil dvě knížky, které se věnují Apachi. Jedna z nich je česká a pohledem jsem zjistil, že se jedná o pouhý překlad originální dokumentace. Čtenář se z ní tedy nedozví nic jiného. Kromě toho řada direktiv je vzájemně svázaná. Klikání v prohlížeči je podle mého názoru mnohem pohodlnější než neustálé převracení listů v papírové knize. Proto jsem si ji nekoupil.

Druhou knihou je český překlad knihy vydané nakladatelstvím O'Reilly. Ani v této knize se člověk nedoví o nic víc, než je uvedeno v dokumentaci. Spousta stránek se věnuje beta verzi Apache pro Windows NT, ale o verzi pro OS/2 se mlčí. Navíc je kvalita překladu dosti špatná (viz vkládaný kód serveru). Ani tuto knihu jsem nekoupil.

Základním zdrojem informací je www.apache.org. Implementaci pro OS/2 včetně podrobného návodu pro kompilaci najdete na stránkách Briana Havarda.

Chcete-li vidět Apache pro OS/2 v provozu, zkuste hroch486.icpf.cas.cz.

Zpět na začátek stránkyZávěr

Apache pro OS/2 mile překvapí hned několikrát. Poprvé při snadnosti instalace. Pak potěší rychlost a stabilita a nakonec velmi bohaté možnosti, které nabízejí téměř vše, na co si administrátor i autor WWW stránek vzpomenou. Příjemná je i cena: Apache je zdarma, a to i pro komerční použití.

Zdeněk Wagner
http://icebearsoft.euweb.cz
wagner@mbox.cesnet.cz


Úvodní stránka Webmaster Začátek stránky