26.5. Aktivní obsah

Apache nabízí několik způsobů, jak klientovi doručit aktivní obsah. Aktivní obsah HTML stránek je generován v závislosti na datech získaných od klienta. Např. vyhledávače poskytují seznam stránek na základě dotazu uživatele.

Apache generuje aktivní obsah třemi způsoby:

SSI (Server Side Includes)

Jde o příkazy přímo v HTML stránce zapsané jako speciální komentáře. Apache komentáře interpretuje, vytvoří příslušný obsah a výsledek pošle jako část HTML stránky.

CGI (Common Gateway Interface)

Programy v určitém adresáři. Apache jim předá parametry obdržené od klienta a klientovi vrátí výstup těchto programů. To je poměrně jednoduchý způsob, neboť lze snadno přizpůsobit mnoho existujících programů pro příkazovou řádku, aby takto spolopracovaly s Apachem.

Moduly

Apache nabízí rozhraní pro vykonání jakéhokoliv modulu. Moduly jsou programy pracující s informacemi získanými od Apache. Apache umožňuje modulům přístup k důležitým informacím jako HTTP hlavičkám. Moduly lze použít kromě generování aktivních stránek také k jiným funkcím (například ověřování uživatele). Jejich výhodou je vysoký výkon a možnosti překonávající SSI i CGI. Podrobnější informace o modulech najdete v části 26.6 – „Moduly Apache“

Normálně jsou CGI skripty vykonávány přímo serverem Apache pod uživatelským ID jejich vlastníka. Naopak moduly jsou kontrolovány interpretem, který je v serveru Apache obsažen. Není tak nutné pro každý dotaz spouštět a ukončovat samostatný proces (což zvyšuje zátěž). Skript je interpretem spuštěn pod ID webserveru.

Toto řešení má i své chyby. CGI skripty jsou totiž oproti modulům velmi robustní. Při jejich použití nemají chyby při správě zdrojů a paměti tak ničivé následky jako u modulů, neboť dojde k ukončení programu po vyřízení požadavku. Při použití modulů může dojít ke kumulaci chyb. Pokud server běží bez restartu delší dobu, mohou se chyby hromadit a vést k nestabilitě systému.

26.5.1. SSI

Server-side includes jsou příkazy ve zvláštních komentářích vykonávané Apachem. Výsledek je zahrnut ve výstupu. Například aktuální datum lze zahrnout pomocí <!--#echo var="DATE_LOCAL" -->. Znak # na konci otvírací značky (<!--) říká indiánovi, že se jedná o SSI direktivu a nikoliv o obyčejný komentář.

SSI lze aktivovat několika způsoby. Nejjednodušší je vyhledat SSI ve všech spustitelných souborech. Jiná možnost je určit, ve kterých souborech se má SSI hledat.

26.5.2. CGI

CGI je zkratka z anglického Common Gateway Interface. Díky CGI je server schopný zasílat mimo klasických statických stránek také dynamicky generované stránky. Tak je možné vytvářet stránky, které jsou výsledkem výpočtu nebo hledání v databázi. V závislosti na obdržené proměnné je server schopný vytvářet na každý dotaz zvláštní stránky lišící se obsahem.

Hlavní výhoda technologie CGI je jednoduchost. Programy jsou obvykle uloženy v určitém adresáři a spouštěny serverem jako jakékoliv jiné programy v systému. Server pak zašle výstup programu ze standardního výstupu (stdout) klientovi.

Teoreticky mohou být CGI napsány v libovolném programovacím jazyce. Obvykle jsou k tomuto účelu používány skriptovací jazyky jako Perl nebo PHP. Pokud je rychlost kritická, může být vhodnější C/C++.

V nejjednodušším případě hledá indián tyto programy ve zvláštním adresáři (cgi-bin). Ten lze nastavit v konfiguračním souboru (viz 26.3 – „Konfigurace webového serveru“). Pokud je potřeba, mohou být nastaveny další takové adresáře. Je však nebezpečné umožnit Apachi spouštět programy uživatele. Pokud jsou CGI omezeny na adresář cgi-bin, může administrátor lépe kontrolovat jejich obsah.