Professional Documents
Culture Documents
Ksiga eksperta
Autor: Andrew Hudson, Paul Hudson
Tumaczenie: Przemysaw Szeremiota
ISBN: 978-83-246-1480-6
Tytu oryginau: Fedora 7 Unleashed
Format: 172x245, stron: 1088
Wydawnictwo Helion
ul. Kociuszki 1c
44-100 Gliwice
tel. 032 230 98 63
e-mail: helion@helion.pl
Spis treci
Wprowadzenie ................................................................................................................... 29
CZ I
Rozdzia 1.
Spis treci
Spis treci
CZ II
Spis treci
Spis treci
Spis treci
10
Spis treci
11
Spis treci
12
Spis treci
13
Spis treci
14
Spis treci
15
Spis treci
CZ V
16
Spis treci
17
Spis treci
18
Spis treci
19
Spis treci
20
Spis treci
21
Spis treci
Dodatek B
22
Spis treci
Dodatek C
23
Rozdzia 17.
Zarzdzanie
serwerem WWW Apache
Biecy rozdzia powicony jest konfiguracji i zarzdzaniu serwerem WWW Apache. Omwienie obejmowa bdzie m.in. przegld podstawowych elementw serwera wraz z prezentacj
sposobw jego konfiguracji, rwnie za porednictwem interfejsw graficznych. Dowiesz si,
jak uruchomi serwer, jak go zatrzyma i przeadowa, korzystajc z narzdzi dostpnych
w dystrybucji Fedora. Wszystko to poprzedzone bdzie prezentacj jednego z najpopularniejszych
na wiece serwerw WWW.
Serwer WWW
Apache
Liczba witryn
68 228 561
50,48
47 232 300
34,94
6 616 713
4,90
SunONE
2 212 821
1,64
lighttpd
1 515 963
1,12
Microsoft
454
W cigu ostatnich kilku lat serwer Apache zyska wielkie znaczenie komercyjne, co po czci
tylko wynika z popularnego modelu stosowania oprogramowania open-source w korporacyjnych systemach informacyjnych. Rwnie wan przyczyn jest niech do serwera IIS (ang.
Internet Information Server) firmy Microsoft, zawierajcego wiele luk (wci odkrywane s nowe) i podatnego na szereg atakw, jak rwnie do implementacji systemu operacyjnego Windows
i jego obsugi sieci, co razem tworzy rodowisko rozprzestrzeniania si robakw, takich jak Code
Red, Nimda czy Blaster. Jedn z pierwszych firm, ktre doceniy stabilno serwera WWW, bya
firma IBM, aktywnie wspomagajca projekt, a w zamian korzystajca ze stabilnego i uznanego
serwera WWW.
W poowie lat 90. ubiegego wieku powstaa (jako organizacja typu non profit) firma Apache
Software Foundation. Zarzdza ni wybierana corocznie spord czonkw ASF rada dyrektorska.
Firma stanowi matecznik wielu rnych otwartych projektw programowych, z serwerem Apache
na czele.
Najlepszym rdem informacji o serwerze Apache jest strona gwna przedsiwzicia Apache
Software Foundation pod adresem http://www.apache.org/ oraz witryna biuletynu Apache
Week (http://www.apacheweek.com/); ta druga prowadzi usug powiadamiania subskrybentw
o nowych elementach projektu serwera, pozwalajc na otrzymywanie najnowszych informacji
o niebezpiecznych lukach i dostpnych poprawkach.
Wskazwka
Dobrym rdem informacji o serwerze Apache jest dokument FAQ,
dostpny pod adresem http://httpd.apache.org/docs-2.2/faq/. Obok
dokumentacji dostpnej online uytkownicy serwera maj te do
dyspozycji dokumentacj w formacie HTML, instalowan w katalogu serwera Apache (z pakietu httpd-manual). Mona si do niej
odwoa za porednictwem samego serwera, nawizujc poczenie z serwerem lokalnym i przechodzc do strony http://localhost/
manual/index.html. Ale lektura tak udostpnianej dokumentacji
bdzie moliwa dopiero po uruchomieniu serwera!
Dystrybucja Fedora zawiera wersj 2.2 serwera Apache; pakiet serwera, znajdujcy si na pycie
instalacyjnej, nosi nazw httpd. Najnowsz wersj oprogramowania serwera w postaci pakietu
RPM mona pobra z serwera FTP projektu Fedora, dostpnego za porednictwem programu
yum. Mona te pobra ze strony serwera Apache najnowsz wersj kodu rdowego i zgodnie
z tradycj linuksow samodzielnie j skompilowa i zainstalowa w systemie.
Aby okreli, ktra z wersji serwera Apache zostaa zainstalowana w systemie, naley uruchomi
plik wykonywalny serwera z przecznikiem -V:
455
# /usr/sbin/httpd -V | cat
Server version: Apache/2.2.6 (Unix)
Server built:
Sep 18 2007 09:40:44
Server's Module Magic Number: 20051115:5
Server loaded: APR 1.2.8, APR-Util 1.2.8
Compiled using: APR 1.2.8, APR-Util 1.2.8
Architecture:
32-bit
Server MPM:
Prefork
threaded:
no
forked:
yes (variable process count)
Server compiled with....
...
Wynikiem polecenia jest wydruk obejmujcy numer wersji serwera, dat i czas kompilacji oraz
list opcji wystosowanych przy kompilacji. Te same informacje, ale w wersji nieco okrojonej,
mona uzyska po umieszczeniu w wierszu wywoania serwera opcji -v.
456
Uwaga
Raportw o bezpieczestwie serwera naley szuka w witrynie projektu Apache. Trzeba w tym celu przej do strony http:// httpd.
apache.org/security_report.html, gdzie znajduj si odnoniki
do stron podsumowujcych wykryte luki w oprogramowaniu
serwera, osobno dla wersji 1.3, 2.0 i 2.2. Warto te przejrze archiwum artykuw rozsyanych przez listy dystrybucyjne witryny
serwera (http://httpd.apache.org/mail/). Interfejs WWW do tego archiwum znajduje si pod adresem http://httpd.apache.org/lists.html.
Wszyscy ciekawi dziaania najnowszych wersji pakietw mog
z serwera Fedory pobiera pakiety w wersji eksperymentalnej (http://
download.fedora.redhat.com/pub/fedora/linux/updates/testing/7/
oraz http://download.fedora.redhat.com/pub/fedora/linux/development/).
To dystrybucja rozwojowa, testowana jako baza dla kolejnego wydania dystrybucji Fedora. W przypadku serwera Apache instalacja
takiego eksperymentalnego pakietu moe by jednak uzaleniona
od zainstalowania sporej iloci pakietw dodatkowych, wymaganych do poprawnej instalacji serwera. W takim przypadku lepszym
wyjciem moe by pobranie pakietu zawierajcego kod rdowy
serwera (z podkatalogu SRPMS) i wykonanie samodzielnej kompilacji. W ten sposb eliminuje si zalenoci pomidzy pakietami.
Ostrzeenie
Naley unika instalowania pakietw nieprzetestowanych (eksperymentalnych) na serwerach produkcyjnych (to jest stanowicych podstaw dziaalnoci organizacji). Pakiety takie lepiej instalowa i testowa na wydzielonych z czci produkcyjnej wzach
systemu, najlepiej odczonych od sieci komputerowej!
457
plik gwny, httpd.conf. Zawartoci tego pliku powicony bdzie punkt Konfigurowanie
serwera pod ktem wydajnoci szczytowej zamieszczony w dalszej czci rozdziau.
/etc/rc.d/ podkatalogi tego katalogu zawieraj skrypty uruchamiane w ramach rozru-
Common Gateway Interface) oraz pliki HTML udostpniane przez serwer. Jeeli uytkownik zechce przechowywa udostpniane treci w innym katalogu, powinien wprowadzi
stosowne zmiany w konfiguracji serwera.
/var/www/manual/ w katalogu tym znajduje si kopia dokumentacji serwera
jednym z takich narzdzi jest program htpasswd, sucy do generowania plikw hase
serwera.
/var/log/httpd/ katalog plikw dziennika serwera Apache. Domylnie wanie w tym
458
mu tar zawierajce kod rdowy serwera Apache wraz z ewentualnymi atami. Katalog
tworzony jest po zainstalowaniu pakietu kodu rdowego (SRPM) serwera Apache.
Uruchomiony serwer Apache tworzy te w podkatalogu /var/run/ plik httpd.pid, zawierajcy
identyfikator procesu serwera Apache.
Uwaga
Przy aktualizacji serwera polegajcej na instalacji nowszej wersji
pakietu RPM nie naley obawia si nadpisania plikw konfiguracyjnych biecej wersji. Pliki te s przez program instalacyjny
zachowywane z nazwami rozszerzonymi przyrostkiem .rpmnew
(np. plik httpd.conf otrzyma nazw httpd.conf.rpmnew).
Wskazwka
Po rozpakowaniu archiwum kodu rdowego powstaje katalog zawierajcy kod rdowy, a w nim zwyczajowo ju znajduj si pliki
README oraz INSTALL. Warto zapozna si z treci tych plikw
przed prb kompilacji i instalacji oprogramowania.
459
Wynikiem dziaania skryptu bdzie plik Makefile, ktry mona wykorzysta do kompilacji
kodu serwera.
Kolejnym krokiem jest wpisanie polecenia make, inicjujcego kompilacj. Po zakoczeniu kompilacji naley dysponujc uprawnieniami uytkownika root wpisa polecenie make install.
Spowoduje to zainstalowanie serwera w systemie. Po zakoczeniu instalacji mona ju przystpi
do edycji plikw konfiguracyjnych, patrz podrozdzia Ustawienia konfiguracyjne serwera.
Wskazwka
Bezpieczniejsz metod instalacji nowej wersji oprogramowania
serwera Apache jest skorzystanie z polecenia ln i utworzenie za
jego pomoc dowiza symbolicznych (wymienionych w punkcie
Rczna instalacja serwera z pakietw RPM) do nowo skompilowanych plikw. Chodzi o to, e domylne katalogi instalacyjne
przy samodzielnej kompilacji rni si od katalogw zdefiniowanych w pakiecie RPM. Rozbieno w pooeniu katalogw instalacji moe za uniemoliwi automatyczne uruchomienie serwera
za porednictwem skryptu startowego.
Warto te przed zainstalowaniem nowej wersji oprogramowania
serwera wykona kopie zapasowe wszystkich waniejszych plikw
konfiguracyjnych (np. caego katalogu /etc/httpd), a nastpnie skorzysta z polecenia rpm w celu usunicia z systemu oprogramowania serwera instalowanego z pakietu RPM. Wtedy mona bezpiecznie zainstalowa i przetestowa now wersj, a w razie
koniecznoci w prosty sposb przywrci poprzedni stan systemu
i poprzednie ustawienia konfiguracji serwera.
Przede wszystkim za warto korzysta z pakietw (czy to plikw
skompilowanych, czy te pakietw kodu rdowego) RPM
Warto pamita, e przy samodzielnej kompilacji i instalacji kodu
rdowego nie istnieje opcja usunicia instalacji serwera z poziomu
narzdzi zarzdzajcych pakietami!
460
Nastpnie mona ju uruchomi dowoln przegldark WWW i sprawdzi, czy pod adresem localhost (albo innym, zgodnym z nazw wza danego komputera) albo adresem IP
danego komputera dostpna jest utworzona wczeniej strona HTML. Dla przykadu,
zakadajc wykorzystanie przegldarki links, uytkownik powinien wykona nastpujce polecenie:
# links http://localhost/
461
z kolei odpowiednio: programy CGI, standardowe ikony oraz domylnie instalowane dokumenty HTML.
/usr/local/apache/bin/ katalog plikw wykonywalnych serwera.
/usr/local/apache/logs/ katalog plikw dziennika. Domylnie serwer tworzy dwa
pliki dziennika: access_log oraz error_log, ale administrator moe zdefiniowa dowoln liczb wasnych plikw dziennika, zawierajcych rozmaite informacje (patrz
podrozdzia dotyczcy rejestrowania dziaania serwera). Domylna lokalizacja plikw
dziennika serwera Apache w dystrybucji Fedora to /var/log/httpd.
Uruchamianie i zatrzymywanie
serwera Apache
Zakadamy w tym momencie, e w systemie zainstalowany jest serwer Apache, dysponujcy
domyln konfiguracj. Serwer Apache powinien by uruchamiany w ramach rozruchu systemu,
jako jedna z usug systemowych, uruchamiana po zakoczeniu konfigurowania sieci i ewentualnych zapr sieciowych. Sposb konfigurowania rozruchu systemu opisany zosta w rozdziale 11.,
Automatyzacja pracy.
Czas na pierwsze uruchomienie serwera. W poniszych punktach pokazany jest zarwno sposb
rcznego uruchomienia i zatrzymania serwera Apache, jak i sposb skonfigurowania systemu
Fedora do automatycznego uruchamiania usugi serwera w fazie rozruchu systemu.
462
ustawia wartoci niektrych parametrw, np. okreli lokalizacj pliku konfiguracji. Plik
wykonywalny serwera Apache rozpoznaje rwnie opcje innego rodzaju, umoliwiajce selektywne interpretowanie pliku konfiguracyjnego, np. przez wskazanie innego ni zdefiniowany
w konfiguracji pliku dziennika. Opcja -v inicjuje wydruk wersji programu. Podobna opcja, -V,
pokazuje wydruk rozszerzony, uwzgldniajcy opcje, z jakimi skompilowany zosta plik wykonywalny serwera.
Sposb uruchamiania serwera i lista dostpnych opcji wywietlana jest po uruchomieniu serwera z opcj -h (przy zaoeniu, e polecenie uruchamiane jest przez uytkownika root):
# httpd -h
Usage: httpd [-D name] [-d directory] [-f file]
[-C "directive"] [-c "directive"]
[-k start|restart|graceful|graceful-stop|stop]
[-v] [-V] [-h] [-l] [-L] [-t] [-S]
Options:
-D name
: define a name for use in <IfDefine name> directives
-d directory
: specify an alternate initial ServerRoot
-f file
: specify an alternate ServerConfigFile
-C "directive"
: process directive before reading config files
-c "directive"
: process directive after reading config files
-e level
: show startup errors of level (see LogLevel)
-E file
: log startup errors to file
-v
: show version number
-V
: show compile settings
-h
: list available command line options (this page)
-l
: list compiled in modules
-L
: list available configuration directives
-t -D DUMP_VHOSTS : show parsed settings (currently only vhost settings)
-S
: a synonym for -t -D DUMP_VHOSTS
-t -D DUMP_MODULES : show all loaded modules
-M
: a synonym for -t -D DUMP_MODULES
-t
: run syntax check for config files
Wrd pozostaych opcji znajduje si opcja wywietlania moduw, czyli wydzielonych elementw serwera. Opcje te zwane s dyrektywami konfiguracyjnymi i steruj dziaaniem poszczeglnych moduw. Serwer Apache dysponuje okoo pidziesicioma moduami dynamicznymi, czyli obiektami programowymi adowanymi przez serwer wtedy, kiedy potrzebny
jest zawarty w nich kod obsugujcy pewn funkcj serwera.
Niezwykle przydatna opcja -t pozwala na sprawdzenie poprawnoci skadniowej pliku konfiguracyjnego serwera. Zawsze po wprowadzeniu zmian w konfiguracji warto sprawdzi, czy nie
naruszyy one poprawnoci pliku. Kontrola taka jest tym waniejsza, e bd pliku konfiguracyjnego moe spowodowa zaamanie serwera lub jego bdne dziaanie.
463
Uwaga
Przy kompilacji i instalacji Apache z kodu rdowego (a nie z rozprowadzanych z dystrybucj Fedora pakietw RPM) naley uruchamia serwer rcznie, z poziomu wiersza polece, korzystajc
z uprawnie uytkownika root (jak przy testowaniu serwera). Ma
to dwie przyczyny:
Serwer korzysta domylnie z portu o numerze 80 (domylny
port usugi HTTP), a tylko uytkownik uprzywilejowany moe
uruchamia aplikacje okupujce porty o numerach mniejszych od 1024.
Jedynie procesy bdce wasnoci uytkownika root mog
zmienia wasne identyfikatory UID i GID (za serwer Apache po uruchomieniu i zajciu portu nasuchu zmienia te
identyfikatory na okrelone w pliku konfiguracyjnym
serwera). Kiedy Apache zostanie uruchomiony przez innego
uytkownika, serwer nie bdzie mg odrzuci uprawnie
tego uytkownika przez zmian identyfikatora UID.
Naley te zauway, e cho wikszo prezentowanych dalej przykadw pokazuje uruchamianie serwera Apache w imieniu uytkownika root, to taki tryb uruchamiania naley stosowa wycznie w fazie testw. Waciwym trybem uruchamiania serwera jest
uruchamianie go w ramach rozruchu systemu.
lecenia kill.
464
Uwaga
Plik /etc/rc.d/init.d/httpd to skrypt powoki wykorzystywany do
uruchamiania i zatrzymywania serwera w ramach rozruchu
i zatrzymywania systemu; nie naley myli go z plikiem wykonywalnym serwera, instalowanym w katalogu /usr/sbin. Plik
/usr/sbin/httpd to plik wykonywalny programu serwera (czyli serwer
jako taki), a skrypt /etc/rc.d/init.d/httpd to jedynie skrypt powoki
odwoujcy si do programu sterujcego apachectl. Opis niektrych innych usug uruchamianych za porednictwem skryptw
katalogu /etc/rc.d/init.d znajduje si w rozdziale 11.
reload opcja inicjujca wysanie do procesu serwera sygnau HUP, co zmusza serwer
uruchamiania procesu serwera WWW. Jeeli serwer nie dziaa, w wyniku tego polecenia
zostanie uruchomiony.
condrestart opcja dziaajca podobnie jak opcja restart, tyle e w przypadku,
Cig ten sygnalizuje, e serwer dziaa; w rzeczy samej, w pamici znajduje si 9 egzemplarzy
procesu serwera.
Poza wymienionymi wczeniej opcjami, skrypt httpd rozpoznaje jeszcze cztery:
help wywietla list opcji uruchomienia programu httpd (skrypt przekazuje wy-
465
Wskazwka
Po wprowadzeniu dowolnych zmian w konfiguracji serwera naley
skorzysta z opcji reload skryptu. Pozwala to na zaoszczdzenie czasu potrzebnego na zatrzymanie i ponowne uruchomienie serwera.
Aby np. przeadowa program serwera Apache za porednictwem polecenia service, naley
skonstruowa nastpujce polecenie:
# service httpd restart
Taki wpis umieszczony w pliku /etc/inittab informuje, e system ma uruchamia si w trybie konsoli (bez uruchamiania serwera X), z penym dostpem do sieci (poziom uruchomieniowy 3.).
466
5:wy.
6:wy.
Z powyszego wynika, e serwer Apache jest wyczony na wszystkich poziomach uruchomieniowych, w tym na poziomach 3. i 5. (to gwne poziomy uruchomieniowe innych raczej si nie
wykorzystuje; mona jeszcze korzysta z poziomu 4., dostosowujc go do wasnych potrzeb).
W celu uaktywnienia rozruchu usugi serwera Apache przy uruchamianiu systemu na 3. poziomie uruchomieniowym naley wykona nastpujce polecenie:
# chkconfig --level 3 httpd on
5:wy.
6:wy.
Aby uaktywni uruchamianie serwera Apache rwnie wtedy, kiedy system wchodzi na 5.
poziom uruchomieniowy, czyli uytkownik loguje si do systemu za porednictwem interfejsu
graficznego, naley znw skorzysta z polecenia chkconfig, opcji level i on, ale tym razem
trzeba okreli poziom numer 5:
# chkconfig --level 5 httpd on
5:w.
6:wy.
W celu wycofania usugi serwera Apache z danego poziomu uruchomieniowego naley skorzysta z opcji off polecenia chkconfig.
467
Ostrzeenie
Korzystajc z narzdzia system-config-httpd, nie naley podejmowa prb rcznego ingerowania w zawarto pliku konfiguracyjnego httpd.conf. Wszelkie zmiany wprowadzone rcznie zostan
nadpisane przy nastpnym uruchomieniu graficznego programu
konfiguracji.
Po naciniciu klawisza Enter (bd wybraniu stosownej pozycji menu) wywietlony zostanie monit
o podanie hasa. Po wprowadzeniu hasa na ekranie wywietlone zostanie okno gwne programu,
widoczne na rysunku 17.1.
Rysunek 17.1.
Gwne okno
programu
system-config-httpd,
dajcego moliwo
wygodnej
konfiguracji
podstawowych
elementw
serwera WWW
W ramach zakadki Gwne mona ustawi nazw serwera, poda adres administratora witryny
oraz zdefiniowa numer portu, pod ktrym Apache bdzie prowadzi nasuch w oczekiwaniu
na napywajce dania. Tutaj mona te ustawi nasuch na dodatkowych portach, dla potrzeb
serwerw wirtualnych.
468
Rysunek 17.2.
Okno dialogowe
Waciwoci
hosta wirtualnego
programu
system-config-httpd
daje dostp
do szeregu opcji
konfigurujcych
wzy wirtualne
serwera Apache
Konfigurowanie serwera
Zakadka Serwer w oknie gwnym programu system-config-httpd, ktrej zawarto widoczna jest na rysunku 17.3, pozwala na konfigurowanie takich aspektw dziaania serwera jak
nazwa i pooenie pliku blokady oraz pliku identyfikatora procesu serwera. W obu przypadkach znakomicie sprawdzaj si ustawienia domylne. Zakadka pozwala poza tym na wskazanie
katalogu, w ktrym ewentualnie zostanie umieszczony zrzut pamici procesu serwera w przypadku
jego bdnego zakoczenia.
Na tej zakadce mona wreszcie wskaza uytkownika i grup, w ktrych imieniu uruchamiany
bdzie serwer Apache. Jak ju wspominalimy, ze wzgldw bezpieczestwa najlepiej uruchamia
serwer Apache w imieniu uytkownika apache i czonka grupy apache (tak, jak to jest ustawione
domylnie).
469
Rysunek 17.3.
Zakadka Server
programu
system-config-httpd
Konfigurowanie serwera
pod ktem wydajnoci szczytowej
Opcje zakadki Dostrajanie wydajnoci su do takiego dostosowywania konfiguracji serwera,
ktre zapewni maksymaln wydajno. Opcje tej zakadki pozwalaj na ustawienie maksymalnej liczby pocze, limitu czasu podtrzymania poczenia oraz liczby da obsugiwanych
w ramach jednego poczenia. Ustawiajc ten ostatni parametr, naley pamita, e kade odebrane przez serwer poczenie obsugiwane jest za porednictwem oddzielnego egzemplarza procesu serwera. Kady z takich egzemplarzy zajmuje pewn ilo zasobw systemu, w tym zasobw
najcenniejszych, czyli czasu procesora i pamici operacyjnej. Kolejne podpowiedzi dotyczce
zwikszania wydajnoci serwera WWW zostay umieszczone w rozdziale 31., Strojenie wydajnoci.
470
Dyrektywy konfiguracyjne
Konfiguracj dziaania serwera definiuje si za porednictwem dyrektyw konfiguracyjnych,
bdcych swego rodzaju poleceniami i opcjami dla procesu serwera. Dyrektywy instruuj serwer o koniecznoci uruchomienia okrelonych funkcji i o parametrach dziaania serwera (np.
wskazuj pooenie plikw wanych dla poprawnego dziaania serwera). Obecnie Apache rozpoznaje blisko 300 dyrektyw konfiguracyjnych; s one definiowane w pliku konfiguracji przy
uyciu nastpujcej skadni:
dyrektywa opcja opcja ...
Kada dyrektywa definiowana jest w osobnym wierszu pliku konfiguracyjnego. Niektre z dyrektyw jedynie definiuj wartoci pewnych parametrw, np. przypisuj nazw pliku, podczas gdy
inne pozwalaj na sterowanie dziaaniem funkcji serwera. Niektre z dyrektyw specjalnych,
zwanych blokowymi, zapisuje si podobnie jak znaczniki jzyka HTML. Dyrektywy blokowe
ujmowane s w znaki nawiasw ostrych, np.: <Dyrektywa>. Dyrektywa blokowa ogranicza
zwykle ca grup dyrektyw, stosowanych np. wycznie do wybranego, okrelonego w nagwku dyrektywy katalogu dokumentw serwera:
<Directory katalog/w/drzewie/dokumentw/serwera>
dyrektywa opcja opcja
dyrektywa opcja opcja
...
</Directory>
Wskazwka
Po zainstalowaniu i uruchomieniu serwera Apache (koniecznie
wraz z pakietem dokumentacji, httpd-manual) indeks dyrektyw
mona znale, odwoujc si do strony http://localhost//manual/
mod/directives.html.
471
ServerRoot
Dyrektywa ServerRoot definiuje bezwzgldn ciek do gwnego katalogu serwera. Dyrektywa ta informuje serwer o pooeniu wszystkich plikw konfiguracyjnych i plikw zasobw.
Wiele z tych zasobw wskazywanych jest w plikach konfiguracyjnych znajdujcych si w podkatalogach katalogu ServerRoot.
W przypadku instalacji serwera z pakietu RPM dyrektywa ServerRoot powinna wskazywa
katalog /etc/httpd. W przypadku samodzielnej kompilacji serwera wartoci dyrektywy powinna
by cieka /usr/local/apache/ bd dowolna inna cieka zdefiniowana przy konfiguracji
kodu rdowego serwera.
Listen
Dyrektywa Listen okrela numer portu, pod ktrym serwer bdzie prowadzi nasuch w oczekiwaniu na dania nawizania poczenia. Domylnie portem tym jest port o numerze 80, standardowym numerze portu usugi HTTP. Mona jednak przypisa serwer do dowolnego innego numeru portu mona np. uruchomi serwer testowy, ktry nie powinien by dostpny
dla osb czcych si przypadkowo. Oczywicie, zmiana numeru portu nie ma nic wsplnego
z zabezpieczeniem serwera przed dostpem z zewntrz! O rzeczywistych metodach zabezpieczania serwera WWW mona poczyta w podrozdziale Uwierzytelnianie i kontrola dostpu.
472
upewni, czy podane numery odpowiadaj dokadnie wybranemu uytkownikowi i grupie; naley
te pamita o poprzedzeniu numeru znakiem kratki (#).
Oto przykad okrelania uytkownika i grupy serwera za porednictwem nazwy:
User apache
Group apache
Wskazwka
Jeeli w systemie znajduje si wpis uytkownika innego ni root,
o numerach UID i GID rwnych 0, oznacza to, e system jest naduywany przez zoliwego, a moe wrcz gronego uytkownika.
ServerAdmin
Dyrektywa ServerAdmin powinna wskazywa adres poczty elektronicznej administratora
serwera WWW; warto, aby by to prawdziwy, poprawny adres poczty elektronicznej (np.
webmaster@gnulix.org), poniewa bdzie udostpniany odwiedzajcym stron w przypadku
bdu dziaania serwera.
ServerName
Dyrektywa ServerName okrela nazw wza zwracan przez serwer. Naley ustawi j na
pen, kwalifikowan nazw domenow, np. www.moja.domena, a nie po prostu www. Ma to
szczeglne znaczenie, kiedy serwer dostpny jest spoza sieci lokalnej.
Dyrektywy tej nie trzeba ustawia, jeli serwer ma zwraca nazw zgodn z nazw domenow
wza, na ktrym dziaa. Kiedy brakuje wartoci tej dyrektywy, serwer okreli nazw samodzielnie,
realizujc zapytanie odwrotnego DNS. Czsto jednak lepiej prezentowa odwiedzajcym przyjazn wersj nazwy domenowej, np. www.moja.domena. Tak czy inaczej warto ServerName
powinna by prawidow nazw z punktu widzenia DNS danej sieci. Jeeli wic zarzdzanie serwerem DNS realizowane jest przez osoby trzecie, naley je poprosi o uzupenienie bazy o nazw okrelon w dyrektywie ServerName.
DocumentRoot
Jest to dyrektywa wskazujca ciek (bezwzgldn) do drzewa dokumentw serwera, czyli do
gwnego katalogu, z ktrego pochodz udostpniane przez serwer pliki. Domylnie katalogiem tym jest /var/www/html. W przypadku samodzielnej kompilacji i instalacji kodu rdowego serwera dyrektywa ta ma warto /usr/local/apache/htdocs (chyba e przy konfigurowaniu
473
kodu rdowego podano inny katalog docelowy instalacji). Przed wersj 1.3.4 dyrektywa ta
bya definiowana w pliku srm.conf.
UserDir
Dyrektywa UserDir wcza lub wycza i definiuje katalog (okrelany wzgldem katalogu
domowego uytkownika), w ktrym serwer Apache ma szuka dokumentw HTML publikowanych przez uytkownikw. Katalog ten jest okrelany wzgldem katalogu domowego, poniewa
kady uytkownik systemu moe mie moliwo publikowania wasnych stron. Domylnie
dyrektywa ta jest nieaktywna (oznaczona symbolem komentarza #).
Domyln wartoci dla tej dyrektywy jest public_html. Po uaktywnieniu dyrektywy z tak wartoci kady uytkownik moe utworzy w swoim katalogu domowym podkatalog public_html
i umieci w nim dokumenty HTML tworzce jego prywatn stron WWW. Strona ta bdzie
dostpna pod adresem http://nazwa_serwera/~nazwa_uytkownika, gdzie nazwa_uytkownika
to systemowy identyfikator danego uytkownika. W wersjach wczeniejszych od 1.3.4 dyrektywa
ta bya zapisywana w pliku srm.conf.
DirectoryIndex
Dyrektywa DirectoryIndex wskazuje plik, ktry powinien zosta wykorzystany w roli indeksu
katalogu podczas obsugi odwoa pod adresy zadane w postaci: http://nazwa_serwera/nazwa_
katalogu/.
Czasami, kiedy w katalogu brakuje pliku index.html, warto wskaza tu inny plik (lub list plikw),
zawierajcy np. odpowiedni komunikat. Najciekawszym zastosowaniem tej dyrektywy jest
wskazanie w niej programu CGI, ktry bdzie uruchamiany w momencie odwoania do katalogu.
W wartoci dyrektywy mona te uwzgldni tych uytkownikw, ktrzy swoje strony tworz
w systemie Windows, i doda do listy plikw pozycj index.htm. Dyrektywa DirectoryIndex
moe wic mie np. posta DirectoryIndex index.html index.cgi index.htm. W wersjach
wczeniejszych od 1.3.4 dyrektywa ta bya zapisywana w pliku srm.conf.
Moduy MPM
Serwer Apache od wersji 2.0 korzysta z nowej wewntrznej architektury, obsugujcej moduy
wieloprzetwarzania MPM (ang. multiprocessing modules). Moduy te s przez serwer wykorzystywane do implementacji modelu dziaania wielowtkowego; moduy s skompilowane do
pliku wykonywalnego serwera. Moduy MPM pozwalaj na lepsz prac serwera na wikszej
liczbie platform, zwikszajc jego stabilno i skalowalno.
Apache moe korzysta z co najwyej jednego moduu MPM na raz. Moduy MPM rni si od
zestawu moduw rozprowadzanych z serwerem Apache (patrz podrozdzia Moduy serwera
Apache); su one do implementowania ustawie, limitw i innych czynnoci serwera. Kady
z moduw obsuguje wasny zestaw ustawie, rwnie zwanych dyrektywami, ktrych
wartoci steruj szczegowymi aspektami dziaania procesw serwera.
474
chowanie serwerw z serii 1.3 (obsuga da przez osobne procesy potomne serwera);
worker waciwy tryb pracy serwerw serii 2.0, implementujcy serwer hybrydowy,
wieloprocesowy i wielowtkowy.
Odpowiedni MPM pozwala na ograniczenie zasobw wykorzystywanych przez serwer, przy zachowaniu penej zdolnoci do obsugi natoku da i penej stabilnoci. Modu worker udostpnia dyrektywy sterujce liczb obsugiwanych jednoczenie pocze.
Uwaga
Dla innych platform dostpne s inne moduy implementacji
wieloprzetwarzania, np. mpm_netware dla wzw pracujcych
w systemie Netware czy te mpm_winnt dla wersji przeznaczonej do
systemu Windows NT, modu o nazwie perchild, ktry pozwala
na przypisywanie osobnych identyfikatorw UID dla poszczeglnych
procesw serwera. Wicej informacji na temat moduw MPM
dla serwera Apache mona znale: http://www.apache.org/.
475
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
Dyrektywa Options
Dyrektywa Options okrela domylne opcje konfiguracyjne serwera Apache. Dyrektywa moe
przyjmowa warto None bd All albo stanowi poczenie dowolnych spord wartoci
Indexes, Includes, FollowSymLinks, ExecCGI i Multiviews. Znaczenie poszczeglnych
wartoci wyjaniamy w tabeli 17.2.
Tabela 17.2. Wartoci dyrektywy Options
Warto
Znaczenie
None
All
Indexes
Includes
W katalogu mog by wykorzystywane wstawki SSI (ang. Server Side Includes). Opcj t mona
te zapisa jako IncludesNoExec, jeli w katalogu maj by dostpne wstawki serwera
z wyjtkiem wstawki exec. Ze wzgldw bezpieczestwa zawsze warto wycza t moliwo
w tych katalogach, nad ktrymi administrator nie ma penej kontroli, np. w katalogu
definiowanym dyrektyw UserDir.
FollowSymLinks
ExecCGI
W danym katalogu mona uruchamia programy CGI nawet wtedy, jeli katalog ten
nie jest zdefiniowany w dyrektywie ScriptAlias.
Multiviews
Uwaga
Dyrektywy te obejmuj skutkami swego dziaania rwnie wszystkie
podkatalogi danego katalogu.
476
Dyrektywa AllowOverride
Dyrektywa AllowOverride okrela, ktre z opcji konfiguracyjnych mog zosta przesonite
ustawieniami zawartymi w pliku .htaccess dla danego katalogu. Mona np. osobno zdefiniowa
moliwo przesaniania ustawie dla gwnego katalogu dokumentw oraz dla katalogw
uytkownikw, definiowanych dyrektyw UserDir.
Moliwo ta jest szczeglnie przydatna w katalogach publikacji uytkownikw, poniewa uytkownicy ci zwykle nie maj dostpu do gwnego pliku konfiguracji serwera.
Dyrektywa AllowOverride moe mie warto All, None bd stanowi kombinacj wartoci
Options, FileInfo, AuthConfig oraz Limit. Ich znaczenie wyjaniamy w tabeli 17.3.
Tabela 17.3. Znaczenie argumentw dyrektywy AllowOverride
Warto
Znaczenie
Options
Plik .htaccess moe uzupenia opcje nieuwzgldnione w dyrektywie Options dla danego
katalogu.
FileInfo
Plik .htaccess moe zawiera dyrektywy modyfikujce informacje o typie przechowywanych w katalogu
dokumentw.
AuthConfig
Limit
Ostrzeenie
Zezwalanie uytkownikom na publikowanie wasnych materiaw
za porednictwem danego serwera powoduje szereg problemw
zwizanych z bezpieczestwem. Kady administrator serwera
udostpnianego w internecie powinien zapozna si z dokumentem
The World Wide Web Security FAQ, dostpnym pod adresem
http://www.w3.org/Security/Faq/www-security-faq.html.
477
Domylnie serwer Apache stosuje najpierw wszystkie okrelone dyrektywy Deny, a dopiero potem
rozszerza ewentualny zbir klientw dopuszczonych, analizujc dyrektywy Allow. Aby zmieni
kolejno przetwarzania tych dyrektyw, mona wykorzysta dyrektyw Order. Apache interpretuje
j na trzy sposoby:
Order Deny,Allow dyrektywy Deny bd przetwarzane przed dyrektywami Allow.
Jeeli wze klienta nie jest wymieniowy w dyrektywach blokujcych, zostanie dopuszczony do zasobu. To domylny porzdek interpretowania dyrektyw allow i deny.
Order Allow,Deny dyrektywy Allow przetwarzane s przed dyrektywami Deny;
jeli wze nie ma jawnie przyznanego dostpu, dostp do zasobu zostanie odmwiony.
Order Mutual-failure do zasobw dopuszczane s wycznie te wzy, ktre
478
Pora na przykad. Przypumy, e do zasobu server-status dostp maj mie wycznie uytkownicy czcy si z domeny serwera. Jeli nazw domeny jest gnulix.org, to w pliku konfiguracyjnym powinny si znale nastpujce wiersze:
<Location /server-status>
SetHandler server-status
Order Deny,Allow
Deny from all
Allow from gnulix.org
</Location>
Uwierzytelnianie
Uwierzytelnianie to proces sprawdzania, czy odwiedzajcy jest tym, za kogo si podaje. Serwer
Apache mona skonfigurowa tak, aby umoliwia dostp do okrelonych zasobw witryny
WWW wycznie tym klientom, ktrzy s w stanie potwierdzi swoj tosamo. Apache wykorzystuje kilka metod uwierzytelniania; najprostsza jest metoda okrelana mianem Basic
Authentication.
Metoda uwierzytelniania prostego polega na podaniu przez klienta nazwy uytkownika oraz
hasa, majcego gwarantowa mu dostp do chronionych zasobw. Serwer Apache okrela
moliwo dostpu do danego zasobu, weryfikujc poprawno hasa. Najpierw jednak sprawdza podany identyfikator uytkownika dopiero wtedy, kiedy taki uytkownik jest zdefiniowany, serwer przystpuje do kontroli zgodnoci hasa. Jeli haso rwnie si zgadza, serwer
udostpnia klientowi chronione zasoby.
Protok HTTP jest protokoem bezstanowym, co oznacza, e kade danie kierowane do serwera WWW jest obsugiwane niezalenie od da poprzednich; std konieczno doczania
danych uwierzytelniajcych do kadego kolejnego dania. Z tego powodu kade danie
odwoujce si do zasobw chronionych bdzie nieco obszerniejsze i realizowane duej ni dania kierowane do obszarw niezabezpieczonych. Aby ograniczy zuycie zasobw i zwikszy
wydajno obsugi da, naley chroni wycznie te obszary witryny, ktre tego bezwzgldnie
wymagaj.
Ostrzeenie
Nie naley wykorzystywa w roli pliku hase serwera Apache systemowego pliku /etc/passwd. Przy stosowaniu prostej metody uwierzytelniania nazwy uytkownikw i hasa s przesyane pomidzy
klientem a serwerem w postaci tekstu zakodowanego algorytmem
base64, ktry mona odczyta niemal rwnie atwo jak otwarty
tekst. Nazwy uytkownikw i hasa s umieszczane w kadym daniu przesyanym do serwera. Std kady, kto zainstaluje program
wszyciela sieciowego, moe te informacje atwo przechwyci.
479
eby skorzysta z prostej metody uwierzytelniania, naley utworzy plik z list uytkownikw,
ktrzy maj prawo odwoywa si do chronionych zasobw. Plik ten zawiera pary: identyfikator
uytkownika i haso. Plik taki jest wic podobny do systemowego pliku hase, /etc/passwd.
Do tworzenia pliku uytkownikw dla serwera Apache suy program htpasswd. Program ten
stanowi element pakietu oprogramowania serwera Apache. W przypadku instalacji serwera
z pakietu RPM jest instalowany w katalogu /usr/bin. Uruchomienie programu htpasswd bez
podania jakichkolwiek opcji spowoduje wyprowadzenie nastpujcego komunikatu:
Usage:
htpasswd [-cmdpsD] passwordfile username
htpasswd -b[cmdpsD] passwordfile username password
htpasswd -n[mdps] username
htpasswd -nb[mdps] username password
-c Create a new file.
-n Don't update file; display results on stdout.
-m Force MD5 encryption of the password.
-d Force CRYPT encryption of the password (default).
-p Do not encrypt the password (plaintext).
-s Force SHA encryption of the password.
-b Use the password from the command line rather than prompting for it.
-D Delete the specified user.
On Windows, NetWare and TPF systems the '-m' flag is used by default.
On all other systems, the '-p' flag will probably not work.
Jak wida, program htpasswd nie jest narzdziem specjalnie skomplikowanym. Aby np. utworzy plik uytkownikw serwera o nazwie klientela zawierajcy pojedynczy wpis uytkownika
o nazwie janek, naley wykona nastpujce polecenie:
# htpasswd -c klientela janek
Program zapyta o haso dla uytkownika. W celu uzupenienia pliku o kolejne wpisy uytkownikw
naley powysz procedur powtrzy, usuwajc z wiersza wywoania programu przecznik -c.
Mona te tworzy pliki grup uytkownikw. Pliki takie maj format zbliony do formatu systemowego pliku /etc/groups. W kadym wierszu pliku naley umieci nazw grupy, a za ni
dwukropek i list identyfikatorw uytkownikw, oddzielonych spacjami. Wpis taki mgby
wyglda np. tak:
klientela: janek hifly wojt andrew
cieka nie jest ciek bezwzgldn (tzn. nie rozpoczyna si od znaku ukonika), to zakada si,
480
481
dyrektywy Satisfy. Dyrektywa ta moe przyj warto All (warto domyln) bd Any.
Ustawienie jej na warto All oznacza, e uytkownik odwoujcy si do zasobu chronionego
bdzie musia zaspokoi wymagania zarwno metod kontroli dostpu, jak i metod uwierzytelniania. Warto Any pozwala na skorzystanie z zasobu ju po spenieniu jednego z dwch
warunkw dopuszczenia do zasobu.
Poniej prezentowany jest jeszcze jeden przykad konfiguracji z kontrol dostpu, znw chronicy zasb server-status. Tym razem ochrona zostanie ustawiona tak, aby uytkownicy domeny gnulix byli dopuszczani do zasobu bez dodatkowych ceregieli, a wszyscy klienci spoza
domeny musieli przedstawi poprawne informacje uwierzytelniajce:
<Location /server-status>
SetHandler server-status
Order Deny,Allow
Deny from all
Allow from gnulix.org
AuthType Basic
AuthName "Server status"
AuthUserFIle "klientela"
Require valid-user
Satisfy Any
</Location>
482
mod_actions.so
mod_alias.so
mod_asis.so
mod_auth_basic.so
mod_auth_digest.so
mod_authn_alias.so
mod_authn_anon.so
mod_authn_dbd.so
mod_authn_dbm.so
mod_authn_default.so
mod_authn_file.so
mod_authnz_ldap.so
mod_authz_dbm.so
mod_authz_default.so
mod_authz_groupfile.so
mod_authz_host.so
mod_authz_owner.so
mod_authz_user.so
mod_autoindex.so
mod_cache.so
mod_cern_meta.so
mod_cgid.so
mod_cgi.so
mod_dav_fs.so
mod_dav.so
mod_dbd.so
mod_deflate.so
mod_dir.so
mod_disk_cache.so
mod_dumpio.so
mod_env.so
mod_expires.so
mod_ext_filter.so
mod_file_cache.so
mod_filter.so
mod_headers.so
mod_ident.so
mod_imagemap.so
mod_include.so
mod_info.so
mod_ldap.so
mod_log_config.so
mod_log_forensic.so
mod_logio.so
mod_mem_cache.so
mod_mime_magic.so
mod_mime.so
mod_negotiation.so
mod_proxy_ajp.so
mod_proxy_balancer.so
mod_proxy_connect.so
mod_proxy_ftp.so
mod_proxy_http.so
mod_proxy.so
mod_rewrite.so
mod_setenvif.so
mod_speling.so
mod_status.so
mod_suexec.so
mod_unique_id.so
mod_userdir.so
mod_usertrack.so
mod_version.so
mod_vhost_alias.so
Kady z moduw uzupenia konfiguracj serwera o nowe dyrektywy. Jak mona si domyli,
dodatkowych dyrektyw, opcji i przecznikw jest o wiele za duo, aby opisa je w jednym
rozdziale. W kolejnych punktach zostan jedynie z koniecznoci opisane funkcje wybranych
moduw.
mod_authz_host
Modu mod_authz_host pozwala na sterowanie (za porednictwem dyrektyw Allow) funkcj
kontroli dostpu do serwera WWW opartej na adresach IP, nazwach wzw i obecnoci
483
zmiennych rodowiskowych. Dziki temu moduowi mona np. zezwoli na peny dostp do
materiaw udostpnianych przez serwer z poziomu sieci lokalnej, natomiast szerokiej publicznoci nawizujcej poczenie z serwerem spoza sieci lokalnej udostpnia jedynie podzbir tych
materiaw, patrz podrozdzia Uwierzytelnianie i kontrola dostpu.
mod_alias
Modu mod_alias manipuluje cigami URL umieszczonymi w napywajcych daniach
HTTP, przekierowujc np. klienta pod waciwy adres URL. Za pomoc tego moduu mona
te odwzorowywa czci systemu plikw na poszczeglne elementy hierarchii witryny WWW.
Dla przykadu dyrektywa:
Alias /images/ /home/janek/graphics/
spowoduje, w odpowiedzi na danie zawierajce URL zaczynajcy si od cigu /images/, pobranie zawartoci katalogu /home/janek/graphics/. Przy tym klient inicjujcy danie nie bdzie
nawet wiedzia o dokonaniu podmiany. W przypadku przekierowania natomiast klient otrzyma
w odpowiedzi URL wskazujcy waciwe pooenie danych zasobw. Wicej zaawansowanych
funkcji manipulowania cigami URL oferuje modu mod_rewrite.
mod_asis
Modu mod_asis pozwala na szczegowe okrelenie wszystkich informacji, ktre maj zosta
odesane w odpowiedzi na danie. Odpowiedzi generowane z uyciem tego moduu tworzone s
z pominiciem wszelkich nagwkw, ktre w innym przypadku mogyby by doczone do
odpowiedzi. Wszystkie pliki z rozszerzeniem .asis przesyane s do klienta bez jakichkolwiek
zmian i uzupenie.
W ramach prostego przykadu mona zaoy, e z danej strony przeniesiono materiay pod inny
adres. Teraz wypada poinformowa odwiedzajcych o fakcie przeprowadzki, a najlepiej automatycznie skierowa ich pod waciwy adres. W celu zaprezentowania odwiedzajcym odpowiedniego komunikatu i skierowania ich do waciwej strony naley umieci w pustym katalogu plik
z rozszerzeniem .asis i nastpujc treci:
Status: 301 Stary adres!
Location: http://gnulix.org/nowy/strona.html
Content-type: text/html
<html>
<head>
<title>Strona przeniesiona</title>
</head>
<body>
<h1>Strona zostaa przeniesiona. Obecnie dostpna jest pod adresem:
<a href="http://gnulix.org/nowy/strona.html">Nowy Adres</a>.
</h1>
</body>
</html>
484
mod_auth_basic i mod_authn_file
Ta para moduw peni rol zarezerwowan w wersji 2.0 dla pojedynczego moduu mod_auth,
a wic implementuje prost metod uwierzytelniania uytkownikw bazujc na przechowywanych w pliku uytkownikw identyfikatorach i zaszyfrowanych hasach. Plik uytkownikw
jest podobny do systemowego pliku /etc/passwd; tworzy si go i wypenia poleceniem htpasswd.
Uwierzytelnianiu powicony by podrozdzia Uwierzytelnianie i kontrola dostpu.
mod_authn_anon
Modu mod_authn_anon implementuje uwierzytelnianie anonimowe, podobne do znanego
z serwerw FTP. Modu pozwala na okrelenie identyfikatorw uytkownikw tych klientw,
ktrzy cz si z serwerem jako gocie. Kiedy taki uytkownik prbuje si zalogowa, zostanie
zapytany o podanie hasa w postaci adresu poczty elektronicznej. Serwer moe rejestrowa
podawane adresy.
mod_authn_dbm
Modu mod_authn_dbm pozwala na wykorzystywanie przy uwierzytelnianiu pliku bazy danych
Berkeley DB w miejsce pliku uytkownikw.
mod_auth_digest
Rozszerzenie moduu uwierzytelniania prostego; w trybie uwierzytelniania Digest uytkownik
nie przesya informacji uwierzytelniajcych otwartym tekstem, ale szyfruje je algorytmem
MD5. Taki schemat uwierzytelniania zosta zdefiniowany w dokumencie RFC 2617. W porwnaniu z metod uwierzytelniania prostego uwierzytelnianie to jest duo bezpieczniejsze. Niestety, nie
wszystkie przegldarki WWW obsuguj t metod uwierzytelniania.
Do tworzenia pliku hase dla tej metody uwierzytelniania suy program htdigest. Jego opcje
pokrywaj si mniej wicej z opcjami analogicznego programu dla metody Basic, htpasswd.
Wicej informacji mona znale na stronie podrcznika systemowego pod hasem htdigest.
mod_autoindex
Modu mod_autoindex pozwala na dynamiczne tworzenie listy plikw indeksu katalogowego.
Indeks jest uzupeniany informacjami dodatkowymi tak, aby przypomina listingi katalogw
uzyskiwane podczas sesji FTP za porednictwem polecenia ls.
485
mod_cgi
Modu ten pozwala na uruchamianie przez serwer programw CGI. Programy CGI to wykonywalne pliki umieszczone w podkatalogu /var/www/cgi-bin; su do dynamicznego generowania
danych (zwykle dokumentw HTML).
mod_expires
Modu mod_expires suy do uzupeniania materiaw publikowanych w witrynie o informacje
o dacie wanoci. Modu uzupenia generowane odpowiedzi HTTP o nagwki Expires
i Cache-Control. Okrelanie czasu wanoci strony pozwala na buforowanie stron WWW
przez przegldarki bd serwery buforujce WWW.
mod_headers
Modu ten suy do manipulowania nagwkami odpowiedzi HTTP generowanych przez serwer.
Mona dziki niemu usuwa nagwki, dodawa je i zastpowa wasnymi. Modu udostpnia
w tym celu dyrektyw Header. Wana jest kolejno definiowania dyrektyw Header. Ot
wczenie danego nagwka wartoci set dyrektywy, a nastpnie wyczenie go wartoci
unset spowoduje usunicie nagwka. Dyrektywy Header mog by rozmieszczane w niemal
dowolnych miejscach w pliku konfiguracyjnym. Dyrektywy te s przetwarzane w nastpujcej
kolejnoci:
1. Dyrektywy dla caego serwera,
2. Dyrektywy dla wza wirtualnego,
3. Dyrektywy w blokach <Directory> i plikach .htaccess,
4. Dyrektywy w blokach <Location>,
5. Dyrektywy w blokach <Files>.
486
mod_include
Modu mod_include pozwala serwerowi na obsug tzw. wstawek SSI (ang. Server Side Includes).
mod_negotiation
Za porednictwem moduu mod_negotiation mona przy generowaniu odpowiedzi wybra
jedn z kilku wersji dokumentu, najlepiej dostosowan do moliwoci klienta. Wybr moe
opiera si na kilku rnych kryteriach, okrelanych w procesie negocjacji. Mona np. wybiera pomidzy rnymi wersjami jzykowymi dokumentw, formatami plikw oraz metodami
kompresji.
mod_proxy
Modu mod_proxy implementuje dla serwera Apache mechanizm buforowania i poredniczenia. Dziki temu serwer moe poredniczy w przekazywaniu FTP, AJP13, CONNECT,
HTTP/0.9, HTTP/1.0 oraz HTTP/1.1. Uaktywnienie moduu mod_proxy nie jest najlepszym
pomysem, jeeli serwer ma obsugiwa du liczb uytkownikw.
mod_rewrite
Modu mod_rewrite to istny szwajcarski scyzoryk w dziedzinie manipulowania cigami URL.
Pozwala na wykonywanie niemal dowolnych, dajcych si wymyli manipulacji, rwnie z wykorzystaniem zoonych wyrae regularnych. W sumie mao jest operacji na URL, ktrych
nie mona by przeprowadzi za porednictwem tego moduu.
487
Wskazwka
Moliwoci moduu mod_rewrite mona lepiej pozna, zagldajc
pod adres http://localhost/manual/misc/rewriteguide.html.
mod_setenvif
Modu mod_setenvif pozwala na manipulowanie zmiennymi rodowiskowymi. Ot mona
tu za pomoc cigw symboli dopasowywanych do tekstu, znanych jako wyraenia regularne,
warunkowo zmienia wartoci zmiennych rodowiskowych. Istotna jest kolejno wystpowania w pliku konfiguracji wprowadzanych przez modu dyrektyw SetEnvIf. Kada kolejna
dyrektywa SetEnvIf moe bowiem znie dziaanie poprzedniej dyrektywy, jeli obie odnosz si
do tej samej zmiennej rodowiskowej. Warto o tym pamita, aby unikn niespodzianek i trudnych do wykrycia bdw.
mod_speling
Modu mod_speling implementuje funkcj kontroli poprawnoci i poprawiania nieprawidowo
wpisanych adresw URL. Jeli np. dany URL nie zostanie znaleziony, serwer moe przystpi
do utworzenia listy plikw lecych w tym samym katalogu i dopasowania jednego z tych plikw
jako najbliszego daniu. Dopasowanie polega na prbie poprawienia tylko jednej literwki.
mod_status
Modu ten mona wykorzystywa do generowania strony WWW zawierajcej informacje
o biecym stanie serwera Apache. Strona ta zawiera informacje o wewntrznym stanie procesw serwera i statystyki ich dziaania. Informacje te s bezcenne w procesie dostosowywania
konfiguracji tak, aby osign maksymaln wydajno serwera. Rwnie przydatne s przy prbie
okrelania rda ewentualnych problemw.
mod_ssl
Modu mod_ssl implementuje protok SSL (w wersji 2. oraz 3.) oraz TLS (wersja 1.). Modu
wprowadza do pliku konfiguracyjnego przynajmniej 30 dyrektyw, definiujcych sposb oraz
tryb szyfrowania i uwierzytelniania klientw.
mod_unique_id
Modu ten dla kadego napywajcego dania generuje unikalny identyfikator dania. Identyfikator ten umieszczany jest w zmiennej rodowiskowej UNIQUE_ID.
488
mod_userdir
Modu mod_userdir pozwala na odwzorowywanie w drzewie dokumentw serwera podkatalogw znajdujcych si w katalogach domowych uytkownikw.
mod_usertrack
Modu mod_usertrack suy do generowania dla kolejnych sesji uytkownika specjalnych cookies
sesji. Mona dziki nim ledzi poczynania uytkownika odwiedzajcego kolejne strony
witryny. Aby po takich odwiedzinach zosta jaki lad, naley uaktywni rejestrowanie cookies
w pliku dziennika.
mod_vhost_alias
Modu mod_vhost_alias obsuguje dynamiczn konfiguracj wzw wirtualnych, przydatn,
jeli serwer suy jako dostawca usug internetowych i ma obsugiwa wiksz liczb wzw
wirtualnych. Jednak dla przecitnego uytkownika standardowa obsuga wzw wirtualnych
serwera Apache powinna by jak najbardziej wystarczajca.
Serwer Apache potrafi obsugiwa wzy wirtualne na dwa sposoby. Mona do jednego adresu
IP przypisa wiele nazw wzw albo nazwy te przypisywa do osobnych adresw IP. W obu
tych przypadkach przypisaniem i dziaaniem serwerw wirtualnych steruj rne zestawy dyrektyw (wicej o serwerach wirtualnych w nastpnym podrozdziale).
Jak wida, liczba dostpnych moduw i opcji tych moduw powoduje, e jakikolwiek wyczerpujcy ich opis musiaby zaj znacznie wicej ni jeden rozdzia. Kompletn dokumentacj
moduw serwera Apache mona znale w udostpnianej przez sam serwer dokumentacji
rozprowadzanej w dystrybucji Fedora albo publikowanej na stronach Apache Software Foundation.
Serwery wirtualne
Jedn z najpopularniejszych usug udostpnianych przez serwer WWW jest moliwo obsugi
domeny wirtualnej. Domena taka, znana rwnie jako wze wirtualny bd serwer wirtualny,
jest kompletn witryn WWW, dysponujc wasn nazw, zupenie tak, jakby bya obsugiwana
przez dedykowany jej serwer WWW zainstalowany na dedykowanym witrynie wle sieci. To
jednak pozr, poniewa wze wirtualny wraz z jego domen jest obsugiwany przez pojedynczy serwer, zdolny do rwnoczesnej obsugi wielu takich wzw. Apache implementuje t
moliwo za porednictwem dyrektyw pliku konfiguracyjnego.
Teraz serwer Apache potrafi rwnie dynamicznie tworzy witryny wirtualne, korzystajc
z pomocy moduu mod_vhost_alias. Modu ten jest przeznaczony gwnie dla dostawcw
usug internetowych, ktrzy obsuguj znaczn liczb uytkownikw i ich stron WWW. Jako
489
W nagwku dyrektywy VirtualHost naley umieszcza nie nazwy wzw, ale ich adresy IP.
Wewntrz dyrektywy blokowej VirtualHost mona okrela dowolne dyrektywy konfiguracyjne.
Mona np. w ramach tej dyrektywy umieci dyrektywy AllowOverride o dziaaniu odmiennym, ni to zdefiniowano dla caego serwera. Wszystkie za dyrektywy wza wirtualnego, ktre nie
zostan okrelone wprost, przejmuj wartoci z dyrektyw okrelonych dla caego serwera.
Uwaga
Niektre ze starszych przegldarek WWW nie potrafi rozrnia wzw za pomoc nazw, poniewa moliwo ta zostaa
wprowadzona wraz z wersj 1.1 protokou HTTP, a starsze przegldarki s zwykle zgodne jedynie z wersj HTTP 1.0. Jeeli jednak
przegldarka jest cho czciowo zgodna z protokoem HTTP 1.1,
to z pewnoci daje t wanie moliwo.
490
Wzy wirtualne rozrniane nazwami wymagaj umieszczenia w pliku konfiguracyjnym jednego tylko dodatkowego wpisu. Ot naley poinformowa serwer WWW, ktry z adresw IP ma
w systemie DNS wicej ni jedn nazw. Suy do tego dyrektywa NameVirtualHost:
NameVirtualHost 212.85.67.67
W pliku konfiguracyjnym powinien znale si blok dyrektyw dla kadej nazwy przypisanej do
adresu. Podobnie jak w przypadku wzw wirtualnych rozrnianych adresami IP, w ramach
dyrektywy blokowej VirtualHost trzeba definiowa tylko te dyrektywy, ktre powinny mie
wartoci inne od dyrektyw definiowanych globalnie, dla caego serwera. Koniecznie natomiast
trzeba w bloku zdefiniowa dyrektyw ServerName, poniewa tylko ona rozrnia poszczeglne
serwery wirtualne:
<VirtualHost 212.85.67.67>
ServerName bugserver.gnulix.org
ServerAlias bugserver
DocumentRoot /home/bugserver/htdocs
ScriptAlias /home/bugserver/cgi-bin
TransferLog /home/bugserver/logs/access_log
</VirtualHost>
<VirtualHost 212.85.67.67>
ServerName pts.gnulix.org
ServerAlias pts
DocumentRoot /home/pts/htdocs
ScriptAlias /home/pts/cgi-bin
TransferLog /home/pts/logs/access_log
ErrorLog /home/pts/logs/error_log
</VirtualHost>
Wskazwka
Obsugujc wzy wirtualne w sieci lokalnej bd intranecie,
mona udostpni uytkownikom skrcone nazwy wzw, aby
nie musieli za kadym razem wpisywa w pasku adresu penej
kwalifikowanej nazwy domeny. Dla przykadu, przy uyciu nazwy
skrconej mona odwoa si do adresu http://bugserver/index.html
zamiast do http://bugserver.gnulix.org/index.html. W takim przypadku serwer Apache nie moe wiedzie, e oba te adresy odnosz si do tego samego wza wirtualnego. Mona to obej, definiujc dwie dyrektywy blokowe VirutalHost, jedn dla nazwy
bugserver, drug dla penej nazwy bugserver.gnulix.org, ale atwiej
po prostu umieci wewntrz dyrektywy blokowej wza wirtualnego
dyrektyw definiujc alias wza:
ServerAlias bugserver
491
Rejestrowanie
Serwer Apache umoliwia rejestrowanie w plikach dziennika informacji o niemal dowolnych
aspektach dziaania serwera. Rejestrowanie tych informacji moe by pomocne do:
lepszego zarzdzania zasobami systemowymi (w przypadku informacji dotyczcych wy-
Po uruchomieniu serwera Apache tworzone s domylnie dwa pliki dziennikw: access_log (plik
dziennika napywajcych da) oraz error_log (plik dziennika bdw). Znajduj si one zwykle w katalogu /var/log/httpd (w zalenoci od konfiguracji serwera, w katalogu tym mog si te
pojawi pliki dziennika moduu implementujcego protok SSL: ssl_access_log, ssl_error_log
oraz ssl_request_log). Wszystkie pliki dziennika, z wyjtkiem error_log (czyli standardowo jedynie plik access_log), s generowane w formacie okrelonym par dyrektyw CustomLog oraz
LogFormat. Dyrektywy te umieszczane s, rzecz jasna, w pliku konfiguracyjnym httpd.conf.
Nowy format pliku dziennika mona zdefiniowa nastpujco:
LogFormat "%h %l %u %t \"%r\" %>s %b" common
Znacznik formatu common to definicja formatu bazowego, domylnego dla wszystkich dziennikw.
Warto pamita, e wikszo dostpnych narzdzi automatycznie kontrolujcych i analizujcych
zawarto plikw dziennika dziaa w oparciu o zaoenie, e analizowany plik generowany jest
wanie zgodnie z formatem common, ewentualnie formatem combined; oba formaty definiowane
s w domylnych plikach konfiguracyjnych.
W definicji formatu LogFormat mona stosowa nastpujce zmienne.
492
%a
%A
%b
%B
%{ZMIENNA}e
%f
%h
%H
Protok dania.
%{NAGWEK}i
%l
%m
Metoda dania.
%{NOTA}n
%{NAGWEK}o
%p
%P
%q
%r
%s
%t
%{format}t
%T
%u
%U
%V
%v
Kad zmienn mona poprzedzi wyraeniem, ktre bdzie warunkowao umieszczenie wartoci
zmiennej w wierszu dziennika. W przypadku niespenienia warunku w miejsce wartoci zmiennej pojawi si znak -. Warunki definiowane s w postaci liczb odpowiadajcych wartociom
493
zwracanym przez serwer. Dla przykadu, zapis %!401u spowoduje wywietlenie wartoci
zmiennej REMOTE_USER, chyba e zwracany przez serwer kod obsugi dania to 401.
Pooenie i format pliku dziennika okrela si za porednictwem dyrektywy CustomLog:
CustomLog logs/access_log common
Jeeli podana w dyrektywie cieka nie jest ciek absolutn (jak to jest w przykadzie powyej), to
jest ona interpretowana wzgldem katalogu okrelonego dyrektyw ServerRoot.
Warto zajrze
W sieci dostpna jest niezwykle bogata dokumentacja serwera Apache. Informacji dodatkowych
o zagadnieniach opisywanych w rozdziale warto poszuka rwnie pod nastpujcymi adresami:
http://news.netcraft.com/archives/web_server_survey.html strona z podsumowa-
niem wrzeniowej ankiety firmy Netcraft, obejmujcej 135 166 473 respondentw
(witryn) (dane z wrzenia 2007 roku). Ankiety wykazuj od lat, e to wanie Apache
jest najpopularniejszym serwerem WWW w publicznym internecie.
http://www.apache.org/ witryna grupy Apache Group, zawierajca m.in. wyczer-
Serwerowi Apache powicono te kilka znakomitych ksiek. Jedn z nich jest Apache Server
Unleashed (Sams Publishing).
494