Malý průvodce konfigurací Apache (5)

7. 5. 2001
Doba čtení: 4 minuty

Sdílet

Dnes sa naučíme, ako pracovať v Apache s modulmi a rozoberieme si niektoré dosiaľ neopísané direktívy.
Moduly

Moduly pre webový server Apache môžu byť dvoch typov:

  • interné – sú vkompilované do Apache
  • externé – dynamicky sa aktivujú a nahrávajú podľa potrieb užívateľov

Zoznam vkompilovaných (interných) modulov získame spustením démona httpd s parametrom „-l“ ako listing. Napr.:

$ httpd -l

Príklad výstupu:

Compiled-in modules:
    http_core.c
    mod_so.c


Dvomi – asi najdôležitejšími a najpotrebnejšími (horeuvedenými) internými modulmi napevno vkompilovanými v Apache – sú http_core.c a mod_so.c. Prvý z nich (tak ako názov niekomu možno napovedá) je samotným jadrom Apache. Druhý (mod_so.c) je potrebný na to, aby sme vôbec mohli používať (nahrávať) externé moduly. Z toho logicky vyplýva, že musí byť sám interným. Jeho aktivácia nám umožní použitie dvoch direktív LoadFile a LoadModule.
To, že je nejaký modul interným, ešte neznamená, že je po štarte Apache vždy aktívny (viz niššie uvedená direktíva ClearModuleList). Pokiaľ ho chceme aktivovať použijeme direktívu AddModule:

AddModule mod_so.c

(Pozn.: za direktívou AddModule je možné uviesť aj viac ako jeden parameter, ale prehľadnejšie je aktivovať každý modul zvlášť na jednom riadku)
Týmto spôsobom aktivujeme interné aj externé moduly, ale externé najprv musíme nahrať direktívou LoadModule, ktorej syntax je:

LoadModule meno_modulu meno_súboru_modulu

Napr.:

LoadModule cgi_module     modules/mod_cgi­.so
LoadModule alias_module  modules/mod_a­lias.so

Poslednou direktívou potrebnou pri práci s modulmi je direktíva ClearModuleList. Táto čistí/nuluje zoznam modulov, ktoré sa majú aktivovať. V prípade, že by sme pred nahrávaním a aktivovaním nevyčistili tento zoznam, aktivovali by sa interné a externé moduly, ktoré nemusíme vždy všetky využiť. Preto najprv použijeme ClearModuleList, a následne môžeme nahrávať a aktivovať – vnesieme tým určitú prehľadnosť do konfiguračného súboru, pretože budeme vedieť čo sa v skutočnosti aktivuje.


V súvislosti s vyššie uvedenou témou je vhodné vysvetliť dve direktívy, ktoré značnou mierou uľahčujú prácu (nielen) s modulmi. Sú to direktívy :

<IfDefine> a <IfModule>
Tí z Vás, ktorí programujú v jazykoch ako Pascal, C a podobne, určite poznajú podmienený preklad. Pre ostatných – zadefinuje sa určitý symbol a v závislosti od neho (teda či je definovaný alebo nie je) sa ďalej riadi preklad zdrojového kódu (buď sa preloží-skompiluje, alebo neskompiluje). Veľmi podobne to funguje aj v konfigurácii Apache, s tým rozdielom, že symbol definujeme ako parameter pri spúšťaní httpd:

$ httpd -Dmeno_symbolu

Ako z príkladu vyplýva, pred meno parametra-symbolu sa pridáva písmeno „D“ pre odlíšenie od ostatných parametrov.

Úloha :
 

Pokiaľ bol definovaný symbol POUZIT_PHP3, je potrebné nahrať modul umožňujúci použitie jazyka PHP verzie 3. To isté platí pre POUZIT_PHP4 a modul PHP4.

<IfDefine POUZIT_PHP3>
   LoadModule php3_module    modules/lib­php3.so
</IfDefine>

<IfDefine POUZIT_PHP4>
   LoadModule php4_module    modules/lib­php4.so
</IfDefine>

 

bitcoin školení listopad 24

Moduly sú (alebo nie sú) nahraté, treba ich ešte aktivovať:

<IfDefine POUZIT_PHP3>
   AddModule mod_php3.c
</IfDefine>

<IfDefine POUZIT_PHP4>
   AddModule mod_php4.c
</IfDefine>

 

Pre „spojazdnenie“ PHP musíme ešte definovať MIME typy pre rôzne extensions (prípony) súborov:

<IfModule mod_php3.c>
   AddType application/x-httpd-php3 .php3
   AddType application/x-httpd-php3-source .phps
</IfModule>

<IfModule mod_php4.c>
   AddType application/x-httpd-php .php4 .php3 .phtml .php
   AddType application/x-httpd-php-source .phps
</IfModule>

Tak, hotovo. Pokiaľ budeme napríklad potrebovať podporu pre PHP verzie 3, spustíme Apache takto:

$ httpd -DPOUZIT_PHP3

Direktíva AddType priraďuje príponu súboru (rozšírenie, extension) k definovanému MIME typu. Serveru týmto povieme „čo ku čomu patrí“ – čo sa má čím spúšťať, interpretovať. Takto napríklad určujeme, že súbor s príponou „.gif“ bude patriť k MIME typu image/gif alebo „.php“ ku application/x-httpd-php. Aktuálny zoznam MIME typov sa obvykle dodáva spolu so serverom Apache (ako oddelený súbor mime.types) alebo ho môžete nájsť tu. V prípade záujmu bližšie informácie o MIME napríklad na adrese manualy.sk.

Direktíva <IfModule> vo vyššie uvedenom príklade pracuje obdobne ako <IfDefine>, netestuje však prítomnosť symbolu, ale aktívnosť modulu.
(Poznámka: ak v direktíve <IfDefine> alebo <IfModule> uvedieme pred menom symbolu resp. modulu výkričník „!“, výsledok bude negovaný. Napr.: <IfDefine !SYMBOL> … </IfDefine>. Všetko to, čo je uvedené v tomto príklade medzi tagmi, sa vykoná v prípade, že nie je definovaný symbol s názvom „SYMBOL“)

DirectoryIndex
Definuje defaultný dokument (respektíve viac alternatívnych dokumentov), ktorý sa zobrazí, ak si užívateľ nevyžiadal zo serveru konkrétny súbor. Napríklad do browseru zadáme: http://www.moj_ser­ver.org/nieco/ a pokiaľ v konfiguračnom súbore máme uvedený tento riadok:

DirectoryIndex index.htm

Zobrazí sa v browseri: http://www.moj_ser­ver.org/nieco/in­dex.htm.

IndexIgnore
Túto direktívu použijeme vtedy, keď máme povolený listing (výpis) súborov niektorého adresára a nechceme, aby užívatelia videli určitý typ súboru. Takto sa skrývajú napríklad súbory externej konfigurácie .htaccess a pod.
(Pozn.: pri definícii súboru je možné použiť aj wildcard znaky: „“ a „?“ a takisto je možné nezobrazovať súbory s konkrétnou príponou napr.: „.bak“)

V budúcej (pravdepodobne predposlednej) časti sa snáď :) dostaneme ku konfigurácii Apache pre použitie CGI skriptov a jazyka PHP.