Apache - Konfigurácia
1. Konfiguračný súborNajdôležitejším súborom v Apache je httpd.conf, ktorý sa nachádza v adresári Apache/conf/.
Je rozdelený do troch častí:
I. časť obsahuje viac-menej všeobecné direktívy, napríklad nastavenie portov, rôznych pomocných súborov a pod.
II. časť je hlavná konfigurácia - zabezpečenie najdôležitejších adresárov, logovacích súborov...
III. časť sa zaoberá virtuálnymi servermi.
Časti súboru označené na začiatku riadku # sú len komentáre.
ServerType - sú dva spôsoby spúšťania serveru Apache. Buď z inetd (vtedy zvolíme parameter direktívy inetd),
alebo ako samostatného démona (standalone). Odporúča sa nastaviť na standalone.
ServerType standalone
ServerRoot - hlavný adresár, v ktorom bude Apache hľadať konfiguračné súbory (adresár conf/)
a logy (adresár logs/). Zadáva sa bez lomítka na konci cesty!
ServerRoot "C:/Apache"
PidFile - súbor definovaný v tejto direktíve slúži serveru na ukladanie id procesov.
PidFile logs/httpd.pid
ScoreBoardFile - ďaľlí súbor súvisiaci s procesmi - tentokrát konkrétne na komunikáciu medzi procesmi.
Pri tejto direktíve dávame pozor, aby dva Apache nemali ten istý score board súbor!
ScoreBoardFile logs/Apache_score_board
AccessConfig a ResourceConfig - tieto dve direktívy potrebujeme v tom prípade, keď chceme/potrebujeme
používať systém troch konfiguračných súborov (httpd.conf, access.conf a srm.conf). Vtedy ResourceConfig definuje
miesto, kde sa nachádza srm.conf, a AccessConfig, ako už názov napovedá, miesto kde server nájde súbor access.conf.
Aj tu platí odporúčané používanie relatívnych ciest.
AccessConfig conf/access.conf
ResourceConfig conf/srm.conf
Timeout - definuje ako dlho bude server čakať na prijatie určitej požiadavky od klienta.
Čas udávaný touto direktívou je v sekundách a obvykle býva nastavený na 300, čo je optimálna hodnota.
Timeout 300
KeepAlive - vybaviť viac požiadaviek počas jedného spojenia:
otvorí sa spojenie na určitú požiadavku, načo sa táto požiadavka vybaví. Pokiaľ je nastavený
KeepAlive On, server počká čas definovaný direktívou KeepAliveTimeout a v prípade, že nepríde
od klienta za tento čas daľšia požiadavka, spojenie sa uzatvorí. Možné hodnoty tejto direktívy
sú On alebo Off.
KeepAlive On
MaxKeepAliveRequests - maximálny počet požiadaviek, ktoré môže Apache vybaviť v rámci jedného
Keep Alive spojenia. Optimálna hodnota je 100 požiadavok.
MaxKeepAliveRequests 100
KeepAliveTimeout - idáva čas, ktorý bude Apache čakať na prijatie ďalšej požiadavky v rámci
jedného (Keep Alive) spojenia. Po uplynutí tejto doby sa spojenie medzi serverom a klientom uzavrie.
Tak ako v direktíve Timeout, aj táto hodnota sa udáva v sekundách.
KeepAliveTimeout 15
MinSpareServers a MaxSpareServers - tu zabezpečujeme minimálny a maximálny počet voľných, neobsadených
démonov. Neobsadené kópie Apache sú potrebné napríklad pre náhly vzrast požiadaviek na server. V "kľudovom stave"
udržuje Apache počet svojich kópií medzi hodnotami MinSpareServers a MaxSpareServers. Pokiaľ sa dostane množstvo
týchto kópii pod hranicu udanú MinSpareServers, Apache spustí nové, voľné kópie. A naopak, ak počet voľných kópií
stúpne nad MaxSpareServers, Apache prebytočné kópie zruší.
MinSpareServers 8
MaxSpareServers 20
MaxClients - maximálny počet démonov Apache, ktorý možu naraz bežať.
MaxClients 150
MaxRequestPerChild - povolený počet požiadaviek na jedného bežiaceho démona Apache.
Ak sa prekročí počet týchto požiadaviek, kópia démona Apache sa zruší. Obvykle sa hodnota tejto
direktívy nastavuje na nulu, čo je vlaste vypnutie kontroly počtu požiadaviek, pretože nie je potrebná
- používa sa zriedkavo, pri niektorých typoch operačných systémov, ako je napríklad Solaris.
MaxRequestPerChild 0
Listen - definuje, na akom porte a/alebo na akej ip adrese bude Apache čakať na požiadavky
od klientov. napr.:
Listen 12.34.56.78:80
Listen 8080
znamená, že server bude "počúvať" na porte 8080 na všetkých adresách a zvlášť ešte na adrese 12.34.56.78
na porte 80.
BindAddress - určuje iba ip adresu (nie konkrétny port) na ktorej bude očakávať Apache požiadavky od
klienta. Adresa zadaná touto direktívou bude jedinou adresou, z ktorej budú akceptované požiadavky na server.
Zadanie znaku * spôsobí to isté, ako úplné vynechanie tejto direktívy - Apache bude reagovať na požiadavky na
všetkých svojich ip adresách. Táto direktíva sa v konfiguračnom súbore smie použiť iba jediný raz!
BindAddress *
Port - po BindAdress a Listen je treťou direktívou definujúcou port, na ktorom bude server čakať
požiadavky - requesty od userov. Pri súčasnom použití Listen a Port má Listen vyššiu prioritu a Apache bude
počúvať na porte udanom práve touto direktívou.
Port 80
ServerAdmin - e-mailová adresa správcu serveru. Na čo je to dobré? Napríklad pri referencii problémov -
túto adresu obvykle server vkladá do špeciálnych - generovaných stránok.
ServerAdmin spravca@upjs.sk
ServerName - Udáva DNS meno serveru, prípadne IP adresu serveru. IP adresu využijeme vtedy, ak nemáme
zaregistrovanú vlastnú doménu - meno domény, alebo v prípade, keď potrebujeme server testovať. Pri testovaní
nastavujeme obvykle ServerName na 127.0.0.1 (loopback IP).
ServerName localhost
DocumentRoot - určuje koreňový adresár s dokumentami. Doména (prípadne IP adresa) zadaná v ServerName
vlastne zastupuje tento adresár.
DocumentRoot "C:/Documents and Settings/user"
Directory - jednotlivé adresáre - oblasti na disku, ktoré sprístupňujeme užívateľom browsujúcim
na našich stránkach nastavujeme pomocou tejto direktívy. Jej použitie je trošku odlišné od predošlých direktív
- ohraničuje sa totiž do zátvoriek < a >, podobne ako tagy v jazyku HTML, čiže napríklad :
<Directory "/adresar">
Za týmto zápisom nasledujú direktívy s parametrami (napríklad Options - pozri tabuľku nižšie), definujúce
obmedzenia pre oblasť ohraničnú do úvodzoviek za slovom Directory, v tomto prípade /home/httpd/html.
Celá konfigurácia oblasti sa potom uzatvára pomocou tagu:
</Directory>
Location - ďalšia možnosť nastavenia určitej oblasti na disku. Rozdiel medzi Location a Directory
spočíva v tom, že kým s Directory definujeme fyzickú cestu, s Location definujeme priamo URL. Ak teda máme URL
napríklad : http://www.nejake-url.org/niekto a potrebujeme nastaviť obmedzenia v časti /niekto, zapíšeme to
takto:
<Location /niekto>
...direktívy... (pozri vyššie - Directory)
</Location>
Poznámka: s Directory a Location sa pracuje rovnako. Výnimkou je vynechanie parametera FollowSymLinks a SymLinksIfOwnerMatch pri direktíve Options použitej vo vnútri Location.
4. Prístupové právaPrístup k súborom na serveri môžeme zakázať/povoliť na základe nasleducúcich parametrov:
- kompletné meno domény (napr.: user.upjs.sk) alebo doména, do ktorej user patrí (upjs.sk)
- kompletná IP adresa alebo časť IP adresy (adresa siete)
- IP adresa spolu s maskou siete
Na zakázanie/povolenie prístupu sa používa direktíva Order spolu s Allow a
Deny:
Order Allow,Deny (bez medzery!!) #Deny (zamietnutie) má
vyššiu prioritu
Order Deny,Allow #vyššiu prioritu má Allow (povolenie)
ErrorDocument definuje, čo sa zobrazí užívateľovi v browseri v prípade, že daný súbor,
o ktorý žiadal, neexistuje, nemá naň práva a pod., čiže vtedy, keď je generovaná chyba
(napr.: 403 Forbiden - zákaz prístupu). Syntax tejto direktívy je :
ErrorDocument kód_chyby súbor,
kde súbor je meno súboru, ktorý sa má zobraziť, alebo text uvedený na začiatku úvodzovkami, napr.:
ErrorDocument 403 /zle_url.htm alebo ErrorDocument 403 "Ľutujem, ale zadali ste zlé URL!
Na serveri Apache môžme pracovať s dokuemntmi PHP. Aby Apache správne spolupracoval s PHP je potrebné
na počítači nainštalovať PHP a do konfiguračného súboru httpd.conf dopísat pár riadkov:
ScriptAlias /php/ "C:/php/"
AddType application/x-httpd-php .php3
AddType application/x-httpd-php .php
Action application/x-httpd-php /php/php.exe
Taktiež trosku pozmeníme DirectoryIndex:
DirectoryIndex index.php index.php3 index.phtml index.html index.htm default.html default.htm