Académique Documents
Professionnel Documents
Culture Documents
PRZYKADOWY ROZDZIA
SPIS TRECI
KATALOG KSIEK
KATALOG ONLINE
ZAMW DRUKOWANY KATALOG
TWJ KOSZYK
DODAJ DO KOSZYKA
CENNIK I INFORMACJE
ZAMW INFORMACJE
O NOWOCIACH
ZAMW CENNIK
CZYTELNIA
FRAGMENTY KSIEK ONLINE
Wydawnictwo Helion
ul. Chopina 6
44-100 Gliwice
tel. (32)230-98-63
e-mail: helion@helion.pl
Apache. Przewodnik
encyklopedyczny.
Wydanie III
Autorzy: Ben Laurie, Peter Laurie
Tumaczenie: Tomasz Sadowski
ISBN: 83-7361-124-X
Format: B5, stron: 704
Przykady na ftp: 1249 kB
Udostpniany nieodpatnie serwer WWW Apache obsuguje dzi ponad poow wszystkich
witryn w internecie i systematycznie zwiksza swj udzia w rynku.
Ksika Apache. Przewodnik encyklopedyczny. Wydanie III autorstwa dwch kluczowych
czonkw Zespou Apache, opisuje sposb pobrania, instalacji i zabezpieczania tego
serwera oraz omawia popularne rozszerzenia, umoliwiajce konstruowanie na jego
podstawie aplikacji WWW.
Serwer Apache osign rang kompletnego systemu i skutecznie konkuruje z wszystkimi
pozostaymi serwerami HTTP niezalenie od tego, czy bdziemy porwnywa je pod ktem
oferowanych moliwoci, efektywnoci, czy te szybko dziaania. Apache jest przy tym
dostpny dla wielu platform systemowych, w tym dla rnego rodzaju systemw Unix
i systemw z rodziny Windows.
Prezentowana Czytelnikom trzecia ju edycja ksiki opisuje najpopularniejsze wersje 1.3
i 2.0 serwera Apache dla systemw Windows i Unix kadc szczeglny nacisk na:
pobranie i kompilacj oprogramowania serwera,
konfiguracj i uruchamianie serwera w systemach Windows i Unix (obejmujc te
zagadnienia zwizane ze strukturami katalogw serwera i serwerami wirtualnymi),
omwienie interfejsu programowego serwera (w wersjach 1.3 i 2.0),
szczegowy opis zagadnie zwizanych z zabezpieczeniem serwera Apache
i wdroeniem go w rozbudowanych witrynach,
prezentacje penej listy dyrektyw konfiguracyjnych,
informacje na temat instalacji i testowania skryptw jzyka Perl uruchamianych
w trybie CGI oraz instalacji i korzystania z rozszerze, takich jak mod_perl, PHP,
JServ, Tomcat i Cocoon.
Dziki ksice Apache. Przewodnik encyklopedyczny administratorzy witryn WWW
nie majcy dotychczas do czynienia z serwerem Apache mog zapoznawa si z jego
dziaaniem stopniowo, analizujc i wdraajc przykadowe witryny prezentujce kolejne
etapy konfiguracji serwera. Dowiadczeni administratorzy i programici (niezalenie od tego,
czy ich rodowiskiem roboczym jest system Windows, czy Unix) doceni natomiast te
fragmenty ksiki, ktre skadaj si na kompletn i zwiz dokumentacj caego serwera.
Spis treci
Przedmowa ............................................................................................................9
Rozdzia 1. Wprowadzenie ...............................................................................19
Co robi serwer WWW? ........................................................................................................... 19
Jak dziaa Apache? .................................................................................................................. 23
Apache i sieci........................................................................................................................... 24
Jak dziaa klient?...................................................................................................................... 30
Co dzieje si po stronie serwera? ............................................................................................ 32
Planowanie instalacji serwera Apache .................................................................................... 33
Windows? ................................................................................................................................ 36
Ktra wersja Apache?.............................................................................................................. 36
Instalowanie serwera Apache .................................................................................................. 37
Kompilacja serwera Apache 1.3.x w systemie Unix ............................................................... 42
Nowe funkcje Apache 2........................................................................................................... 53
Instalacja Apache 2.0 w systemie Unix................................................................................... 56
Apache w systemach Windows ............................................................................................... 57
Spis treci
Spis treci
Rozdzia 8. Przeadresowywanie....................................................................213
Dyrektywa Alias .................................................................................................................... 214
Translacja adresw URL ....................................................................................................... 222
Korygowanie adresw ........................................................................................................... 230
Spis treci
Spis treci
Spis treci
Skorowidz ..........................................................................................................669
Wielkie otwarcie
Majc ju dziaajcy w oparciu o podstawow konfiguracj serwer, mona pokusi si
o gbsz analiz jego moliwoci, z wiksz liczb szczegw. Na szczcie rnice
pomidzy wersjami serwera Apache dla systemw uniksowych i systemw Windows
kocz si po przebrniciu przez pocztkow konfiguracj; pniej mona si ju skupi
na tworzeniu dziaajcej strony WWW.
92
Pierwszy wpis (localhost) jest obowizkowym elementem pliku i nie naley go usuwa;
nie powiniene rwnie kierowa do niego adnych da HTTP, gdy wyniki mog
by dziwne.
W kwestii pozostaych wpisw najlepiej skonsultuj si z administratorem swojej sieci lokalnej.
Witryna site.simple jest lekko zmodyfikowanym wariantem site.toddle. Skrypt go powinien dziaa bez problemw. Przypomnijmy sobie procedury uruchamiania i zatrzymywania serwera (w rnych systemach operacyjnych):
W Uniksie:
test -d logs || mkdir logs
httpd -d 'pwd' -f 'pwd'/conf/httpd.conf
i ewentualnie:
> edit error.log
93
Katalog /site.simple/htdocs zawiera, jak poprzednio, tylko jeden plik o nazwie 1.txt:
Witamy w witrynie site.simple!
W chwili obecnej moesz ju uruchomi serwer poleceniem go, przesi si do komputera-klienta i za pomoc przegldarki WWW zajrze pod adres http://www.butterthlies.
com.pl. Powiniene ujrze co takiego:
Index of /
* Parent Directory
* 1.txt
Serwer Apache przez domniemanie prowadzi nasuch na wszystkich adresach zdefiniowanych dla danego systemu, a dla wybranych rwnie udziela odpowiedzi. Jeli
w systemie zdefiniowano serwery wirtualne (w naszym przypadku nie zdefiniowano),
Apache przeglda ich list w poszukiwaniu adresu IP, ktry odpowiada adresowi, pod
ktrym odebrano nadesane danie obsugi. Ustaliwszy, o ktry serwer wirtualny chodzi, Apache uywa odpowiadajcego mu bloku w pliku konfiguracyjnym, a jeli blok
taki nie istnieje gwnego bloku konfiguracji serwera. Do zagadnienia tego wrcimy
w dalszej czci rozdziau, omawiajc dyrektywy BindAddress, Listen i <VirtualHost>, dajce administratorowi skuteczn kontrol nad serwerami wirtualnymi.
Naley zauway, e prezentowany tu sposb pracy, polegajcy na czstej zmianie wykorzystywanych konfiguracji, jest w stanie skutecznie zdezorientowa przegldark, co
stwierdzilimy zarwno w przypadku programu Netscape, jak i Internet Explorera.
W przypadku przegldarki Netscape przekonanie si o poprawnym dziaaniu serwera
wymagao na og odwieania przegldanych plikw przez klikanie przycisku Reload
przy wcinitym klawiszu Ctrl. W skrajnych przypadkach konieczne byo wyczenie
buforowania stron w pamici podrcznej poprzez wydanie polece Edit-PreferencesAdvanced-Cache, wyzerowanie rozmiarw bufora dyskowego (Disk Cache) i pamiciowego
(Memory Cache) i wymuszenie kadorazowego badania aktualnoci dokumentu (zazna-
94
czenie przycisku opcji Every Time). W przypadku Internet Explorera konieczne okazao
si ustawienie opcji sterujcej czstotliwoci porwnywania zawartoci bufora z treci
odpowiedzi na Przy kadej wizycie na tej stronie (w oknie ustawie Tymczasowych plikw
internetowych) w ramach okna Opcje internetowe. Jeli nie wykonasz tych zabiegw, musisz liczy si z moliwoci wywietlenia przez przegldark mieszanki kilku ostatnio
odebranych z serwera stron. Dzieje si tak oczywicie dlatego, i w naszych dowiadczeniach bez przerwy onglujemy rnymi wersjami witryn, katalogw i plikw, czego
trzewo mylcy administrator ani uytkownik na og nie robi. Jeli jaki plik zostanie
zastpiony starsz wersj, przegldarka dochodzi do skdind susznego wniosku, e
zawarto pamici podrcznej jest bardziej aktualna i oczywicie j wywietla.
Wrmy jednak do rzeczy. Zakocz prac programu Apache, naciskajc na klawiaturze
serwera klawisze Ctrl+C (lub inn kombinacj suc do przerywania dziaania programu) i obejrzyj zawarto pliku /logs/access_log. Powinien on zawiera co w rodzaju
192.168.123.1 - - [<data i godzina>] "GET / HTTP/1.0" 200 256
Liczba 200 jest kodem odpowiedzi zwracanym przez serwer (ang. HTTP response code)
i oznacza, e operacja si udaa, za 256 liczb przesanych podczas transakcji bajtw.
Plik /error_log powinien by pusty, poniewa caa operacja przebiega bez bdw.
Warto oczywicie zaglda tam od czasu do czasu, chocia skojarzenie daty i czasu wpisu
z bdem, ktry wystpi jaki czas temu, bywa kopotliwe i nieraz trzeba w tym celu
mocno wysili pami.
ycie niestety bywa mniej przyjemne i czasami co si psuje. Dla przykadu, klient moe
zada od serwera nieistniejcego dokumentu. Sytuacj tak mona obsuy za pomoc dyrektywy ErrorDocument.
ErrorDocument
Dyrektywa ErrorDocument pozwala na okrelenie czynnoci podejmowanej w sytuacji, kiedy klient odwouje si do nieistniejcego dokumentu.
ErrorDocument kod-bdu nazwa-dokumentu
Zastosowanie: konfiguracja gwna, serwery wirtualne, katalogi, pliki .htaccess
Zaczynamy na powanie
95
tym, i jest poprzedzony znakiem cudzysowu ("), ktry nie jest oczywicie przesyany
do klienta. W niektrych przypadkach Apache docza do komunikatu dodatkowe informacje i objanienia.
Uywane w dyrektywie ErrorDocument adresy URL mog by adresami lokalnymi
(rozpoczynaj si wwczas znakiem ukonika /) lub penymi adresami zawierajcymi nazw wza. A oto kilka przykadw:
ErrorDocument
ErrorDocument
ErrorDocument
ErrorDocument
500
404
401
403
http://gdzies.tam.com/cgi-bin/test
/cgi-bin/zlyadres.pl
/rejestracja.html
"Nieczynne z powodu urlopu"
Zwrmy uwag, e uycie w dyrektywie ErrorDocument penego adresu URL (rozpoczynajcego si od prefiksu metody, np. http) powoduje przesanie do klienta polecenia przeadresowania nawet wtedy, gdy dokument identyfikowany adresem znajduje
si na tym samym serwerze. Fakt ten ma kilka konsekwencji, z ktrych najwaniejsz
jest niemono odwoania si do nielokalnego dokumentu w przypadku obsugi bdu
numer 401 (co wynika z zasady dziaania podstawowego schematu uwierzytelniania
(Basic) w protokole HTTP).
Zaczynamy na powanie
Plik konfiguracji serwera httpd.conf znajdujcy si w katalogu /site.first ma posta:
User webuser
Group webgroup
ServerName localhost
DocumentRoot /usr/www/site.first/htdocs
TransferLog logs/access_log
W pierwszej edycji ksiki omawialimy w tym podrozdziale rwnie dyrektywy AccessConfig i ResourceConfig. Uycie w nich jako argumentu urzdzenia pustego
(/dev/null w Uniksie, NUL w Windows) pozwalao na zablokowanie odwoa do plikw
srm.conf i access.conf, co byo niezbdne w przypadku nieobecnoci tych ostatnich. Poniewa nowsze wersje Apache po prostu nie przejmuj si brakiem wspomnianych plikw, uycie obu dyrektyw jest obecnie zbdne. W przypadku ich uycia wskazywane
przez nie pliki zostan wczone do pliku konfiguracyjnego serwera. Od wersji 1.3.14
dyrektywy te mog wskazywa nie pliki, a katalogi wtedy do pliku konfiguracyjnego
serwera wczona zostanie zawarto wszystkich plikw przechowywanych w tych katalogach.
W Apache 2.0 dyrektywy AccessConfig i ResourceConfig zostay zniesione, wic
ich umieszczenie w pliku spowoduje zgoszenie przez serwer komunikatu o bdzie konfiguracji. Zamiast nich mona zastosowa dyrektywy Include: Include conf/srm.
conf i Include conf/access.conf (w podanej kolejnoci) na kocu gwnego pliku
konfiguracyjnego.
96
Zaczynamy na powanie
97
<hr>
<p align=right>
Projekt pocztwek: Harriet@alart.demon.co.uk
<hr>
<br>
Butterthlies Polska sp. z o.o. * 99-000 Helionowo
</br>
</body>
</html>
Nasza strona pojawi si po raz pierwszy w katalogu /site.first/htdocs, ale w dalszej czci ksiki bdziemy j rwnie wykorzystywa w wielu innych witrynach. W takiej
sytuacji mona ulokowa odpowiednie pliki w jednym, centralnym katalogu i utworzy do nich dowizania z innych katalogw, wykorzystujc uniksowe polecenie ln. Co
wicej, kada zmiana oryginalnego pliku bdzie natychmiast widoczna we wszystkich
dowizaniach. Mamy wic katalog /usr/www/APACHE3/main_docs i plik dokumentu catalog_summer.html. Plik ten odwouje si do kilku oryginalnych zdj, przechowywanych
w postaci czterech plikw .jpg. Wszystkie te pliki znajduj si w katalogu /main_docs
i zostan dowizane do odpowiednich plikw w katalogu htdocs:
% ln /usr/www/APACHE3/main_docs/catalog_summer.html
% ln /usr/www/APACHE3/main_docs/bench.jpg
W ten sam sposb naley wykona dowizania do pozostaych plikw. Powysze polecenie powinno by wykonywane z wntrza katalogu /site.first/htdocs.
Po wykonaniu w tym katalogu polecenia ls okae si, e jest on peen potrzebnych nam
plikw.
W systemie Windows nie istnieje pojcie dowizania, tote bdziemy musieli za kadym
razem kopiowa pliki.
Plik index.html
Powyszy wydruk zawiera domylny indeks zawartoci katalogu, bdcy swego rodzaju protez, generowan automatycznie przez program Apache w przypadku braku
prawdziwego indeksu. Sprbujmy zatem stworzy porzdny indeks i zapisa go w pliku /htdocs/index.html:
98
Aby wszystko wygldao powaniej, dorzucilimy przy okazji jeszcze jeden plik, catalog_
autumn.html (idc po linii najmniejszego oporu, skopiowalimy plik catalog_summer.html,
zmieniajc w nim tylko por roku), tak wic w indeksie ostatecznie znalazy si dwa cza.
Jeli klient (przegldarka) w nadesanym przez siebie daniu przekae adres URL katalogu zawierajcego plik index.html, Apache automatycznie przele ten plik klientowi,
traktujc go jako domylny indeks katalogu (zachowanie to mona zmodyfikowa za pomoc dyrektywy DirectoryIndex). Kolejne odwoanie do adresu http://www.butterthlies.
com.pl powinno wic da nastpujcy efekt:
Witamy w firmie Butterthlies Polska
* Katalog - lato
* Katalog - jesie
--------------------------------------------------Butterthlies Polska sp. z o.o. * 99-000 Helionowo
Oczywicie jako dowiadczeni marketingowcy nie moemy zapomnie o rejestracji naszej witryny w wyszukiwarkach internetowych. Dziki temu ju wkrtce nasze strony
zaczn odwiedza pierwsi klienci (zostawiajc po sobie lady w pliku /logs/access_log),
a kiedy zapoznaj si z nasz fantastyczn ofert rozdzwoni si telefony z zamwieniami, a my wkrtce zostaniemy milionerami.
Dyrektywy blokowe
Apache udostpnia cay szereg tak zwanych dyrektyw blokowych (ang. block directives).
Dyrektywy te pozwalaj ograniczy zasig dziaania innych, zawartych w nich dyrektyw do okrelonych serwerw wirtualnych, katalogw czy te plikw. Dyrektywy blokowe s niezwykle istotne w praktyce, bowiem to wanie one a w szczeglnoci dyrektywa <VirtualHost> umoliwiaj administratorowi uruchomienie wikszej
liczby niezalenych serwerw WWW poprzez pojedyncze wywoanie programu Apache. Stwierdzenie to nabierze wikszego sensu, gdy przejdziemy do omawiania obsugi
kilku witryn (zobacz podrozdzia Implementacja dwch witryn w rozdziale 4.).
Obecnie zajmiemy si skadni dyrektyw blokowych.
Dyrektywy blokowe
99
<VirtualHost>
<VirtualHost wze[:port]>
...
</VirtualHost>
Zastosowanie: konfiguracja gwna
100
<Directory> i <DirectoryMatch>
<Directory katalog>
...
</Directory>
Zastosowanie: konfiguracja gwna, serwery wirtualne
i
<DirectoryMatch /[a-d].*>
<Files> i <FilesMatch>
<Files plik>
...
</Files>
Zastosowanie: konfiguracja gwna, serwery wirtualne, pliki .htaccess
Dyrektywy blokowe
101
nie poprzedzonymi znakiem tyldy. Aby zatem ograniczy dziaanie bloku do trzech najpopularniejszych w Internecie typw plikw graficznych, musimy uy dyrektywy:
<FilesMatch "\.gif|jpe?g|png$">
<Location> i <LocationMatch>
<Location adres-URL>
...
</Location>
Zastosowanie: konfiguracja gwna, serwery wirtualne
Uycie dyrektywy <Location> pozwala na ograniczenie zasigu dziaania bloku dyrektyw do zadanych adresw URL. Podobnie jak poprzednio, adresy mog zawiera symbole wieloznaczne oraz wyraenia regularne poprzedzone znakiem tyldy. Zgodnie z reguami interpretacji wyrae regularnych wprowadzonymi w programie Apache 1.3,
symbole (*) i (?) nie spowoduj dopasowania znaku ukonika (/). Argumentami dyrektywy <LocationMatch> s wyraenia regularne nie poprzedzone znakiem tyldy (~).
Wikszo dyrektyw uywanych w bloku <Directory> moe by rwnie stosowana
w bloku <Location>. Naley jednak pamita, e uycie w nim dyrektywy AllowOverride, chocia poprawne z formalnego punktu widzenia, jest pozbawione sensu.
<IfDefine>
<IfDefine nazwa>
...
</IfDefine>
Dyrektywa <IfDefine> pozwala na warunkowe uaktywnienie bloku dyrektyw w przypadku uruchomienia programu Apache z opcj D nazwa4. Pozwala to na zamknicie
kilku wariantw konfiguracji w pojedynczym pliku httpd.conf. Moliwo ta przydaje si
gwnie podczas testowania i tworzenia wersji dystrybucyjnych, jest natomiast rzadziej
stosowana w przypadku regularnych witryn o ustalonej strukturze.
<IfModule>
<IfModule [!]nazwa-pliku-moduu>
...
</IfModule>
Opcja ta definiuje symbol o zadanej nazwie; zob. te Opcje wywoania programu Apache
w rozdziale 2. przyp. tum.
102
Dyrektywa <IfModule> pozwala na warunkowe uaktywnienie bloku dyrektyw w zalenoci od tego, czy modu o danej nazwie zosta doczony do programu Apache
(w trakcie kompilacji bd te dynamicznie, poprzez zaadowanie w trakcie pracy pliku
DLL). Poprzedzenie nazwy moduu znakiem wykrzyknika (!) powoduje uaktywnienie
bloku w przypadku, gdy modu nie zosta doczony. Bloki ograniczone dyrektywami
<IfModule> mog by zagniedane. Parametr nazwa-pliku-moduu powinien odpowiada nazwie pliku rdowego moduu, na przykad mod_log_conf.c.
Pozostae dyrektywy
Pozostao nam do omwienia jeszcze kilka dyrektyw o charakterze administracyjnym.
ServerName
ServerName nazwa-domenowa
Zastosowanie: konfiguracja gwna, serwery wirtualne
UseCanonicalName
UseCanonicalName on|off
Warto domylna: on
Zastosowanie: konfiguracja gwna, serwery wirtualne, katalogi, pliki .htaccess
Dyrektywa ta steruje sposobem tworzenia przez Apache adresw wskazujcych na siebie, co ma miejsce np. w przypadku przeadresowania odwoania adresu http://
www.firma.com/jakis/katalog do poprawnej formy http://www.firma.com/jakis/katalog/ (rnica tkwi w kocowym znaku ukonika). W przypadku wczenia dyrektywy UseCanonicalName (stan domylny), do przeadresowania zostanie uyta nazwa serwera i numer portu zadane dyrektywami ServerName i Port (ale nie w przypadku serwera
Apache 2.0). Jej wyczenie spowoduje uycie nazwy i numeru portu okrelonej w oryginalnym daniu.
Dyrektywa UseCanonicalName przydaje si midzy innymi w sytuacji, w ktrej komputery uytkownikw nale do tej samej domeny co serwer WWW (ma to miejsce np.
w sieciach typu intranet). W takim przypadku uytkownik moe odwoywa si do serwera za pomoc nazwy skrconej (np. www), oszczdzajc sobie w ten sposb wpi-
Pozostae dyrektywy
103
sywania penej nazwy domenowej (np. www.firma.com). Jeli dyrektywa UseCanonicalName jest aktywna, podanie przez uytkownika adresu bez kocowego ukonika
(np. http://www/katalog) spowoduje przeadresowanie dania do adresu URL http://www.
firma.com/katalog/, podczas gdy w przypadku wyczenia dyrektywy danie trafioby
pod adres http://www/katalog/. Ma to oczywiste zastosowanie w sytuacji korzystania dostpu autoryzowanego ponowne uycie nazwy serwera zwalnia uytkownika od koniecznoci powtrnego przechodzenia przez procedur autoryzacji, co staoby si
w momencie zorientowania si przez przegldark, e nazwa serwera ulega zmianie.
Inne, bardziej zoone zastosowania wi si z translacj nazw i adresw zwizan
z pewnymi aspektami uycia zapr sieciowych.
ServerAdmin
ServerAdmin adres-e-mail
Zastosowanie: konfiguracja gwna, serwery wirtualne
ServerSignature
ServerSignature off|on|email
Warto domylna: off
Zastosowanie: katalogi, pliki .htaccess
ServerTokens
ServerTokens productonly|min[imal]|OS|full
Warto domylna: full
Zastosowanie: konfiguracja gwna
104
OS
Serwer zwraca swoj nazw i numer wersji oraz nazw macierzystego systemu operacyjnego, np. Apache v1.3 (Unix).
full
Serwer zwraca dane opisane powyej oraz informacje o wchodzcych w skad jego
kodu moduach, np. Apache 1.3 (Unix) PHP/3.0 MojModul/1.2.
ServerAlias
ServerAlias nazwa1 nazwa2 nazwa3 ...
Zastosowanie: serwery wirtualne
ServerPath
ServerPath cieka
Zastosowanie: serwery wirtualne
Protok HTTP/1.1 umoliwia zwizanie z tym samym adresem IP kilku nazw domenowych serwerw. W takiej sytuacji klient identyfikuje odpowiedni serwer poprzez
przesanie w nagwku dania pola Host: nazwa-serwera. Chocia migracja do protokou HTTP zostaa ju prawie zakoczona, niektre przegldarki bd zapewne jeszcze
przez jaki czas uyway protokou HTTP/1.0, nie przesyajc pl Host5. Z tego te
wzgldu stworzono dyrektyw ServerPath pozwalajc na dostp do witryny poprzez podanie cieki.
Naley tu podkreli, e uycie dyrektywy ServerPath jest nieco kopotliwe, wymaga
bowiem ogromnej dyscypliny w kwestii spjnoci zapisu czy uywanych wewntrz
witryny. Wszystkie one musz by zapisywane w postaci wzgldnej, tylko wtedy bowiem bd prawidowo wsppracoway z rnymi adresami URL. Jeli jednak musisz
zapewni w witrynie obsug przegldarek nie korzystajcych z protokou HTTP/1.1
i nie przesyajcych pl Host, w zasadzie nie masz wyboru.
Zamy, dla przykadu, e utworzylimy dwie witryny o nazwach www.firma.com i sklep.
firma.com, przypisujc im obu ten sam adres IP, np. 192.168.123.2. Nasz plik httpd.
conf wyglda tak:
<VirtualHost 192.168.123.2>
ServerName www.firma.com
DocumentRoot /usr/www/firma
5
Pozostae dyrektywy
105
ServerPath /firma
</VirtualHost>
<VirtualHost 192.168.123.2>
ServerName sklep.firma.com
DocumentRoot /usr/www/sklep
ServerPath /sklep
</VirtualHost>
ScoreBoardFile
ScoreBoardFile nazwa-pliku
Warto domylna: logs/apache_status
Zastosowanie: konfiguracja gwna
CoreDumpDirectory
CoreDumpDirectory katalog
Warto domylna: <ServerRoot>
Zastosowanie: konfiguracja gwna
106
SendBufferSize
SendBufferSize liczba
Warto domylna: ustalana przez system operacyjny
Zastosowanie: konfiguracja gwna
Dyrektywa ta pozwala powikszy wielko bufora transmisji uywanego przez procedury obsugi protokou TCP/IP ponad domyln warto okrelan przez system operacyjny. W specyficznych przypadkach pozwala to na popraw wydajnoci, jednak nie radzimy Ci zmienia domylnego ustawienia parametrw TCP/IP, o ile nie znasz si na
rzeczy naprawd dobrze.
LockFile
LockFile plik
Warto domylna: logs/accept.lock
Zastosowanie: konfiguracja gwna
AcceptMutex
AcceptMutex default|metoda
Warto domylna: default
Zastosowanie: Konfiguracja gwna
Pozostae dyrektywy
107
kompilacji. Wybr optymalnej metody uzaleniony jest oczywicie od cech systemu operacyjnego i architektury serwera. Szczegowe informacje na ten temat mona znale
pod adresem http://httpd.apache.org/docs-2.0/misc/perf-tuning.html.
W przypadku rezygnacji z okrelenia wartoci dyrektywy AcceptMutex lub ustawienia
jej na warto domyln, serwer skorzysta z ustawie okrelonych w trakcie kompilacji.
Pozostae dostpne metody zostay wyliczone poniej. Warto odnotowa, e nie wszystkie
metody s odpowiednie dla kadej platformy. Jeeli dana metoda nie jest na konkretnej
platformie obsugiwana, prba uruchomienia serwera spowoduje zapisanie w pliku
dziennika bdw odpowiedniego komunikatu i listy dostpnych metod szeregowania.
flock
Synchronizacja dostpu do pliku okrelonego wartoci dyrektywy LockFile realizowana jest za porednictwem systemowego wywoania flock().
fcntl
Synchronizacja dostpu do pliku okrelonego wartoci dyrektywy LockFile realizowana jest za porednictwem systemowego wywoania fcntl().
sysvsem
Synchronizacja dostpu do pliku realizowana jest przy uyciu semaforw zgodnych
ze specyfikacj System V.
pthread
Synchronizacja dostpu do pliku realizowana jest przy uyciu semaforw zgodnych
ze specyfikacj POSIX Threads (PThreads).
KeepAlive
KeepAlive liczba
Warto domylna: 5
Zastosowanie: konfiguracja gwna
Skoro dany uytkownik raz odwoa si do witryny, istniej spore szanse, e za chwil
uczyni to ponownie. Minimalizacj niepodanych opnie mona uzyska poprzez
podtrzymanie otwartego poczenia, jednak liczb odwoa w trakcie tak wyduonego
poczenia warto ograniczy, aby zapobiec nadmiernej konsumpcji zasobw serwera.
Ustalenie dopuszczalnej liczby odwoa realizowane jest za pomoc dyrektywy KeepAlive; warto domylna, rwna 5, moe zosta powikszona w przypadku, gdy struktura witryny zawiera wicej poziomw drzewa katalogw. Warto wspomnie, e przegldarka Netscape Navigator 2 zawieraa bd zakcajcy dziaanie podtrzymywania
pocze; poczwszy od wersji 1.2, Apache automatycznie wykrywa uycie tej przegldarki,
lokalizujc w nagwkach odebranych da cig Mozilla/2. Problem mona rwnie
wyeliminowa poprzez uycie dyrektywy BrowserMatch (zobacz rozdzia 13.).
KeepAliveTimeout
KeepAliveTimeout czas-w-sekundach
Warto domylna: 15
Zastosowanie: konfiguracja gwna
108
TimeOut
TimeOut czas-w-sekundach
Warto domylna: 3006
Zastosowanie: konfiguracja gwna
HostNameLookups
HostNameLookups on|off|double
Warto domylna: off8
Zastosowanie: konfiguracja gwna, serwery wirtualne, katalogi
W wersjach Apache wczeniejszych ni 1.2 warto ta wynosia 1200 sekund przyp. tum.
W wersjach Apache wczeniejszych ni 1.3 warto ta wynosia on, o czym warto pamita
podczas aktualizacji serwera.
Pozostae dyrektywy
109
Include
Include plik
Zastosowanie: konfiguracja gwna
Dyrektywa ta powoduje wstawienie zawartoci pliku w miejscu jej wystpienia w pliku konfiguracji serwera. Poczwszy od wersji 1.3.14, jeeli plik wskazuje katalog, do
pliku konfiguracyjnego wczana jest zawarto wszystkich plikw znajdujcych si
w katalogu i jego podkatalogach.
Limit
<Limit metoda1 metoda2 ...>
...
</Limit>
Dyrektywa blokowa <Limit metoda> definiuje blok zawierajcy dyrektywy adekwatne dla poszczeglnych metod nadchodzcych da HTTP. Przykadowo:
<Limit GET POST>
... dyrektywy ...
</Limit>
spowoduje ograniczenie zastosowania dyrektyw zdefiniowanych wewntrz bloku <Limit> do tych da, ktre odwoyway si do metod GET lub POST protokou HTTP.
Zwykle kontrola dostpu realizowana jest identycznie dla wszystkich metod protokou
HTTP. Jednak w oglnym przypadku dyrektywy kontroli dostpu nie powinno si
umieszcza wewntrz dyrektywy blokowej <Limit>.
Dyrektywa <Limit> suy gwnie do nakadania ogranicze zwizanych z kontrol
dostpu i wpywajcych na realizacj da zawierajcych wskazane w nagwku bloku
metody protokou HTTP. dania nie zawierajce wymienionych tam metod nie podlegaj adnym ograniczeniom. Ograniczenia zdefiniowane wewntrz dyrektywy grupowej
<Limit> nie wpywaj w aden sposb na realizacj da nie zawierajcych wskazanych metod. Poniszy przykad wyznacza sposb kontrolowania da POST, PUT i DELETE, nie wpywajc na obsug da odwoujcych si do pozostaych metod HTTP:
<Limit POST PUT DELETE>
Require valid-user
</Limit>
Nazwy metod, wymieniane w nagwku bloku <Limit>, musz nalee do zbioru GET,
POST, PUT, DELETE, CONNECT, OPTIONS, TRACE, PATCH, PROPFIND, PROPPATCH, MKCOL,
COPY, MOVE, LOCK i UNLOCK. Wielko liter w nazwie metody jest istotna. Wyspecyfikowanie w bloku <Limit> metody GET powoduje objcie restrykcjami dostpu zdefiniowanymi w tym bloku rwnie da HEAD.
110
Zasadniczo nie zaleca si stosowania dyrektywy <Limit>, jeli nie jest to bezwzgldnie
potrzebne (na przykad w przypadku, kiedy konfiguracja serwera obejmuje implementacj metody PUT, ktra jednak z oczywistych wzgldw powinna podlega cilejszym
ograniczeniom ni metoda GET) i obeszlimy si bez niej w przykadzie site.authent. Niestety, dostpna w sieci dokumentacja serwera Apache zachca do niewaciwego stosowania tej dyrektywy, wic jest ona czsto naduywana.
<LimitExcept>
<LimitExcept metoda1 metoda2 ...>
...
</LimitExcept>
Blok utworzony dyrektywami <LimitExcept> i </LimitExcept> suy do wydzielania tych dyrektyw kontroli dostpu, ktre stosowane bd wobec da zawierajcych
metody HTTP nie wymienione w nagwku bloku. Jest to dyrektywa komplementarna
wobec <Limit> i moe zawiera dyrektywy aplikowane zarwno do standardowych,
jak i niestandardowych (lub nierozpoznanych) metod. Patrz opis dyrektywy <Limit>.
LimitRequestBody
LimitRequestBody liczba-bajtw
Warto domylna: 0
Zastosowanie: konfiguracja gwna, serwery wirtualne, katalog, pliki .htaccess
LimitRequestFields
LimitRequestFields liczba
Warto domylna: 100
Zastosowanie: konfiguracja gwna
Pozostae dyrektywy
111
LimitRequestFieldSize
LimitRequestFieldSize liczba-bajtw
Warto domylna: 8190
Zastosowanie: konfiguracja gwna
LimitRequestLine
LimitRequestLine liczba-bajtw
Warto domylna: 8190
Zastosowanie: konfiguracja gwna
112
Header
Header set|append|add nagwek "warto"
Header unset nagwek
Zastosowanie: konfiguracja gwna, serwery wirtualne, pliki access.conf
i .htaccess
Dyrektywa ta pozwala na zastpienie, doczenie bd usunicie nagwkw HTTP odpowiedzi serwera. Rodzaj dziaania w stosunku do nagwka jest okrelany pierwszym
parametrem dyrektywy. Moe on przyj jedn z nastpujcych wartoci:
set
Nagwek odpowiedzi jest ustawiany. Jeli wczeniej zdefiniowany zosta nagwek
o identycznej nazwie, zostanie on zastpiony nagwkiem definiowanym bieco.
append
Warto nagwka odpowiedzi jest doczana do wartoci nagwka o tej samej nazwie
zdefiniowanego wczeniej. Nowa warto oddzielana jest od poprzedniej przecinkiem.
Jest to standardowa metoda definiowania wielowartociowych nagwkw HTTP.
113
add
Nagwek odpowiedzi jest dodawany do istniejcego zbioru nagwkw, nawet jeli
nagwek o tej samej nazwie ju wystpuje w zbiorze nagwkw. Tak wic w wyniku stosowania tej opcji moliwe jest utworzenie odpowiedzi zawierajcej kilka identycznych nagwkw o rnych wartociach. Konsekwencje interpretacji takiej odpowiedzi przez klienta s nieokrelone, dlatego zaleca si stosowanie zamiast opcji
add opcji append.
unset
Nagwek odpowiedzi o wskazanej nazwie jest usuwany z odpowiedzi. Jeli w odpowiedzi zdefiniowano kilka nagwkw o tej samej nazwie, kady z nich zostanie
usunity ze zbioru nagwkw odpowiedzi.
Po opcji definiujcej rodzaj operacji na zbiorze nagwkw podawana jest nazwa nagwka (moe ona zawiera tradycyjny znak dwukropka, ale nie jest to wymagane). Wielko liter parametrw dyrektywy nie ma znaczenia. W przypadku opcji add, append
i set wymagane jest okrelenie trzeciego parametru, interpretowanego jako warto nagwka. Jeli warto ta zawiera znaki spacji, powinna zosta ujta w znaki cudzysowu.
Nie mona poda wartoci nagwka w przypadku opcji unset.
Kolejno przetwarzania
Dyrektywa Header moe by definiowana w niemal dowolnym miejscu pliku konfiguracyjnego, zarwno w kontekcie konfiguracji gwnej, w blokach dyrektyw dla serwerw wirtualnych, wewntrz blokw <Directory>, <Location> i <Files> oraz wewntrz plikw .htaccess.
Kolejno przetwarzania dyrektyw Header jest nastpujca:
konfiguracja gwna;
serwer wirtualny;
bloki <Directory> i pliki .htaccess;
<Location>;
<Files>.
Istotna jest kolejno wystpowania dyrektyw. Poniszy przykad ilustruje zniesienie
zdefiniowanej wczeniej dyrektywy:
Header append Author "Jan Nowak"
Header unset Author
114
Dyrektywy Header s jeszcze przed wysaniem odpowiedzi przetwarzane przez przypisane do nich procedury obsugi. Oznacza to, e niektre z nagwkw, dodane bezporednio przed odesaniem odpowiedzi do klienta, nie mog zosta usunite czy nadpisane. Dotyczy to midzy innymi nagwkw Date: i Server:.
Options
Options opcja opcja ...
Warto domylna: All
Zastosowanie: konfiguracja gwna, serwery wirtualne, katalogi, pliki
.htaccess
Includes
Brak okrelenia tej opcji uniemoliwia przetwarzanie przez serwer polece wstawianych SSI.
IncludesNOEXEC
Okrelenie tej opcji oznacza przyzwolenie na przetwarzanie polece wstawianych,
z wyjtkiem polece exec i include w odniesieniu do skryptw CGI.
Indexes
Jeeli klient odwoa si w daniu do URL-a, ktry zostanie odwzorowany do katalogu, w ktrym nie ma pliku index.html, okrelenie tej opcji pozwoli na zastosowanie zestawu polece indeksowania zwracajcych sformatowany wydruk zawartoci katalogu.
115
MultiViews
Uaktywnia obsug wielowidokowej treci dokumentw. Negocjacja zawartoci dokumentw obejmuje m.in. wybr wersji jzykowej (dyrektywa AddLanguage) i formatu plikw graficznych. Szersze omwienie tego tematu zawiera rozdzia 6.
SymLinksIfOwnerMatch
Serwer korzysta z rozwini dowiza symbolicznych wycznie w przypadku, kiedy
plik uzyskany po rozwiniciu dowizania naley do uytkownika, do ktrego naley
rwnie samo dowizanie.
Opcja ta jest ignorowana wewntrz bloku <Location>.
Poszczeglne opcje mog by poprzedzane znakami (+) lub (-), oznaczajcymi odpowiednio: uaktywnienie bd zablokowanie opcji. Zgodnie z tym, ponisza dyrektywa
spowoduje uaktywnienie indeksowania, ale zablokuje moliwo wykonywania skryptw CGI:
Options +Indexes -ExecCGI
Jeli w dyrektywie nie zostan okrelone adne opcje, dyrektywa jest interpretowana
tak, jakby towarzyszy jej specyfikator All (co jednak nie oznacza uaktywnienia funkcji
MultiViews). Okrelenie dowolnej opcji znosi domylne zaoenie specyfikatora All.
Powoduje to przynajmniej jeden, niepodany efekt, ktry zademonstrujemy na przykadzie pliku /site.options. Ilustracja tego efektu wymaga te nieznacznej modyfikacji
skryptu go. Jego nowa zawarto to:
test -d logs || mkdir logs
httpd -f 'pwd'/conf/httpd$1.conf -d'pwd'
przeadujmy serwer, zatrzymujc go i ponownie uruchamiajc za porednictwem polecenia ./go 1. Po ponownym odwoaniu si do katalogu w oknie przegldarki pojawi
si do nieprzyjemny komunikat:
FORBIDDEN
You dont have permissions to access / on this serwer
116
(lub podobny; jego tre uzaleniona jest od konfiguracji przegldarki). Przyczyn odmowy obsugi dania jest to, e kiedy w pliku konfiguracyjnym nie okreli si dyrektywy Options, domylnie przyjmowana jest dyrektywa Options All. Natomiast po
jawnym zadeklarowaniu opcji ExecCGI wszelkie pozostae opcje zostay po zniesieniu
dyrektywy domylnej zablokowane. Naley wtedy zmieni tre pliku konfiguracyjnego
(/conf/httpd2.conf) tak, aby zawiera wiersz:
Options +ExecCGI
Jeeli okreleniu opcji nie towarzyszy znak (+) lub (-) i w pliku zadeklarowanych jest
kilka dyrektyw, serwer bierze pod uwag ostatni. Przykadowo (/conf/httpd3.conf):
Options ExecCGI
Options Indexes
spowoduje uaktywnienie tylko opcji Indexes. Skrypty CGI nie bd dziaa, cho przyczyna tego stanu rzeczy nie jest dla pocztkujcych administratorw oczywista. Podobny efekt wystpuje te przy wielokrotnym definiowaniu dyrektywy Options w osobnych blokach <Directory>:
<Directory /web/docs>
Options Indexes FollowSymLinks
</Directory>
<Directory /web/docs/specs>
Options Includes
</Directory>
Restart serwera
117
Restart serwera
Niekiedy zachodzi potrzeba zatrzymania serwera Apache i ponownego jego uruchomienia z uwzgldnieniem nowej zawartoci pliku konfiguracji, zwykle po dodaniu do niego
definicji nowego serwera wirtualnego lub te po takiego serwera usuniciu. Oczywicie
restart mona wykona metod siow, unicestwiajc proces gwny serwera poleceniem
kill <PID> i ponownie uruchamiajc serwer. Tyle e wszelkie realizowane w tym czasie transakcje zostan zerwane, co moe nieco poirytowa zalogowanych i korzystajcych z witryn uytkownikw. Ostatnie wersje Apache pozwalaj na bardziej eleganckie
przeadowanie serwera gwnego bez gwatownego wyrzucenia z systemu procesw
potomnych zajtych obsug da.
W systemie Unix serwer Apache moe zosta przeadowany na trzy sposoby (patrz te
rozdzia 2.):
Unicestwienie procesu gwnego serwera i uruchomienie go z uwzgldnieniem
nowej wersji pliku konfiguracyjnego:
% kill PID
% httpd [opcje]
agodny restart przez przesanie do procesu serwera sygnau -USR1. Reakcj serwera
na otrzymanie takiego sygnau jest ponowny odczyt pliku konfiguracyjnego przy
umoliwieniu procesom potomnym dokoczenia realizowanych aktualnie da
i transakcji. Po zakoczeniu transakcji proces potomny zastpowany jest nowym
118
Pliki .htaccess
Metod alternatywn w stosunku do modyfikowania pliku konfiguracyjnego serwera
i jego przeadowywania jest mechanizm wykorzystujcy pliki .htaccess, omwiony szerzej w rozdziale 5. Polega on na przechowywaniu czci konfiguracji serwera (tej, ktra
ulega najczstszym zmianom) w osobnym pliku, znajdujcym si w katalogu /htdocs.
W przeciwiestwie bowiem do gwnego pliku konfiguracyjnego, plik .htaccess jest odczytywany przez serwer nie podczas uruchamiania, ale kadorazowo w ramach obsugi
dania do danej witryny. Zalet tego podejcia jest elastyczno konfiguracji administrator moe modyfikowa dziaanie serwera w dowolnym momencie, bez przerywania
jego pracy. Wad jest znaczny spadek wydajnoci serwera przetwarzanie pliku konfiguracji dla kadego dania musi spowodowa wyduenie jego obsugi. Dlatego administrator moe ograniczy zmiany wprowadzane przez wacicieli witryn do ich plikw
.htaccess, deklarujc w gwnym pliku konfiguracyjnym dyrektyw AllowOverride.
Administrator moe rwnie uniemoliwi klientom podgld ich wasnych plikw
.htacces. Mona to osign, wprowadzajc do pliku konfiguracyjnego serwera nastpujce wiersze:
<Files .htaccess>
order allow,deny
deny from all
</Files>
119
w tematyk pozostaych rozdziaw ksiki, zdecydowalimy si zamieci je tu, w rozdziale omawiajcym podstawowe aspekty konfiguracji.
MetaFiles
MetaFiles on|off
Warto domylna: off
Zastosowanie: katalog
MetaDir
MetaDir nazwa-katalogu
Warto domylna: .web
Zastosowanie: katalog
Warto tej dyrektywy okrela katalog, w ktrym serwer Apache bdzie szuka metaplikw. Jest to zwykle katalog ukryty (jego nazwa zaczyna si znakiem kropki), bdcy
podkatalogiem katalogu, w ktrym przechowywany jest udostpniany dokument.
Ustawienie dyrektywy MetaDir na pojedyncz kropk (.) spowoduje poszukiwanie
metapliku w katalogu dokumentu.
MetaSuffix
MetaSuffix rozszerzenie
Warto domylna: .meta
Zastosowanie: katalog
Warto tej dyrektywy definiuje rozszerzenie, jakie powinien nosi plik zawierajcy
metainformacje.
Jeeli pozostawiona zostanie warto domylna dyrektywy MetaSuffix, danie odwoujce si do pliku /mj-katalog/bolek.html bdzie przetworzone z wykorzystaniem
metainformacji przechowywanych w pliku /mj-katalog/bolek.html.meta.
ExpiresActive
ExpiresActive on|off
Zastosowanie: konfiguracja gwna, serwery wirtualne, katalogi, pliki .htaccess
120
ExpiresByType
ExpiresByType typ-mime czas
Zastosowanie: konfiguracja gwna, serwery wirtualne, katalogi, pliki .htaccess
Pomidzy kodem a liczb sekund nie ma spacji. Kod moe przyj jedn z dwch wartoci:
A oznacza czas dostpu (czyli moment, w ktrym obsugiwane jest danie),
M oznacza czas ostatniej modyfikacji pliku.
liczba-sekund jest zwyk liczb cakowit. Przykadowo, aby okreli termin wanoci
danego typu MIME jako 565 656 sekund od momentu odwoania si do takiego pliku,
parametr czas dyrektywy naley okreli nastpujco:
A565656
121
ExpiresDefault
ExpiresDefault czas
Zastosowanie: konfiguracja gwna, serwery wirtualne, katalogi, pliki .htaccess
Dyrektywa ta ustanawia domylny termin wanoci plikw stosowany dla dokumentw, ktrych terminu wanoci nie okrelono za pomoc dyrektywy ExpireByType.