background image

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.

 

 

background image

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. 

background image

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.confmime.types oraz magic, znajduj ce si  w folderze 

/src/conf

. Do uruchomienia 

Apache'a (dopiero po skonfigurowaniu) słu y polecenie httpd.

 

background image

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 DirectoryFilesLocation) umieszczamy polecenie Header z wła ciw  opcj  (mo e to by  set

appendaddunset), 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.

 

background image

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.

 

background image

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 

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.

 

 

background image

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: allowdeny 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).

 

background image

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: ifelifelse 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.

 

background image

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)

 

 

background image

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