Malý průvodce konfigurací Apache (5)

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

Sdílet

Ilustrační obrázek
Autor: Depositphotos – stori
Ilustrační obrázek
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_alias.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/libphp3.so

</IfDefine>



<IfDefine POUZIT_PHP4>

   LoadModule php4_module    modules/libphp4.so

</IfDefine>



Školení Kubernetes

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_server.org/nieco/ a pokiaľ v konfiguračnom súbore máme uvedený tento riadok:

DirectoryIndex index.htm

Zobrazí sa v browseri: http://www.moj_server.org/ni­eco/index.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.


Nejnovější články