ZASTOSOWANIA:
serwery WWW
WWW dla wszystkich
Wst p
B d czujny
Linux: du a wydajno ...
Windows NT: łatwy sposób...
Marcin Nowak
Masz ciekawe i oryginalne hobby? Chciałby podzieli si swoimi pogl dami z "całym"
wiatem? Nie ka dy mo e zaistnie na łamach prasy czy wyst pi w telewizji. Za to wielu
z nas mo e mie swoj stron WWW.
Projektowanie witryn WWW przestało by umiej tno ci zastrze on dla profesjonalistów. Korzystaj c z
darmowych czy shareware'owych narz dzi tworzenia stron WWW, coraz wi ksza rzesza "zwykłych"
u ytkowników próbuje swych sił w tej dziedzinie. Jak jednak sprawdzi , czy zaprojektowana przez nas z
trudem witryna b dzie prawidłowo obsługiwana przez serwer? Oczywi cie mo emy umie ci j na
docelowym serwerze i zobaczy , jak si b dzie sprawowała. Niestety, je li korzystamy z modemowego
poł czenia z naszym kontem u dostawcy usług internetowych (providera), wielokrotne przeprowadzenie
takiej operacji mo e by do kosztowne. Czy jest to jednak rzeczywi cie konieczne? Praktycznie ka dy
dost pny w tej chwili system operacyjny przeznaczony dla pecetów oferuje mniej lub bardziej
zaawansowany serwer WWW.
Informacje w Internecie i na CHIP-CD
Apache:
http://www.apache.org/
Dodatkowe moduły:
http://www.apache.org/dist/contrib/modules/
Moduł j zyka PHP:
http://php.apache.org/
Moduł j zyka PERL:
http://perl.apache.org/
Sieciowy tygodnik po wi cony Apache'owi:
http://www.apacheweek.com/
Na doł czonym do CHIP-a CD-ROM-ie w dziale
CHIP-offline | Zastosowania | Serwery WWW
znajduj si m.in. Option Pack 4 PL i Apache w wersji 1.3.6 dla Linuksa i Windows 9x/NT, Sambar 4.1
Dla Windows 98 i NT Workstation s to dwie odmiany
Personal Web Servera
, Wszystkim za licz cym
si dystrybucjom Linuksa towarzyszy najpopularniejszy na wiecie serwer WWW -
Apache
. O ile dwa
pierwsze przeznaczone s raczej tylko do celów testowych b d uruchomienia małego serwera
intranetowego (cho by ze wzgl du na ograniczenie liczby jednoczesnych poł cze ), to Apache jest
serwerem "pełn g b ". Z kolei rozpowszechniany wraz z serwerem NT
Internet Information Server
trudno
poleca do celów testowych, przede wszystkim ze wzgl du na koszty takiego rozwi zania.
B d czujny...
...i przezorny. Implementacja protokołu TCP/IP i usług sieciowych w Windows NT (a tak e w Linuksie, cho
jego ta "przypadło " dotyczy w du o mniejszym stopniu) jest daleka od doskonało ci. Wytrwali hakerzy (ale
nie tylko, równie firmy zajmuj ce si bezpiecze stwem rozwi za sieciowych) regularnie znajduj kolejne
"dziury" b d w mechanizmach obsługi protokołów sieciowych, b d w samych serwisach internetowych.
Wi kszo tych usterek nie jest zbyt gro na, gdy umo liwia "jedynie" przeprowadzenie ataku typu DoS
(Denial of Service), zawieszaj cego prac danego serwisu WWW.
Zdarzaj si jednak usterki gro niejsze, umo liwiaj ce zawieszenie pracy serwera czy te , jak odkryty
ostatnio przez specjalistów z firmy eEye, bł d pozwalaj cy nie tylko na zawieszenie pracy Internet
Information Severa, ale i zdalne przej cie kontroli nad lini komend Windows NT. Co prawda, prowizoryczne
"załatanie" tej dziury było wyj tkowo proste i wymagało niewielkiej zmiany w konfiguracji serwera, lecz przez
kilka dni wiele serwerów pracuj cych na IIS nara onych było na uporczywe ataki domorosłych "hakerów"
korzystaj cych z gotowych, dost pnych w Sieci programów. Na szcz cie wi kszo dziur jest "łatana"
przez producenta w ci gu kilku dni - zwłaszcza je li ich istnienie zostaje szeroko nagło nione. W systemach
uniksowych luki w zabezpieczeniach znajdowane s rzadziej, ale cz sto s du o gro niejsze, gdy
pozwalaj na przej cie pełnej kontroli nad serwerem - konsekwencji takiej sytuacji nie trzeba chyba
tłumaczy .
Có wi c powinni my zrobi - odci si od Sieci? Mimo i takie rozwi zanie jest z pewno ci
najpewniejsze, nie musimy tego robi , pod warunkiem e stosowa si b dziemy do kilku reguł. Przede
wszystkim nale y wył czy wszystkie zb dne usługi internetowe, poniewa mog one sta si przedmiotem
ataków. Je li system operacyjny na to pozwala (co, niestety, nie dotyczy Windows 9x), odetnijmy dost p z
zewn trz do wszystkich, poza niezb dnymi, portów protokołu TCP/IP. Trzeba równie na bie co ledzi
grupy dyskusyjne i serwisy po wi cone bezpiecze stwu systemu operacyjnego, na którym pracujemy - tylko
w ten sposób dowiemy si bowiem o istnieniu konkretnej usterki, zanim kto j przetestuje na naszym
serwerze.
Linux: du a wydajno za darmo
Zarówno instalacja, jak i konfiguracja serwera linuksowego jest trudniejsza ni w
przypadku serwerów Microsoftu. Jednak przy odrobinie wysiłku mo na osi gn niezłe
efekty, nie wydaj c ani grosza. Apache rozpowszechniany wraz ze ródłami wydaje si
tak e lepszym rozwi zaniem dla osób chc cych zmodyfikowa wybrane funkcje serwera
WWW i dostosowa go do indywidualnych potrzeb.
Apache, podobnie jak wi kszo programów przeznaczonych do pracy w rodowisku Linuksa, mo e by
zainstalowany w wersji binarnej lub te mo emy go skompilowa samodzielnie. Ten drugi sposób jest
oczywi cie trudniejszy, ale daje nam mo liwo dowolnego skonfigurowania Apache'a. Program ten ma
modularn budow - jego funkcje zostały zgrupowane w tzw. moduły, które, w zale no ci od naszych
potrzeb, mog by doł czane do wersji wykonywalnej. Kompiluj c serwer, okre lamy, które moduły znajd
si w ostatecznej wersji, dzi ki czemu mo e on mie mniejsze rozmiary lub by bardziej stabilny (je li na
przykład na naszej maszynie jaki nieistotny dla funkcjonowania serwera moduł działa nieprawidłowo,
mo emy z niego zrezygnowa ). Taka filozofia rozwijania Apache'a ma te t zalet , e daje wszystkim
u ytkownikom mo liwo tworzenia modułów. Istnieje wiele dodatków nie tworzonych przez The Apache
Group, a znakomicie zwi kszaj cych mo liwo ci serwera. Jednym z bardziej znanych jest moduł PHP,
wzbogacaj cy Apache'a j zykiem skryptowym, podobnym do ASP (patrz CHIP 1/99).
Pliki ródłowe Apache'a s dost pne w postaci pliku z rozszerzeniem.tar.gz, który rozpakowujemy
poleceniem tar -xzf apache_1.3.6.tar.gz. W rezultacie powstanie katalog
apache_1.3.6
, zawieraj cy
wszystkie zbiory potrzebne do kompilacji. W niniejszym artykule zakładamy, e mamy do dyspozycji Linuksa
w dystrybucji Red Hat 6.0. U ytkownicy innych wersji tego systemu operacyjnego b d musieli samodzielnie
okre li cie ki do katalogów, w których zostały rozmieszczone pliki Apache'a.
Je li instaluj c Red Hata, pomin li my serwer WWW, mo emy to nadrobi , odnajduj c na płycie
instalacyjnej odpowiedni plik (/REDHAT/RPMS/Apache-1.3.6.rpm) i wykonuj c polecenie rpm -i Apache-
1.3.6.rpm. Dzi ki temu na dysku zostan umieszczone wszystkie niezb dne pliki i utworzone potrzebne
katalogi, a my, po dokonaniu kompilacji, ograniczymy si tylko do przekopiowania pliku wykonywalnego i
zbiorów konfiguracyjnych.
Kompilacja
Zanim zabierzemy si do kompilacji, musimy Apache'a skonfigurowa . Sama kompilacja jest bardzo prosta -
najwa niejsze jest odpowiednie okre lenie naszych potrzeb i wybranie modułów, które b d nam potrzebne.
Na tym etapie definiujemy równie cie ki dost pu do wa nych katalogów, zawieraj cych m.in. pliki
konfiguracyjne, logi i inne.
Konfiguracji dokonujemy, uruchamiaj c skrypt ./configure z odpowiednimi parametrami. Poniewa
zwykle jest ich sporo, warto całe polecenie umie ci w pliku, by w razie pomyłki móc łatwo je poprawi . Za
pomoc ulubionego edytora tworzymy plik konf i wpisujemy w nim polecenie ./configure --
prefix=/home/httpd. W ten sposób okre limy katalog domowy. Nie musi by on taki jak powy ej, ale, jak
wspomnieli my, w tym opisie u yjemy schematu rozmieszczenia plików serwera u ywanego w dystrybucji
Red Hat 6.0. Do polecenia tworzonego w zbiorze konf dodajemy te inne przeł czniki okre laj ce
niezb dne cie ki; cało znajduje si w ramce "Przykładowe polecenie przygotowuj ce Apache'a do
kompilacji".
Drug wa n czynno ci jest okre lenie, które moduły maj by doł czone do serwera. Opis wybranych
komponentów znajduje si w ramce na s. 171 (pełn ich list mo na znale w dokumentacji Apache'a lub w
pliku INSTALL, w sekcji LIST OF AVAILABLE MODULES). Niektóre moduły s doł czane do serwera
domy lnie. Je li chcemy doda wybrany moduł, robimy to poleceniem --enable-module=nazwa. Chc c
usun moduł, do wywołania skryptu configure dodajemy polecenie -disable-module=nazwa. Komenda
enable-module nie dotyczy ł czenia z Apachem dodatków innych producentów - w tym przypadku nale y
u y polecenia --add-module. Nie b dziemy tu jednak podawa szczegółowych informacji, bo te w ka dym
przypadku s inne, a ich opis znajduje si w plikach doł czonych do poszczególnych pakietów. Spis
dost pnych modułów innych producentów znajduje si na serwerze Apache'a (patrz ramka "Info").
Po utworzeniu pliku konf poleceniem chmod u+x konf ustawiamy prawa dost pu, tak by zbiór mógł
zosta uruchomiony. Nast pnie wywołujemy go (./konf) i obserwujemy pojawiaj ce si na ekranie
komunikaty. Bł dy jakie mog wyst pi , to zwykle pomyłki w nazwach dodawanych modułów - je li si one
pojawi , poprawiamy plik konf i ponownie go uruchamiamy. Gdy konfiguracja przebiegnie bez problemów,
przechodzimy do nast pnego kroku - kompilacji.
Ta czynno sprowadza si do wydania polecenia make i odczekania kilku minut. Wynikiem działania tej
komendy b dzie plik httpd, który pojawi si w podkatalogu
src
. Je li na naszym komputerze działa ju
serwer WWW, zatrzymujemy go (w Red Hacie wywołujemy polecenie kill -TERM /cat/var/run/httpd.pid') i
nowo utworzony zbiór kopiujemy do katalogu
/usr/sbin
. Nast pnie do kartoteki
/etc/httpd/conf
kopiujemy
jeszcze pliki httpd.conf, mime.types oraz magic, znajduj ce si w folderze
/src/conf
. Do uruchomienia
Apache'a (dopiero po skonfigurowaniu) słu y polecenie httpd.
Konfiguracja serwera
Apache'a konfigurujemy edytuj c odpowiednie pliki. Głównym zbiorem jest httpd.conf i on zawiera prawie
wszystkie polecenia słu ce do okre lenia sposobu pracy serwera. Oprócz tego pliku istnieje te
mime.types przypisuj cy rozszerzeniom serwowanych dokumentów odpowiednie typy, tzw. mime types. W
starszych wersjach serwera (poni ej 1.2) istniały te pliki srm.conf i access.conf, ale obecnie ich zawarto
jest umieszczona w zbiorze httpd.conf.
Wi kszo domy lnych ustawie zapewnia poprawn prac serwera. Niemniej warto przejrze główny
plik konfiguracyjny i poprawi kilka polece . Nie jest to trudne, poniewa zbiór ten zawiera bardzo
szczegółowe komentarze. UWAGA: zanim zdecydujemy si na dopisanie jakiej komendy, sprawd my, czy
ju jej nie ma - je li tak, to wystarczy j tylko zmodyfikowa .
Jednym z polece , które wymagaj naszej interwencji, jest ServerAdmin. Okre la ono adres
administratora, który umieszczany jest na przykład na stronach zawieraj cych komunikaty o bł dach. Przed
pierwszym uruchomieniem serwera musimy tak e okre li jego katalog "domowy", wpisuj c wła ciw
cie k (bez uko nika na ko cu) jako parametr polecenia ServerRoot. W naszym przypadku b dzie to
katalog /
home/httpd
. Ponadto musimy odnale wszystkie wyst pienia ci gu @@ServerRoot@@ i zast pi
je wy ej wymienion cie k .
Modyfikacji wymagaj te cie ki do katalogów okre laj cych poło enie logów oraz plików
konfiguracyjnych. Jednak zamiast odnajdywa w zbiorze httpd.conf wszystkie takie wpisy, utworzymy dwa
linki symboliczne, by Apache mógł znale wszystkie potrzebne pliki. W tym celu trzeba wyda polecenia ln
-s /etc/httpd/
conf/home/httpd/conf oraz ln -s /var/log/httpd/home/httpd/logs. Nale y tak e znale lini z wpisem
group #-1 i w miejsce parametru #-1 wpisa nobody. Ostatni czynno ci jest zast pienie w dwóch
miejscach pliku httpd.conf ci gu htdocs (okre la poło enie serwowanych dokumentów) wpisem html.
Indywidualnie
Konfiguracji serwera mo na dokonywa tak e za pomoc wpisów w plikach.htaccess. Polecenia zawarte w
tych zbiorach odnosz si tylko do dokumentów odczytywanych z kartotek, w których znajduje si dany plik
.htaccess.
Zbiory te s odczytywane tylko wówczas, gdy w pliku konfiguracyjnym znajduje si polecenie
AllowOverride All. Je li ko czy si ono słowem None, pliki .htaccess b d ignorowane. Istnieje wiele
komend opisanych w dokumentacji serwera, które pozwalaj na u ywanie w zbiorze.htaccess ró nych grup
polece .
Ciekawostki
Interesuj ce i przydatne s mo liwo ci modułu
spelling
. Jest on odpowiedzialny za naprawianie drobnych
bł dów popełnionych podczas wpisywania adresów internetowych w przegl darce. Dzi ki niemu na pewno
zostanie skorygowana wielko liter w nazwach plików i katalogów czy opuszczone lub zamienione
pojedyncze znaki. Aby uruchomi ten moduł, trzeba w pliku httpd.conf umie ci polecenie CheckSpelling
on. Gdy kiedy zechcemy go wył czy , parametr on zamienimy na off.
Je li chcemy przetestowa serwer i nie yczymy sobie, by kto go w tym czasie u ywał, mo emy zmieni
port, na którym Apache pracuje. Domy lnie serwer WWW korzysta z portu o numerze 80, ale je li zmienimy
to na dowoln warto (wi ksz od 1024), prawdopodobie stwo, e kto j odgadnie, znacznie zmaleje.
Wystarczy zamieni w pliku httpd.conf polecenie Port 80 na przykład na Port 4827.
Apache umo liwia łatwe dodanie własnych nagłówków HTTP. W odpowiednim miejscu zbioru httpd.conf
(sekcja Directory, Files, Location) umieszczamy polecenie Header z wła ciw opcj (mo e to by set,
append, add, unset), nazw nagłówka i jego warto ci . Zmienna Set powoduje ustawienie nagłówka na
dan warto ; je li za ju taki istniał, zostanie usuni ty. Poleceniem append dodamy nasz warto do
istniej cego ju nagłówka, add doda nowy nagłówek, nie usuwaj c starego, a unset wykasuje nagłówek o
zadanej nazwie.
Jeden z bardziej nielubianych dokumentów WWW zaczyna si od "404 Not found" - jest to komunikat
wysyłany przez serwer, gdy ten nie znajdzie danej strony. Nic nie stoi na przeszkodzie, aby nasz Apache
w takim przypadku wysyłał bardziej przyjazn informacj . Istnieje komenda ErrorDocument, dzi ki której
mo na zamieni komunikat Not found na inny, sprawi , by serwer wysyłał w takiej sytuacji inny dokument
lub przekierowywał danie do innego serwera. Oto przykłady odpowiednich komend:
ErrorDocument 404 "Brak takiego dokumentu"
ErrorDocument 401 /blad_401.html
ErrorDocument 500 http://inny.serwer.pl/to.html
Jak wida , w ten sposób mo na obsłu y nie tylko bł d 404, ale równie inne.
Wersje j zykowe
Apache zawiera moduł negocjacji zawarto ci (
mod_negotiation
). Jego działanie opiera si na specjalnym
protokole ustalania pomi dzy przegl dark a serwerem tego, co ten ostatni ma wysła . Negocjacjom mog
podlega wersje j zykowe dokumentów z ró nym kodowaniem znaków czy format plików graficznych.
Poni ej poka emy, jak "zmusi " Apache'a do automatycznego wysyłania zbiorów w odpowiedniej wersji
j zykowej.
W ka dej przegl darce mo na ustawi domy lny j zyk dokumentów. Dla angielskich programów
najwła ciwsze s pliki napisane po angielsku, a spolszczone aplikacje (IE pl oraz Sylaba Komunikator) na
pierwszym miejscu stawiaj nasz rodzimy j zyk. Wysyłaj c danie do serwera, w jednym z nagłówków
HTTP umieszczaj one informacje o akceptowanych j zykach. Mo e by ich kilka, ale wtedy maj one
ustalon kolejno i czasami procentowo okre lony priorytet. Ka dy j zyk ma swój dwuliterowy kod - zwykle
pochodzi on od nazwy kraju (
en
,
de
,
pl
). Dodatkowo s wyró nione niektóre odmiany j zyków, jak na
przykład
ru-md
to rosyjski u ywany w Mołdawii,
en-tr
odpowiada odmianie angielskiego z Trynidadu, a
es-pr
to j zyk hiszpa ski, którym posługuj si mieszka cy Portoryko.
Istnieje komenda, która ł czy kody j zyków z rozszerzeniami plików. Jest to konieczne, bo czasami nie
mog by one identyczne. Tak jest w przypadku naszego j zyka - jego kod
pl
jest zwyczajowo u ywany na
oznaczenie skryptów tworzonych w PERL-u i dlatego polskim zbiorom nadajemy rozszerzenie
po
. Do
kojarzenia rozszerze z poszczególnymi j zykami słu y polecenie AddLanguage - jego u ycie dla polskich
dokumentów b dzie wygl dało nast puj co: AddLanguage pl.po. Po utworzeniu odpowiednich wersji
naszych dokumentów nazywamy je, dodaj c rozszerzenie charakterystyczne dla j zyka, w którym powstały.
Polski plik b dzie np. nosił nazw index.html.po, a angielski - index.html.en.
Mo e si jednak zdarzy , e przegl darka nie korzysta z mechanizmu negocjacji lub da dokumentu w
wersji, która nie istnieje na serwerze. Jak wtedy zachowa si serwer? Istnieje polecenie, które okre la
priorytet j zyków. Je li umie cimy w httpd.conf polecenie LanguagePrioryty pl an de fr, to w takim
wypadku serwer najpierw b dzie szukał dokumentu w wersji polskiej, nast pnie angielskiej, pó niej
niemieckiej i dopiero na ko cu - francuskiej.
Ograniczanie dost pu
Jedn z metod ograniczania dost pu jest system haseł. Jest on znany wi kszo ci internautów - przy próbie
odczytania chronionych zasobów (dokumentów, katalogów) pojawia si małe okno z pro b o podanie
nazwy u ytkownika i hasła.
Proces ustawiania zabezpiecze składa si z dwóch etapów. Pierwszy to utworzenie bazy z nazwami
u ytkowników oraz ich hasłami, a drugi - okre lenie praw dost pu do poszczególnych zasobów. System
zabezpiecze nie ma nic wspólnego z "normalnymi" hasłami i kontami systemu, cho mo na sprawi , by
było inaczej. Nie jest to jednak wskazane. Apache nie ma bowiem adnych ogranicze dotycz cych liczby
prób logowania. Mogłoby si zdarzy , e włamywacz u yłby serwera WWW do odgadni cia hasła.
Hasła s przechowywane w formie zaszyfrowanej, w pliku, który ma budow podobn do zbioru
/etc/passwd. Do jego tworzenia słu y specjalny program o nazwie
htpasswd
. Je li go nie mamy, nale y go
skompilowa , gdy nie jest to robione podczas kompilacji samego Apache'a. Pliki ródłowe znajduj si w
katalogu
src/support
. Aby utworzy wersj wykonywaln , nale y wyda polecenie make htpasswd. W
rezultacie otrzymamy wykonywalny zbiór htpasswd, który mo emy skopiowa do katalogu
/usr/local/bin
.
Teraz, chc c utworzy konto dla nowego u ytkownika, wydajemy polecenie htpasswd -c
/home/httpd/users marcin. Nast pnie podajemy hasło, a w rezultacie w folderze
/home/httpd
pojawi si
zbiór users, a w nim na przykład linia marcin:d83h83g93. Je li zechcemy zmieni hasło jakiego
u ytkownika, wydajemy to samo polecenie, jednak bez parametru -c.
Drugi etap polega na okre leniu, które zasoby s dost pne dla u ytkowników. Robi si to, dokonuj c
odpowiednich wpisów w plikach .htaccess lub httpd.conf, w sekcji dotycz cej odpowiednich katalogów ( <
Directories > ). Je li chcemy u y pierwszej metody, musimy zezwoli na u ywanie pliku .htaccess (
patrz
podstrona
). Polecenia zabezpieczaj ce wybrane katalogi wygl daj nast puj co:
AuthName 'Wazne pliki'
AuthType Basic
AuthUserFile /home/httpd/users
require valid-user
Pierwsza komenda nadaje nazw zasobowi (b dzie ona wy wietlana w oknie z pytaniem o hasło). Drugie
polecenie okre la, jak b dzie przesyłane hasło. Ten sposób autoryzacji nosi nazw
Basic
(patrz CHIP 2/99)
.
W tym przypadku nie b dzie ono podlegało szyfrowaniu, co zmniejsza nieco skuteczno naszych
zabezpiecze . Jednak drugi sposób autoryzacji -
Digest
(tu hasło jest kodowane), obsługuje wył cznie
Internet Explorer. Trzecia linia okre la plik, z którego maj by pobierane informacje o u ytkownikach i ich
hasłach. Ostatnie polecenie jest tu najwa niejsze, bo mówi o tym, kto jest uprawniony do korzystania z
zasobu. W powy szym przykładzie s to wszyscy istniej cy u ytkownicy. Gdyby ta linia miała posta :
require user marek darek asia, to z tego zasobu korzystałyby tylko wymienione osoby.
W celu łatwiejszego korzystania z opisywanego mechanizmu została wprowadzona mo liwo
zakładania grup, do których mog nale e wybrani u ytkownicy. Mo emy na przykład utworzy grup
irc
i
przypisa do niej Marka i Asi . Do wybranego katalogu dost p b d mieli członkowie grupy irc oraz
administrator. Odpowiednia sekwencja polece b dzie wygl dała nast puj co:
AuthName 'Wazne pliki'
AuthType Basic
AuthUserFile /home/httpd/users
AuthGroupFile/home/httpd/groups
require user administrator
require group irc
Aby sprawdzi nasz przykład, musimy równie utworzy plik z definicj grup. B dzie on miał nast puj c
tre :
irc: marek asia
quake: monster borys player
Oprócz grupy
irc
została zało ona równie grupa
quake
z trzema członkami.
Ograniczanie dost pu na podstawie adresu
Drugi sposób ograniczania dost pu opiera si na adresie. Za te funkcje serwera odpowiada moduł
access_mod
, obsługiwany przez trzy dyrektywy: allow, deny i order. Za pomoc pierwszej okre lamy, które
komputery mog korzysta z wybranych zasobów, druga definiuje maszyny lub grupy maszyn, nie mog ce
odczytywa wybranych dokumentów. Obu komend mo emy u ywa jednocze nie i wtedy polecenie order
okre la sposób interpretacji informacji zapisanych w komendach allow i deny. Najlepiej przedstawi
działanie dyrektywy order na przykładzie. Je li w pliku konfiguracyjnym znajd si polecenia
order deny,allow
deny from all
allow from.chip.pl
- to wybrane strony b d mogły by przegl dane tylko z komputerów nale cych do domeny chip.pl. Po
pierwszej linii wszystkie komputery maj zezwolenie na czytanie zasobów. Drugie polecenie zabrania
dost pu wszystkim, a trzecie "wpuszcza" komputery z domeny chip.pl. Gdyby my w pliku konfiguracyjnym
umie cili komendy
order allow,deny
allow from all
deny from .chip.pl
- to pierwsza linia zabroni dost pu wszystkim, druga za da go wszystkim, a trzecia spowoduje, e jedynie
komputery z domeny chip.pl nie b d mogły niczego czyta .
Zmiana komunikatów o bł dach jest bardzo prosta
- wystarczy jedna komenda
Jak wida , polecenia allow i deny mog zaw a swoje działanie do wybranej domeny (dowolnego
poziomu, zarówno pl, jak i ds.pwr.wroc.pl). Jednak w takim przypadku serwer zawsze musi przetłumaczy
adres komputera chc cego odczyta dane na numer IP. Taka operacja zwalnia nieco proces serwowania
dokumentów, wi c czasami konieczne jest okre lanie komputerów na podstawie numerów IP. Mo na to
robi , podaj c pełne adresy IP (np. 134.34.26.231), jak i tylko niektóre pocz tkowe bajty (134. albo
134.134.26). Je li chcemy precyzyjnie zaw zi grup komputerów mog cych lub nie mog cych odczytywa
dokumentów z naszego serwera, mo emy poda adres sieci i mask podsieci (np.
134.134.26.0/255.255.255.128).
Czy tylko Apache i Personal Web Server?
Liczba dost pnych serwerów jest du a. W ród shareware'owych programów mo na znale kilkana cie
pozycji tego typu. Jednak naprawd licz si tylko dwa produkty: Apache oraz IIS, które razem maj prawie
80% rynku. Nast pny w kolejno ci serwer Netscape'a to troch ponad 7%, a pozostałe produkty
sporadycznie przekraczaj 2%. Taka sytuacja wynika z dwóch powodów: Apache jest dost pny za darmo w
wersjach na wszystkie systemy uniksowe, a IIS doł czony do ka dego systemu Windows NT. Pod adresem
http://www.netcraft.com/survey/
mo na znale wykres przedstawiaj cy udział poszczególnych serwerów w
rynku.
Server Side Include
Zarówno Apache, jak i PWS obsługuj dyrektywy Server Side Include (SSI) umo liwiaj ce wykonywanie
prostych czynno ci, bez potrzeby instalowania modułów j zyków skryptowych. Komendy SSI maj
nast puj c składni : < !--#element atrybut=warto atrybut=warto ... -- > . Nale y pami ta , e
sekwencja -- > musi by poprzedzona spacj . Elementami mog by :
config - definiuje parametry SSI, którymi s :
errmsg
- okre la komunikat, jaki ma si pojawi w przypadku
wyst pienia bł du,
sizefmt=bytes
- sprawia, e wielko ci plików b d podawane w bajtach,
sizefmt=abbrev
-
powoduje wy wietlanie rozmiaru zbiorów w kilobajtach lub megabajtach,
echo - wypisuje warto wybranej zmiennej rodowiskowej serwera WWW. Je li danej zmiennej nie ma,
echo zwraca warto
none
. Atrybutem elementu echo jest
var
,
exec - uruchamia komend systemow (atrybut
cmd
) lub skrypt CGI (
cgi
),
fsize - wypisuje rozmiar zadanego pliku. Mo liwe atrybuty to
file
( cie ka do pliku na dysku) lub virtual
(
URL
),
flastmod - wy wietla dat ostatniej modyfikacji pliku. Atrybuty takie jak elementu fsize,
include - "wstawia" w miejscu wywołania zawarto innego pliku. Atrybuty jak w przypadku fsize,
printenv - wypisuje wszystkie zmienne rodowiskowe. Nie ma atrybutów,
set - ustawia warto wybranej zmiennej. Atrybuty:
var
- nazwa zmiennej i
value
- warto
Do zestawu polece Server Side Include nale równie komendy warunkowe: if, elif, else oraz endif.
Mog one korzysta z operatorów logicznych, a tak e wyra e regularnych.
Zmienne rodowiskowe Apache'a
W SSI s dost pne zmienne zdefiniowane w standardzie CGI oraz, dodatkowo, kilka innych. W ród nich s :
DATE_GMT - aktualny czas GMT
DATE_LOCAL - czas lokalny
DOCUMENT_NAME - nazwa dokumentu (bez cie ki dost pu)
DOCUMENT_URL - URL odczytywanej strony
LAST_MODIFIED - czas ostatniej modyfikacji wysyłanego pliku
Pliki zawieraj ce polecenia SSI zwykle maj rozszerzenie shtml. Jednak mo e by ono inne, co definiujemy
za pomoc nast puj cych komend:
AddType text/html.shtml
AddHandler server-parsed.shtml
Mo emy równie w inny sposób sprawi , by wybrane pliki były przetwarzane w poszukiwaniu komend
SSI. Je li w zbiorze konfiguracyjnym umie cimy polecenie XBitHack on, to ka dy zbiór maj cy ustawiony
atrybut wykonywalno ci dla wła ciciela b dzie traktowany tak, jakby miał rozszerzenie shtml. Je eli ta
komenda b dzie miała posta XbitHack all, te same wła ciwo ci otrzymaj pliki z ustawionym atrybutem x
dla grupy.
Uwaga, bł d!
Z powodu zmiany poło enia jednego pliku, u ytkownicy Red Hata 6.0 napotkaj problemy z kompilacj
modułu
rewrite
. Aby stała si ona mo liwa, nale y w katalogu src/modules/standard odnale plik
rewrite.h w nim lini #include <ndbm.h> , kt ór nale y zamieni na #include <db1/ndbm.h> .
Najwa niejsze moduły Apache'a
najwa niejsze moduły Apache'a
Core
Podstawowe funkcje
+
mod_access
Kontrola dost pu na podstawie adresu
+
mod_actions
Skrypty CGI jako obsługa wewn trznych "uchwytów"
+
mod_alias
Mapowanie katalogów i przekierowania
+
mod_asis
Obsługa plików zawieraj cych w sobie nagłówki protokołu HTTP
+
mod_auth
Kontrola dost pu do wybranych zasobów oparta na systemie kont i haseł
-
mod_auth_anon
Anonimowy dost p do wybranych zasobów (wymaga podania adresu e-mail jako
hasła)
+
mod_autoindex
Wy wietlanie zawarto ci katalogów
+
mod_cgi
Uruchamianie skryptów CGI
-
mod_digest
Spełnia tak sam funkcj , jak modauth, ale hasła s szyfrowane podczas transmisji
+
mod_dir
Serwowanie domy lnego dokumentu katalogu (zwykle index.html)
+
mod_env
Przekazywanie zmiennych rodowiskowych do skryptów CGI i SSI
-
mod_expires
Kontroluje okre lanie wa no ci serwowanych dokumentów
-
mod_headers
Ustawianie dodatkowych lub modyfikacja standardowych nagłówków protokołu HTTP
+
mod_imap
Obsługa map obrazkowych po stronie serwera
+
mod_include
Obsługa Server Side Include (patrz Słowniczek)
-
mod_log_agent
Zapami tywanie w osobnym pliku danych o przegl darkach odczytuj cych informacje
z serwera
+
mod_log_config
Zapami tywanie w specjalnym pliku informacji o przegl darkach odczytuj cych
dokumenty z naszego serwera
-
mod_log_referer
Zapami tywanie informacji o poprzednio przegl danym dokumencie
+
mod_mime
Okre lanie typów dokumentów na podstawie ich rozszerze
-
mod_mime_magic
Okre lanie typów plików na podstawie ich zawarto ci
+
mod_negotiation
Negocjacja zawarto ci (patrz akapit Wersje j zykowe)
-
mod_rewrite
Bardzo zaawansowany system tworzenia przekierowa oparty na wyra eniach
regularnych
+
mod_setenvif
Ustawianie zmiennych rodowiskowych na podstawie informacji o przegl darce
-
mod_speling
Automatyczne poprawianie bł dów w URL-ach
+
mod_status
Wy wietlanie statusu serwera
+
mod_userdir
Obsługa katalogów domowych u ytkowników, dost pnych przez /~uzytkownik/
-
mod_unique_id
Tworzenie unikatowych identyfikatorów dla poszczególnych da odczytu
-
mod_usertrack
ledzenie u ytkowników dzi ki wykorzystaniu mechanizmu "ciastek" (cookie)
Wa ne komendy
Jedn z istotniejszych dyrektyw jest komenda Directory. Ma ona nast puj c składni :
<Directory /katalog>
Opcja1...
Opcja2...
...
</Directory>
a słu y do grupowania polece odnosz cych si do wybranych katalogów. Dzi ki niej mo emy ró nym
kartotekom nadawa wybrane wła ciwo ci zgodnie z własnymi potrzebami. Ta sama zasada dotyczy te
komend <Files> oraz <Location> . Ró nica jest tylko taka, e pierwsza pozwala okre la wła ciwo ci
plików, a druga katalogów serwera WWW. Polecenie Files mo e by u yte wewn trz Directory i wtedy
odnosi si do plików znajduj cych si w danym katalogu.
Przykładowe polecenie przygotowuj ce Apache'a do kompilacji
Komenda musi by wpisana albo w jednej linii, albo wszystkie wiersze, z wyj tkiem ostatniego, musz si
ko czy spacj i znakiem \.
./configure --prefix=/home/httpd \
--exec-prefix=/home/httpd \
--sysconfdir=/etc/httpd/conf \
--logfiledir=/var/log/httpd \
--runtimedir=/var/run \
--enable-module=spelling \
--disable-module=imap