r 29 07 QG2RLGNZCVIVEIONKVAJ373M3FW6FV4DUYBCLPA


Rozdział 29.
Porady i wskazówki
na temat serwera WWW
Serwer WWW jest mózgiem każdej witryny, można porównać go do centrum
sterowania lotem kosmicznym. Bez niego to, co stworzyłeś, będzie tylko zbiorem
nieistotnych i nikomu niepotrzebnych stron WWW, przechowywanych na czyimś
twardym dysku.
Z drugiej strony jest to w końcu tylko program komputerowy, który instaluje się i
ustawia, tak jak inne programy. Oprócz tego, że jest odpowiedzialny za publikację
Twoich stron w sieci, pozwala także na wykorzystywanie skryptów CGI, map
odnośników i zabezpiecza pliki przed nieupoważnionym dostępem (o czym powiem w
rozdziale 30.   Bezpieczeństwo serwera WWW i kontrola dostępu ).
W tym rozdziale opiszę kilka sztuczek, które ułatwią Ci zarządzanie witryną po stronie
serwera i sprawią, że będzie ona bardziej przejrzysta dla czytelników. Będą to
następujące zagadnienia:
mechanizm SSI serwerów NSCA oraz jego wykorzystanie do umieszczania na
stronach informacji na bieżąco aktualizowanych,
automatyczne przekierowanie przez serwer połączeń do przeniesionych stron,
log  jego struktura, wykorzystanie i programy do generowania statystyk,
tworzenie własnych dokumentów informujących o błędach.
Tak jak w poprzednich rozdziałach, moje uwagi dotyczą przede wszystkim serwerów HTTPD
działających w systemie Unix. Jednakże większość podawanych informacji dotyczy
serwerów w ogóle, dlatego też treść tego rozdziału może okazać się przydatna nawet wtedy,
gdy używasz innego serwera na innej platformie programowej.
Mechanizm NCSA SSI
Mechanizm SSI (ang. Server Side Include) jest udostępniany przez wiele serwerów WWW,
umożliwia tworzenie stron WWW przetwarzanych przez serwer i umieszczanie w nich
specjalnych poleceń. W momencie zgłoszenia żądania odczytu pliku HTML, serwer
804 Część 10. Konfiguracja i administracja serwera WWW
przetwarza umieszczone w nim polecenia, a ich wyniki umieszcza w kodzie pliku. Me-
chanizm SSI pozwala na wykonywanie następujących operacji:
umieszczanie plików wewnątrz innych (z reguły są to pliki z podpisami lub notki
o prawach autorskich),
umieszczanie na stronie HTML bieżącej daty i czasu,
umieszczanie na stronie informacji o pliku, na przykład, jego wielkości lub daty
ostatniej modyfikacji,
umieszczanie na stronie wyniku działania skryptu CGI  przykładem może być
licznik odwiedzin danej strony.
SSI wprowadza sporą elastyczność dotyczącą typu informacji, które można dołączyć do
strony WWW. Wadą tego rozwiązania jest to, że każdy plik zawierający specjalne kody
musi być dodatkowo przetworzony przez serwer, co powoduje jego większe obciążenie
i wolniejsze ładowanie strony. Oprócz tego wywoływanie skryptów CGI osłabia bezpie-
czeństwo serwera.
W tej części rozdziału przedstawię pokrótce każde z wyrażeń, które może zostać
umieszczone w kodzie strony. Opiszę również, jak skonfigurować serwer i pliki, aby
mechanizm SSI mógł zadziałać.
Zarówno teraz, jak i w dalszej części rozdziału przyjmuję założenie, że masz do dyspozycji
własny serwer WWW, który możesz konfigurować w dowolny sposób. Jeżeli korzystasz z
usług serwera, będącego pod opieką kogoś innego, może okazać się, że nie posiada on
opisywanych tu możliwości. Porozmawiaj z jego administratorem i dowiedz się, jakie cechy
potrafi on obsłużyć.
Konfiguracja serwera
Pierwszym warunkiem korzystania z mechanizmu SSI jest jego obsługa przez serwer.
Jeżeli jest on spełniony, należy jeszcze skonfigurować oprogramowanie tak, aby go
uruchomić.
W serwerach opartych o NSCA należy dokonać dwóch modyfikacji w plikach
konfiguracyjnych, a więc trzeba:
dodać opcję Include do dyrektywy Options,
Zdefiniować specjalny typ dla plików, które mają być przetwarzane przez serwer.
Może się zdarzyć, że serwer, którego używasz, obsługuje SSI, ale sposób włączania tego
mechanizmu jest nieco inny. W takim razie należy dokładnie przejrzeć dokumentację i
znalezć odpowiedni opis.
SSI może zostać zainicjowane dla całego serwera lub tylko dla niektórych katalogów.
Podobnie, pewnym katalogom można odebrać prawo dostępu do tej usługi.
Rozdział 29. Porady i wskazówki na temat serwera WWW 805
Aby udostępnić SSI dla wszystkich plików w drzewie katalogów serwera, należy doko-
nać zmian w pliku access.conf, który znajduje się w katalogu konfiguracyjnym (zwykle
nosi on nazwę conf).
Plik kontroli dostępu dla całego serwera może znajdować się gdzie indziej i nosić inną nazwę.
Jest to zdefiniowane w pliku httpd.conf. W nowszych wersjach serwera Apache, wszystkie
dyrektywy konfiguracyjne umieszczane są w pliku httpd.conf, dotyczy to także dyrektyw
określających prawa dostępu.
Aby udostępnić SSI dla wszystkich katalogów, dopisz do pliku access.conf następującą
linię:
Options Includes
Zamiast umożliwiać przetwarzanie plików znajdujących się we wszystkich katalogach,
możesz je ograniczyć tylko do kilku wybranych. Aby włączyć mechanizm SSI tylko dla
plików, znajdujących się w katalogu /home/www/includes, musisz w pliku access.conf
wpisać następujące linie:

Options Includes

Włączenia SSI dla konkretnego katalogu można dokonać również za pomocą pliku kontroli
dostępu, znajdującego się właśnie w tym katalogu. Plik ten nosi zwykle nazwę .htaccess, a
więcej na jego temat opowiem w następnym rozdziale.
Zarówno globalnie, jak i tylko dla określonych katalogów można uaktywnić mechanizm
SSI z pewnym ograniczeniem, nie będą wykonywane polecenia, które powodują wywo-
łanie skryptów CGI. W tym celu, zamiast linii podanej powyżej, należy wstawić:
Options IncludesNoExec
Przejdzmy teraz do edycji pliku srm.conf (lub http.conf, w zależności do posiadanej
wersji serwera Apache), który powinien również znajdować się w katalogu konfigura-
cyjnym. W tym miejscu należy określić rozszerzenie dla plików HTML, które będą
przetwarzane przez serwer i będą zawierały odpowiednie polecenia. Zwykle pliki te po-
siadają rozszerzenie .shtml. Aby serwer mógł przetwarzać pliki z takim właśnie rozsze-
rzeniem, należy dopisać następującą linię:
AddType text/x-server-parsed-html .shtml
Możesz też spowodować, że wszystkie pliki znajdujące się na serwerze będą przezeń
przetwarzane:
AddType text/x-server-parsed-html .html
Zwróć jednak uwagę, że jeżeli serwer będzie analizował każdy wysyłany przez siebie
plik HTML, jego działanie ulegnie znacznemu spowolnieniu.
Po dokonaniu tych zmian należy ponownie uruchomić serwer, aby je uaktywnić i w za-
sadzie wszystko będzie już przygotowane.
806 Część 10. Konfiguracja i administracja serwera WWW
Tworzenie plików z poleceniami SSI
Teraz, kiedy serwer jest już odpowiednio ustawiony, można rozpocząć wstawianie po-
leceń SSI do plików HTML, tak aby serwer przetwarzał je w momencie, w którym ktoś
zażąda dostępu do nich.
Polecenia SSI umieszczane są w komentarzach HTML (w ten sposób są one ignorowa-
ne przez serwery, które nie wiedzą, co to jest SSI). Mają one swój specyficzny format,
który wygląda następująco:

W wyrażeniu tym polecenie oznacza polecenie SSI, które zostanie wykonane (np. inclu-
de, exec lub echo  z każdym z nich zapoznasz się bliżej, kontynuując lekturę tego
rozdziału). Każde polecenie posiada jeden lub więcej argumentów, których wartości
podawane są w cudzysłowach. Tak skonstruowane wyrażenie można umieścić w do-
wolnym miejscu kodu HTML. Po przetworzeniu pliku przez serwer całość komentarza
zostanie zastąpiona przez to, co jest wynikiem wykonania danego polecenia: może być
to zawartość innego pliku, wartość zmiennej lub efekt działania skryptu.
Aby serwer wiedział, że powinien przetworzyć dany plik, należy nadać mu odpowied-
nie rozszerzenie (to samo, które zostało zdefiniowane w pliku konfiguracyjnym, czyli
.shtml). Jednakże, jeżeli skonfigurowałeś serwer tak, aby przetwarzał wszystkie pliki,
nie musisz zmieniać rozszerzenia.
Wiele z powstających obecnie, bardzo rozbudowanych serwerów WWW zawiera różnorakie
mechanizmy, umożliwiające tworzenie dość złożonych skryptów. Jednym z przykładów
takich rozwiązań jest środowisko tworzenia aplikacji LiveWire firmy Netscape, które
umożliwia wykonywanie przez serwer programów w języku JavaScript.
Konfiguracja SSI
Istnieje polecenie SSI, które nie powoduje wstawiania żadnych dodatkowych elemen-
tów, lecz służy do konfiguracji formatu innych poleceń. Polecenie #config określa
konfigurację wszystkich innych wyrażeń SSI, występujących po nim w danym pliku
HTML. #config może posiadać trzy argumenty.
errms
Jeżeli w trakcie wykonywania polecenia SSI wystąpi błąd, na stronie HTML oraz
g
w logu błędów pojawi się komunikat określony za pomocą tej opcji.
time-
Argument ten określa format wyświetlania daty oraz czasu i jest wykorzystywany
fmt
przez wiele poleceń SSI. Standardowy format wygląda następująco:
Wednesday, 14-May-98 21:04:46
size-
Ten argument określa format wyświetlania wartości polecenia SSI, które zwraca rozmiar
fmt
zadanego pliku. Jego możliwe wartości to  bytes , która powoduje podanie pełnej liczby
bajtów oraz  abbrev , która sprawia, że liczba jest przeliczana na kilobajty lub megabajty
oraz dodatkowo zaokrąglana. Standardowo przyjmowana jest wartość  abbrev .
Rozdział 29. Porady i wskazówki na temat serwera WWW 807
Oto kilka przykładów użycia polecenia #config:




Tabela 29.1 przedstawia elementy możliwe do wykorzystania przy specyfikacji formatu
daty i czasu za pomocą polecenia timefmt. Pełną ich listę można znalezć w systemie
podręczników Uniksa (man strftime).
Tabela 29.1.
Formaty daty i czasu
Format Efekt
%c
Pełna data i czas: Thu, May 21 20:45:34 1998.
%x
Skrócona data: 05/21/98.
%X
Skrócony czas (24 godziny): 20:45:44.
%b
Skrócona nazwa miesiąca: Jan, Feb, Mar.
%B
Pełna nazwa miesiąca: January, February, March.
%m
Numer miesiąca (od 1 do 12).
%a
Skrócona nazwa dnia tygodnia (Mon, Tue, Thu).
%A
Pełna nazwa dnia tygodnia (Monday, Tuesday).
%d
Numer dnia tygodnia (od 1 do 7).
%y
Skrócony rok (96, 97, 98).
%Y
Pełny rok (1996, 1997, 1998).
%H
Aktualna godzina (wg zegara 24-godzinnego).
%I
Aktualna godzina (wg zegara 12-godzinnego).
%M
Aktualna minuta (od 0 do 60).
%S
Aktualna sekunda (od 0 do 60).
%p
a.m. lub p.m.  wskazanie pory przed lub popołudniowej.
%Z
Strefa czasowa (EST, PST, GMT).
Włączanie innych plików do stron WWW
Najprostszym zastosowaniem SSI jest włączanie do plików HTML zawartości innych
plików. Służy do tego polecenie #include wraz z argumentami file lub virtual:


Argument file służy do określania względnej ścieżki dostępu do włączanego pliku
(względem pliku bieżącego). W pierwszym przykładzie plik singniture.html znajduje
się w tym samym katalogu, co edytowana strona. W ten sposób można również włączać
pliki znajdujące się w podkatalogach katalogu bieżącego (np. file=signatures/mysig.html),
808 Część 10. Konfiguracja i administracja serwera WWW
nie można natomiast odwoływać się do katalogów nadrzędnych (co oznacza, że w ścieżce
nie może znalezć się symbol  .. ).
Argument virtual służy do określenia pełnej ścieżki dostępu do włączanego pliku
w postaci, w jakiej pojawia się w URL-u, nie w systemie operacyjnym. Jeżeli więc URL
pliku będzie następujący: http://myhost.com/~myhomedir/file.html, ścieżka będąca ar-
gumentem polecenia #include powinna wyglądać tak: /~myhomedir/file.html (bez
pierwszego ukośnika).
Plik, który jest w ten sposób włączany do strony, może być zwykłym plikiem HTML,
ale może też zawierać dalsze polecenia SSI (w ten sposób można stworzyć kilka pozio-
mów zagnieżdżenia). Za pomocą #include nie można jednakże zamieszczać skryptów
CGI, do tego służy polecenie #exec, o którym będziesz mógł przeczytać w dalszej czę-
ści tego rozdziału   Wyniki działania poleceń i skryptów jako część stron WWW .
SSI pozwala na umieszczanie na stronach wartości predefiniowanych zmiennych, takich
jak nazwa czy data ostatniej modyfikacji danego pliku HTML lub bieżąca data.
Do wyświetlania wartości zmiennych służy polecenie #echo oraz argument var z na-
zwą zmiennej:

Dzisiejsza data:


Tabela 29.2 przedstawia kilka zmiennych, które mogą zostać wyświetlone za pomocą
polecenia #echo.
Tabela 29.2.
Zmienne SSI
Zmienna Wartość
DOCUMENT_NAME
Nazwa bieżącego pliku.
DOCUMENT_URL
Ścieżka do bieżącego dokumentu w postaci URL.
DATE_LOCAL
Bieżąca data w lokalnej strefie czasowej.
DATE_GMT
Bieżąca data w czasie Greenwich (GMT).
LAST_MODIFIED
Data i czas ostatniej modyfikacji bieżącego dokumentu.
Ćwiczenie 29.1: Tworzenie automatycznie wstawianego podpisu
Jeżeli stosowałeś się do moich rad z poprzednich rozdziałów, każda stworzona przez
Ciebie strona WWW zwieńczona jest podpisem lub znacznikiem adresu, który zawiera
Twoje imię i nazwisko, informacje kontaktowe itp. Jednakże, za każdym razem, kiedy
zdecydujesz się zmienić coś w tym podpisie, zmuszony jesteś robić to w każdym pliku,
co może wyprowadzić z równowagi nawet najbardziej cierpliwego człowieka.
Włączanie do każdej strony pliku z podpisem jest znakomitym zastosowaniem mecha-
nizmu SSI, pozwala bowiem na przechowywanie go poza właściwymi stronami. Wtedy
Rozdział 29. Porady i wskazówki na temat serwera WWW 809
wprowadzenie do niego jakichkolwiek poprawek staje się banalnie proste, wystarczy
zmienić tylko jeden plik i po sprawie.
W naszym ćwiczeniu spróbujemy utworzyć dokument HTML, który będzie zawierał
polecenie włączenia pliku z podpisem. Ten plik będzie z kolei zawierał aktualna datę,
wstawianą również za pomocą SSI. Końcowy rezultat, jaki powinniśmy uzyskać, wi-
doczny jest na rysunku 29.1 (data będzie oczywiście codziennie inna).
Rysunek 29.1.
Plik z podpisem
włączony do dokumentu
Rozpocznijmy od utworzenia pliku z podpisem. Znajdą się w nim standardowe infor-
macje umieszczane w tym miejscu strony (notka o prawach autorskich, dane kontakto-
we itp.), poprzedzone poziomą linią:



Ta strona: Copyright © 1995 Zuzanna Agawa zuza@kaktus.com

Ponieważ plik ten będzie częścią innej strony, nie ma potrzeby umieszczania w nim
znaczników struktury dokumentu, takich jak czy .
Żeby było ciekawiej, spróbujemy w pliku z podpisem umieścić bieżącą datę. Aby to
wykonać, wstawimy polecenie #echo wyświetlające wartość zmiennej DATE_LOCAL,
poprzedzone krótkim tekstem:

Dzisiejsza data:
Zachowajmy ten plik pod nazwą signature.shtml. Teraz należy umieścić go na serwerze
WWW i przetestować w różnych przeglądarkach. Rysunek 29.2 prezentuje efekt do-
tychczasowej pracy. W zasadzie wszystko jest w porządku, ale data prezentuje się ra-
czej nieciekawie. Byłoby lepiej, gdyby na stronie pojawiał się tylko dzień, miesiąc i rok.
Aby zmienić format daty, należy skorzystać z polecenia SSI #config oraz dyrektywy
timefmt %x (zgodnie z opisem w tabeli 27.1 będzie to format, który chcemy uzyskać).
Wyrażenie to może znalezć się w dowolnym miejscu pliku HTML, ale koniecznie przed
810 Część 10. Konfiguracja i administracja serwera WWW
Rysunek 29.2.
Plik z podpisem
poleceniem #include. W naszym przykładzie umieścimy je w pierwszej linii. Osta-
teczna postać pliku signature.shtml wygląda następująco:




Ta strona: Copyright © 1995 Zuzanna Agawa zuza@kaktus.com

Dzisiejsza data:

Przejdzmy teraz do strony, w której zawarty zostanie plik z podpisem. Wykorzystamy
do tego celu skróconą wersję dobrze nam znanej strony głównej ogrodu kaktusów Zu-
zanny. Oto jej kod HTML:


Ogród kaktusów Zuzanny: Katalog



Ogród kaktusów Zuzanny

Wybór i zamawianie roślin





Na końcu pliku (zaraz po znaczniku końca listy, przed ) wstawimy linię z po-
leceniem SSI:

Zachowaj ten plik z odpowiednim rozszerzeniem, które pozwoli na jego przetworzenie
przez serwer (niech będzie cactus.shtml). Kiedy wpiszesz w przeglądarce jego URL, za-
równo on sam, jak i plik z podpisem zostanie przetworzony przez serwer, a podpis wraz
z datą znajdą się na właściwym miejscu.
Dołączanie informacji o pliku
Polecenia #fsize i #flastmod pozwalają na zamieszczenie danych o wielkości i dacie
ostatniej modyfikacji przetwarzanego pliku, czego nie można było wykonać za pomocą
#include. Argumenty obydwu tych poleceń są identyczne, jak w przypadku #inclu-
de.
Rozdział 29. Porady i wskazówki na temat serwera WWW 811
file
Określa nazwę pliku podaną względem bieżącego katalogu.
virtual
Określa pełną ścieżkę dostępu do pliku w postaci, takiej jak w URL.
Format wartości polecenia #fsize zależny jest od uprzednio zdefiniowanej dyrektywy
#config sizefmt. Jeżeli, na przykład, wielkość pliku signature.html wynosi 223 baj-
ty, poniższa linia spowoduje wyświetlenie komunikatu: Ten plik ma wielkość 1K
bajtów.

Ten plik ma wielkość bajtów
Natomiast po przetworzeniu takiej sekwencji, na stronie pojawi się napis: Ten plik
ma wielkość 223 bajtów:


Ten plik ma wielkość bajtów
W przypadku polecenia #flastmod format zwracanych danych zależny jest od usta-
wienia #config timefmt. Poniższe przykładowe linie spowodują wyświetlenie ko-
munikatu: Ostatnia modyfikacja pliku: 5/26/01 (przy założeniu, że plik si-
gnature.html był rzeczywiście ostatnio poprawiany tego dnia)


Ostatnia modyfikacja pliku:

Wyniki działania poleceń i skryptów jako część stron WWW
Jeżeli opisane do tej pory polecenia SSI nie spełniają Twoich oczekiwań, masz możli-
wość uzupełnienia tych braków za pomocą poleceń systemu operacyjnego lub skryptów
CGI. Mogą one być umieszczane na stronach HTML i uruchamiane przez serwer
WWW, a rezultat ich działania pojawi się w kodzie przesyłanym do przeglądarki. Do
realizacji tego typu zadań służy polecenie SSI #exec.
#exec może posiadać dwa argumenty.
cmd
Nazwa polecenia, które może zostać uruchomione przez shell Bourne a (/bin/sh).
Może być to polecenie systemu operacyjnego (np. grep lub echo) lub napisany przez
Ciebie skrypt (w takim przypadku należy podać pełną ścieżkę dostępu do niego).
cgi
Nazwa i ścieżka dostępu do skryptu CGI w postaci, jaka pojawia się w adresie URL.
Skrypt uruchamiany w ten sposób nie różni się niczym od innych skryptów, a więc
w pierwszej linii musi zawsze zwrócić kontekst i może z powodzeniem wykorzystywać
wszystkie zmienne CGI, o których pisałam w rozdziale 18.   Skrypty CGI dla po-
czątkujących . Oprócz tego można tu wykorzystać wszystkie zmienne, które pojawiają
się przy okazji polecenia #echo, a więc DATE_LOCAL, DOCUMENT_NAME itd.
Oto klika przykładów uruchamiania skryptów z wykorzystaniem SSI:



812 Część 10. Konfiguracja i administracja serwera WWW
Jedyny kłopot z uruchamianiem skryptów CGI za pomocą poleceń SSI polega na tym,
że nie można w ten sposób przekazywać do skryptu danych, umieszczanych po jego na-
zwie, czyli nie można użyć poniższego wywołania:

Jak więc przekazać skryptowi jakiekolwiek argumenty? Można to zrobić, wykorzystując
URL, prowadzący do pliku .shtml, w którym znajduje się polecenie SSI wywołujące skrypt.
Że co proszę? Czy mógłabyś powtórzyć to zdanie?
Właśnie tak. Jest to dość skomplikowana procedura i nie ma raczej wielkiego sensu.
Oto przykład, który być może odrobinę przybliży tę ideę. Załóżmy, że dysponujemy
skryptem o nazwie docolor, który wymaga podania dwóch argumentów  współrzęd-
nych x i y  a wynikiem jego działania jest numer koloru (jest to przykład czysto teo-
retyczny, nie wiem po co program miałby zwracać numer koloru, ale coś takiego akurat
przyszło mi do głowy).
Oprócz tego mamy też plik color.shtml, w którym znajduje się linia wywołująca skrypt
z zakodowanymi argumentami (na przykład 45 i 64). Jest to więc następujące wywołanie:

Twój kolor, to .


Skrypt uruchomiony bezpośrednio z przeglądarki lub jako połączenie z pliku HTML
poradzi sobie z takim wywołaniem, ale próba takiego przekazania argumentów do skryptu
wywoływanego za pomocą SSI skończy się błędem.
Możesz jednak umieścić owe argumenty w URL-u prowadzącym do pliku color.shtml.
Załóżmy, że istnieje trzeci plik, z którego poprowadzimy połączenie do naszego pliku:
Sprawdz kolor
Aby skrypt został wywołany z żądanymi argumentami, należy umieścić je w powyższym
połączeniu:
Sprawdz kolor
W pliku color.shtml należy teraz poprawić wywołanie skryptu, co polega na usunięciu
nieszczęsnych argumentów i znaku zapytania po jego nazwie.

Twój kolor, to .

Gotowe.
Teraz skrypt będzie mógł pobrać argumenty w zwykły sposób (poprzez linię poleceń
lub zmienną QUERY_STRING) i zwrócić wartość wyliczoną na ich podstawie.
Ćwiczenie 29.2: Tworzymy licznik trafień
Istnieje wiele programów, które można wykorzystać do umieszczania na stronie tzw.
licznika trafień, niektóre z nich potrafią nawet wygenerować graficzne rysunki liczni-
ków. W tym przykładzie spróbujemy stworzyć prosty licznik, który będzie równie sku-
teczny w działaniu.
Rozdział 29. Porady i wskazówki na temat serwera WWW 813
Do utworzenia licznika trafień potrzebne będą następujące elementy:
plik zliczający, zawierający tylko i wyłącznie jedną liczbę (liczbę dotychczasowych
odczytów strony),
prosty program, który zwraca właściwą liczbę i aktualizuje plik zliczający,
polecenie SSI umieszczone w pliku, którego odczyty chcemy zliczać, jego zadaniem
będzie uruchamianie skryptu.
Przyjrzyjmy się bliżej naszemu plikowi zliczającemu. Liczba w nim zawarta reprezen-
tuje ilość dotychczasowych odczytów strony WWW. Możesz wpisać do niego liczbę 1
albo też przeszukać logi serwera i znalezć rzeczywistą wartość. Utwórzmy więc ten plik.
W tym przykładzie nadamy mu nazwę home.count i jako pierwszą wpiszemy liczbę 0:
echo 0 > home.count
Poza tym prawo zapisu do tego pliku musi być tak ustawione, aby mógł tego dokonywać
serwer WWW (pamiętaj, że jest on uruchamiany jako użytkownik nobody). Prawo zapisu
dla każdego użytkownika można ustawić w następujący sposób za pomocą polecenia
chmod:
chmod a+w home.count
Drugim potrzebnym elementem jest skrypt, który wyświetla liczbę i aktualizuje plik.
Można do tego wykorzystać skrypt CGI (wiele popularnych liczników z nich korzysta),
ale dużo prościej jest posłużyć się zwykłym skryptem shell-owym. Oto jego kod:
#!/bin/sh
countfile=/home/www/Web/Examples/More_HTML/chap09/home.count
nums=`cat $countfile`
nums=`expr $nums + 1`
echo $nums > /tmp/countfile.$$
cp /tmp/countfile.$$ $countfile
rm /tmp/countfile.$$
echo $nums
Jedynym miejscem, w którym musisz dokonać zmian jest linia druga. Zmienna countfi-
le powinna zawierać pełną ścieżkę do pliku, który posłuży Ci jako plik zliczający. W mo-
jej wersji znajduje się on w katalogu, zawierającym pozostałe przykłady z tego rozdziału.
Zapisz skrypt w tym samym katalogu, w którym uprzednio umieściłeś plik zliczający oraz
stronę, której odczyty będziesz liczył. Nie ma potrzeby kopiowania go do katalogu
cgi-bin. Poza tym powinieneś nadać mu atrybut wykonywalności i kilkakrotnie uru-
chomić, aby sprawdzić, czy rzeczywiście aktualizuje plik zliczeń. Mój skrypt nazywa
się homecounter.
W tej chwili pozostaje nam tylko utworzenie strony, na której znajdzie się licznik. Wy-
korzystałem do tego celu stronę prywatną niejakiego Janka (który, jak widać, nie jest
zbyt twórczym osobnikiem):
Prywatna strona Janka

Prywatna strona Janka


814 Część 10. Konfiguracja i administracja serwera WWW

Cześć, nazywam się Janek. Jesteś
osobą, która odwiedziła moją stronę.

Przedostatnia linia jest tu najistotniejsza. Uruchamia ona skrypt homecounter w bieżą-
cym katalogu (dlatego właśnie w cudzysłowie znalazł się zapis ./homecounter, a nie po
prostu homecounter). Skrypt ten na podstawie home.count wylicza aktualną liczbę tra-
fień, po czym umieszcza ją w pliku oraz na stronie HTML. Jeżeli więc zapiszemy stronę
z rozszerzeniem .shtml i otworzymy ją w przeglądarce, powinniśmy otrzymać efekt wi-
doczny na rysunku 29.3.
Rysunek 29.3.
Strona Janka
z licznikiem trafień
I o to chodziło! Jest to przykład prostego licznika, który możesz z powodzeniem stworzyć
własnymi siłami. Oczywiście, większość liczników wykorzystywanych w sieci WWW
to nieco bardziej złożone programy, które pozwalają na wykorzystywanie jednego
skryptu do zliczania trafień na wielu stronach i dodatkowo przedstawiają liczby
w postaci przyjemnych dla oka obrazków GIF, ale tak naprawdę ich działanie opiera się
na tych samych zasadach, z którymi przed chwilą się zapoznałeś.
Jeżeli jesteś zainteresowany innymi programami, realizującymi funkcje licznika trafień,
zajrzyj na listę, znajdującą się na stronach Yahoo!:
http://dir.yahoo.com/Computers_and_Internet/Internet/World_Wide_Web/Programming
/Access_Counters/.
Przekierowanie pliku
Jeżeli miałeś to szczęście i opublikowana przez Ciebie prezentacja stała się popularna
wśród użytkowników sieci WWW, na pewno przyszło Ci do głowy, że jeżeli kiedykol-
wiek będziesz zmuszony do przeniesienia stron na inny serwer lub nawet w obrębie te-
go samego systemu plików, wszystkie połączenia prowadzące do nich (a przecież nie
jesteś w stanie zliczyć, ile ich jest na całym świecie) przestaną być aktualne. Ludzie
przyzwyczajeni do tego, że ich ulubione strony znajdują się pod takim, a nie innym ad-
resem, będą bardzo zawiedzeni i na pewno będą co jakiś czas sprawdzać, czy przypad-
kiem nie pojawiły się one z powrotem.
Co więc możesz zrobić, jeżeli z przyczyn od siebie niezależnych musisz przenieść pre-
zentację gdzie indziej?
Jeżeli cały manewr wykonywany jest w obrębie jednego serwera i polega tylko na prze-
niesieniu plików do innych katalogów, najprostszym sposobem jest utworzenie odpo-
Rozdział 29. Porady i wskazówki na temat serwera WWW 815
wiednich połączeń symbolicznych (tylko w systemie Unix, za pomocą polecenia ln),
prowadzących do nowego położenia stron. W ten sposób wszystkie adresy URL będą
wciąż prawidłowe i czytelnicy nie odczują żadnej zamiany.
W innym wypadku powinieneś w poprzedniej lokalizacji umieścić stronę z komunika-
tem  Strona zmieniła adres . Przykład takiej strony przedstawia rysunek 29.4.
Rysunek 29.4.
Komunikat o zmianie
adresu strony
Innym sposobem sprawowania kontroli nad przeniesionymi plikami jest mechanizm
przekierowywania adresu przez serwer WWW. W plikach konfiguracyjnych można
zdefiniować pewne reguły, które będą instruować serwer, aby po otrzymania żądania
przesłania plików, których już nie ma, przekierowywał przeglądarkę pod inny, aktualny
adres (patrz rysunek 29.5). W ten sposób manewr przenoszenia prezentacji na inny ser-
wer nie musi zakończyć się dezaktualizacją wszystkich połączeń, prowadzących do niej
z różnych miejsc.
Rysunek 29.5.
Przekierowywanie
adresów
Do tworzenia przekierowań w plikach konfiguracyjnych serwera HTTPD służy dyrek-
tywa Redirect, wywoływana z dwoma argumentami. Pierwszy z nich to ścieżka do-
stępu do plików, która pojawia się w nieaktualnych adresach URL, drugi natomiast to
aktualny URL prezentacji.
Składnia dyrektywy Redirect jest następująca:
Redirect /stare/pliki http://nowastrona/nowemiejsce/pliki
Pierwszy argument (/stare/pliki) to ścieżka dostępu do starych plików (taka, jaka pojawia
się w adresach URL prowadzących do tych plików, ale bez przedrostka http:// i nazwy
816 Część 10. Konfiguracja i administracja serwera WWW
serwera), drugi natomiast to pełny adres URL ich nowej lokalizacji. Metoda ta może
być wykorzystywana zarówno dla pojedynczych plików, jak i całych katalogów.
Pamiętaj, że aby zmiany wprowadzone w plikach konfiguracyjnych przyniosły skutek,
należy ponownie uruchomić serwer.
Logi serwera WWW
Za każdym razem, kiedy ktoś odczytuje plik z serwera WWW lub przesyła informacje
wpisane w formularzu, w specjalnym pliku, zwanym dziennikiem serwera lub z angiel-
skiego logiem, zapisywane są wszelkie dane dotyczące tej operacji, czyli jej czas, na-
zwa pobranego pliku oraz nazwa lub adres komputera, z którego nadeszło żądanie. Jeże-
li ktoś zażąda pliku o niewłaściwej nazwie, przerwie połączenie w trakcie przesyłania
strony lub też pojawi się jakikolwiek inny problem, zostanie to z kolei odnotowane
w logu błędów.
Informacje znajdujące się w tych logach mogą okazać się bardzo pożyteczne dla projek-
tanta prezentacji WWW. Pozwalają na śledzenie liczby odczytów (gdzie odczyt to poje-
dyncze żądanie z jednego komputera) każdego z plików, stopnia zainteresowania czy-
telników poszczególnymi stronami oraz kolejności, w jakiej poruszają się oni pomiędzy
poszczególnymi elementami prezentacji. Sygnalizują też wszelkie nieudane próby połą-
czeń wewnątrz prezentacji, co pozwala na wykrycie ewentualnych błędnie zdefiniowa-
nych adresów.
Logi serwera oraz standardowy format logu
Funkcja zapisu informacji do logów jest standardowo włączona. W przypadku serwera
Apache oraz NCSA HTTPD pliki access_log oraz error_log powinny znajdować się
w katalogu log, który można znalezć na tym samym poziomie drzewa katalogów, na
którym znajduje się katalog conf (tzw. ServerRoot).
Większość serwerów zapisuje informacje do logów w standardowym formacie logu,
który stał się normą, ponieważ każdy, kto go używa, zapisuje te same informacje w ta-
kiej samej kolejności. Każde żądanie, napływające do serwera zapisywane jest w osob-
nej linii. Rysunek 29.6 przedstawia schemat standardowego formatu logu (linia została
tu podzielona na dwie części, aby mogła zmieścić się na stronie).
W przypadku logów należy zwrócić uwagę na następujące fakty:
każdy plik wysłany przez serwer to jeden odczyt. Chcąc przesłać stronę, na której
znajdują się cztery rysunki, musisz liczyć się z tym, że serwer musi w sumie
przekazać pięć plików, co spowoduje zarejestrowanie w logu pięciu odczytów
(1 to plik HTML, pozostałe 4 to pliki graficzne), oczywiście pod warunkiem,
że przeglądarka potrafi wyświetlać grafikę. Nie chcę przez to powiedzieć,
że jeżeli 10 ludzi zechce obejrzeć twoją stronę, będziesz mógł poszczycić się
50 odczytami  będzie ich dokładnie 10. Nie należy mylić ze sobą odczytów strony
i odczytów plików, które się na nią składają. Taki sposób liczenia jest bardzo mylący;
Rozdział 29. Porady i wskazówki na temat serwera WWW 817
Nazwa użytkownika (przekazywana przez protokół
Rysunek 29.6.
identyfikacyjny)
Standardowy format
logu
Nazwa użytkownika (autoryzowana przez serwer)
Nazwa komputera
Data
death.lne.com  lemay [01/May/1995: 17:44:34
+0500]
"GET /lmay/ HTTP/1.0" 200 3472
Plik Wersja Ilość wysłanych
HTTP bajtów
Metoda Kod zwrotny
(GET, POST) HTTP
w logu rejestrowane są wszystkie żądania pobrania plików z serwera, także te
błędne, odnoszące się do nieistniejących stron. Dlatego też znajdzie się tam zapis
wszystkich udanych i nieudanych prób odczytu Twoich stron;
odczyt katalogu (na przykład, http://mysite.com/) i odczyt standardowej strony
z tego katalogu (http://mysite.com/index.html) rejestrowane są w logu jako osobne
zapisy, choć tak naprawdę powodują odczyt tego samego pliku (serwer po otrzyma-
niu żądania bez nazwy pliku dokonuje przekierowania do pliku o nazwie
standardowej). Pamiętaj o tym podczas liczenia odczytów takiej strony;
nie wszystkie żądania pobrania stron zawierających obraz spowodują pobranie tych
obrazów. Jeżeli przeglądarka okaże się tekstowa lub też przeglądarka graficzna
będzie miała wyłączoną funkcję odczytu obrazów, w logu znajdzie się zapis odczytu
strony, nie będzie jednak żadnych zapisów dotyczących obrazów. Dlatego też
zwykle liczba odczytów obrazów jest mniejsza od liczby odczytów strony.
Kilka uwag na temat buforowania
Buforowanie to mechanizm przeglądarki, który umożliwia lokalne zapisywanie kopii
często odwiedzanych stron. Jeżeli za wszelką cenę pragniesz poznać dokładną liczbę
i kolejność odczytów Twoich stron, wiedz, że buforowanie może prowadzić do powsta-
wania dziwnych zapisów w logu serwera.
Spójrz na poniższy, prosty przykład. Załóżmy, że mamy do dyspozycji proste drzewko
złożone z trzech plików, takie jak pokazano na rysunku 29.7. Tak naprawdę trudno to
nazwać drzewem, jest to po prostu strona główna z połączeniami do dwóch plików.
818 Część 10. Konfiguracja i administracja serwera WWW
Rysunek 29.7.
Prosta struktura
stron WWW
Załóżmy teraz, że ktoś zechce obejrzeć wszystkie te strony. Rozpocznie on najprawdo-
podobniej swoją wędrówkę od strony głównej, pózniej przejdzie do strony A.html, wy-
cofa się do strony głównej i odczyta stronę B.html.
Jednakże efektem tych kilku operacji będzie następujący zapis w logu: (uprościłam go
troszkę, aby był bardziej przejrzysty):
reader.com - - [28/Apr/1997] "GET /index.html"
reader.com - - [28/Apr/1997] "GET /A.html"
reader.com - - [28/Apr/1997] "GET /B.html"
W oparciu o te informacje należałoby przypuszczać, że czytelnik przeszedł bezpośred-
nio z pliku A.html do B.html, co jest przecież niemożliwe. Gdzie podział się odczyt pli-
ku index.html, który powinien się znalezć pomiędzy A i B?
Otóż odczyt taki nie miał miejsca, nie został więc odnotowany w logu. Przeglądarka za-
pisała lokalnie kopię pliku index.html i w chwili, gdy użytkownik wycofał się do tej
strony, została ona odczytana z jego lokalnego dysku, a nie z serwera.
W trakcie przeglądania sieci WWW przeglądarka, która potrafi lokalnie buforować od-
wiedzane strony, może wydatnie przyspieszyć całą zabawę, nie musimy wtedy za każ-
dym razem wyczekiwać na załadowanie stron, które raz już widzieliśmy. Jest to rów-
nież bardzo pożyteczny mechanizm w przypadku stron, na których wielokrotnie
wykorzystywany jest ten sam obraz. Przeglądarka odczytuje z sieci tylko jedną jego ko-
pię, po czym wyświetla ją dowolną ilość razy, korzystając z tego, co wcześniej umieści-
ła w pamięci lub na dysku.
Negatywną cechą buforowania jest jednak fakt, że pozostawia ono luki w logach serwera.
W ten sposób rejestrowana jest mniejsza liczba odczytów niż byłoby to w przypadku,
gdyby przeglądarka nie wykonywała tego typu operacji.
Jeszcze gorsze są serwery, które mają możliwość buforowania. Są to tzw. serwery po-
średniczące (ang. proxy server), wykorzystywane przez duże przedsiębiorstwa i serwisy
komercyjne. Jeżeli taki serwer będzie otrzymywał wiele żądań odczytu Twoich stron,
pochodzących od jego wewnętrznych użytkowników, utworzy swoją własną kopię pli-
ków, aby nie pobierać ich z Twojego serwera, co przyspieszy ich ładowanie w prze-
glądarce użytkownika. W ten sposób setki osób może przeglądać Twoje strony, a Ty nie
będziesz miał o tym żadnych informacji w swoich logach.
Buforowanie jest jedną z głównych przeszkód, które uniemożliwiają dokładne określe-
nie liczby czytelników stron WWW. To, jak poradzisz sobie z lukami w logach, zależy
Rozdział 29. Porady i wskazówki na temat serwera WWW 819
tylko i wyłącznie od Ciebie, a także od tego, czy Cię to w ogóle obchodzi. Jeżeli prze-
glądasz logi, aby stwierdzić, w jakiej kolejności czytelnicy odczytują strony, będziesz
mógł samemu wypełnić luki spowodowane buforowaniem plików przez przeglądarki.
Jeżeli zaś interesują Cię przede wszystkim liczby odczytów poszczególnych stron, bę-
dziesz musiał dodać do swoich wyliczeń mały procent przeznaczony na zapisy, które
niewątpliwie pojawiłyby się, gdyby nie nieszczęsne buforowanie.
Możesz też oszukać przeglądarki i zabronić im buforowania stron. Istnieje na to pewien
sposób, ale nie gwarantuję, że będzie on skuteczny w przypadku wszystkich przegląda-
rek i systemów.
Pamiętasz jeszcze znacznik ? Mówiliśmy o nim w rozdziale 13.
  Multimedia: dodawanie dzwięków, obrazów wideo i innych elementów multime-
dialnych , przy okazji omawiania techniki samoczynnego pobierania stron przez
przeglądarki. Można go również wykorzystać do zamieszczenia specjalnego nagłówka,
mówiącego serwerowi lub przeglądarce, że nie może buforować tej strony:


Moja strona, nigdy nie buforowana



... zawartość strony ...


Strona z takim znacznikiem nie będzie buforowana przez żaden serwer pośredniczący
ani przez żadną przeglądarkę, co oznacza, że za każdym razem będzie ponownie przesy-
łana po łączach sieciowych z macierzystego serwera. Pamiętaj przy tym, że jeżeli strona
odczytywana po raz pierwszy ładuje się dość długo, będzie się również wolno ładować
za każdym kolejnym razem, co może zdenerwować czytelników. Jeżeli już zdecydujesz
się na wykorzystanie tego tricku na swoich stronach, używaj go tylko na tych mających
dla Ciebie istotne znaczenie (np. na stronach głównych) lub też w plikach, których
zwartość jest często zmieniana.
Tworzenie statystyk na podstawie logów
Jeżeli tylko masz dostęp do logów serwera WWW, możesz skorzystać z usług prostych
programów, które na ich podstawie wygenerują różnego rodzaju statystyki. I tak poniż-
sze polecenie Uniksa (dostępne także w systemach SunOS i Linux) drukuje listę zawie-
rającą liczbę odczytów poszczególnych plików, uporządkowaną malejąco (access.log to
nazwa pliku, zawierającego log):
awk '{print $7}' access_log | sort | uniq -c | sort -n -r
Co tak właściwie robi to polecenie? Jego pierwsza część (zaczynająca się od awk) od-
czytuje siódme pole z logu, które zawiera nazwę pliku. Polecenie sort sortuje wszyst-
kie nazwy, jednocześnie je grupując. Trzecie polecenie (uniq) usuwa wszystkie powta-
rzające się linie z wyjątkiem jednej, ale oprócz tego drukuje ich liczbę. Ostatnia część,
820 Część 10. Konfiguracja i administracja serwera WWW
czyli kolejny sort, powoduje odwrotne uporządkowanie otrzymanej w ten sposób listy,
tak aby najczęściej odwiedzane strony znalazły się na jej początku.
Nie jest to może najbardziej efektywna metoda przetwarzania logu, ale jest stosunkowo
prosta i każdy może z niej bez problemów skorzystać. Jednakże, aby móc przeprowa-
dzać bardziej wszechstronne analizy logów serwera WWW, należy zaopatrzyć się w je-
den z powszechnie dostępnych w sieci programów, służących do przetwarzania danych
z logów o formacie standardowym. Najpopularniejsze z nich to Analog, Getstats oraz
Wusage (http://www.boutell.com/wusage/). Listę narzędzi, służących do pracy z logami
znalezć można pod adresem:
http://dir.yahoo.com/Computers_and_Internet/Software/Internet/World_Wide_Web/
Servers/Log_Analysis_Tools/.
Wspomniane programy pozwalają na analizę danych z logów i dostarczają na tej pod-
stawie takich informacji, jak wspomniana już liczba odczytów każdej ze stron, pory
dnia, kiedy obciążenie jest największe oraz nazwy komputerów, które najczęściej ko-
rzystają z danych Twojego serwera. Niektóre z nich potrafią nawet generować bardzo
ładne wykresy różnego typu w postaci plików GIF. Większość tych programów jest
powszechnie dostępna, tak więc postaraj się je przetestować i wybrać ten, który będzie
Ci najbardziej odpowiadał.
Komercyjne serwery WWW wyposażone są z reguły w mechanizmy zapisywania zdarzeń do
logów i analizowania ich na bieżąco. Przejrzyj dokumentację serwera i przekonaj się, czy te
wbudowane programy będą dla Ciebie wystarczające.
User-agent i odnośniki
Niektóre serwery pozwalają na zapisywanie w logach rozszerzonych informacji na te-
mat odczytu stron z serwera WWW. Mogą to być takie dane, jak typ przeglądarki,
z której nadeszło żądanie odczytu lub też dane strony, z której zostało poprowadzone
połączenie. Takie informacje zwane są odpowiednio: user-agent oraz odnośnikami
(pierwsza nazwa pochodzi od nagłówka protokołu HTTP, który przekazuje serwerowi
tę właśnie informację).
Ale dlaczego ktokolwiek miałby być zainteresowany takimi informacjami? No cóż,
user-agent mówi Ci, jakie przeglądarki są wykorzystywane do odczytu Twoich stron.
Jeżeli zechcesz sprawdzić, ilu spośród Twoich czytelników używa przeglądarki Netsca-
pe 4.0 (jeżeli będzie ich dużo, może zechcesz zoptymalizować strony pod kątem tej
właśnie przeglądarki), user-agent dostarczy Ci tej informacji (Netscape ukrywa się
w tych danych pod nazwą  Mozilla ). Można stąd także odczytać nazwę platformy, na
której działa przeglądarka oraz numer jej wersji.
User-agent to określenie danych przeglądarek, które są wykorzystywane do odczytu stron
WWW z danego serwera. Dane te zawierają takie informacje, jak nazwa przeglądarki, jej
wersja oraz platforma, na której funkcjonuje.
Odnośniki mogą okazać się jeszcze bardziej interesujące. Pod tym pojęciem kryje się
strona, którą użytkownik oglądał tuż przed odczytaniem strony z Twojego serwera.
Rozdział 29. Porady i wskazówki na temat serwera WWW 821
Oznacza to, w większości przypadków, że w tym właśnie miejscu ktoś umieścił połą-
czenie do jednej z Twoich stron. Możesz się stąd dowiedzieć, kto tworzy takie połącze-
nia i sprawdzić, w jakim kontekście są one zamieszczane i czy dostatecznie dobrze re-
klamują Twoją prezentację.
Odnośniki to strony, które zostały odwiedzone przez użytkownika przeglądarki bezpośrednio
przed odczytaniem jednej z twoich stron. Z reguły zawierają one połączenia do Twojej
prezentacji.
Istnieją oczywiście programy, które generują raporty na podstawie tych informacji,
choć równie dobrze można do tego celu wykorzystać ogólny analizator logów.
Własne dokumenty obsługi błędów
Jednym ze sposobów poprawienia przydatności witryny jest tworzenie własnych doku-
mentów obsługi błędów, które pomogą użytkownikom, gdy coś pójdzie nie tak jak trze-
ba. Na przykład, spójrz na domyślny dokument generowany przez serwer Apache
w przypadku zgłoszenia błędu 404 Not Found. Dokument ten informuje użytkowni-
ka, iż nie udało się odnalezć żądanego dokumentu, jednak oprócz tego, nie dostarcza
żadnych użytecznych informacji. Większość serwerów WWW pozwala na określenie
dokumentów HTML lub programów CGI, których można użyć zamiast domyślnych
dokumentów informujących o błędach. Dzięki temu możliwe jest stworzenie dokumen-
tów obsługi błędów zgodnych z charakterem oraz szatą graficzną całej witryny i dostar-
czających użytkownikom dodatkowych informacji.
Rysunek 29.8.
Domyślny dokument
obsługi błędu 404 Not
Found serwera Apache
Aby określić własny dokument obsługi błędu (lub skrypt CGI) należy skonfigurować ser-
wer WWW w taki sposób, aby wiedział, jakiego dokumentu należy użyć. Serwery WWW
dające możliwość tworzenia własnych dokumentów obsługi błędów, zazwyczaj pozwa-
lają na zdefiniowanie takich dokumentów dla wszystkich istniejących błędów HTTP.
Na przykład, można zdefiniować dokument wyświetlany w momencie zgłoszenia błę-
dów 404 informujący, że żądany dokument mógł zostać przeniesiony w inne miejsce,
jak również zupełnie inny dokument wyświetlany w momencie zgłoszenia błędu 401 i
wyjaśniający powody ograniczenia dostępu do strony.
W przypadku serwera Apache (lub NCSA) alternatywny dokument dla błędu o poda-
nym kodzie, określany jest przy użyciu dyrektywy ErrorDocument. Oto składnia tej
dyrektywy:
ErrorDocument kod_błędu /nazwa_pliku.html
822 Część 10. Konfiguracja i administracja serwera WWW
A oto przykład praktycznego wykorzystania tej dyrektywy:
ErrorDocument 404 /error_documents/404.html
Jeśli użytkownik zażąda wyświetlenia nieistniejącej strony, w jego przeglądarce pojawi
się dokument skojarzony z błędem o numerze 404. Dokument ten może zawierać in-
formacje, które pomogą użytkownikowi w odnalezieniu poszukiwanej strony WWW.
Na przykład, spójrz na dokument obsługi błędu 404 wykorzystywany przez witrynę
Yahoo!, przedstawiony na rysunku 29.9.
Rysunek 29.9.
Strona obsługi błędu 404
na witrynie Yahoo!
Programy CGI jako dokumenty obsługi błędów
Kolejną możliwością jest obsługa błędów przy wykorzystaniu programów CGI. Metoda
ta jest szczególnie przydatna w sytuacjach, gdy chcesz wykonać jakieś czynności zależ-
ne od otrzymanego żądania. Jeśli korzystasz z serwera Apache (lub NCSA), to skonfi-
gurowanie błędu w taki sposób, aby był on obsługiwany przez skrypt CGI jest wyjąt-
kowo proste i sprowadza się do podania poprawnego adresu URL skryptu CGI w dyrek-
tywie ErrorDocument. Oto przykład takiej dyrektywy:
ErrorDocument 404 /cgi-bin/404error.cgi
Jeśli zmieniłeś położenie często odwiedzanych stron WWW i użytkownicy mają pro-
blemy z ich odnalezieniem, to możesz stworzyć skrypt CGI obsługujący błąd 404, który
będzie wyświetlał komunikat informujący o przeniesieniu strony i automatycznie prze-
kieruje użytkownika pod właściwy adres.
Podsumowanie
Jeżeli masz dostęp do serwera WWW, na którym publikowane są Twoje strony, możesz
za pomocą odpowiednich ustawień wprowadzić nowe możliwości, których nie da się
Rozdział 29. Porady i wskazówki na temat serwera WWW 823
osiągnąć, używając samego tylko HTML-a. Mechanizm SSI pozwala umieszczać pew-
ne dodatkowe informacje, które są generowane przez serwer w momencie odczytu stro-
ny, stąd też są one zawsze aktualne. Przekierowanie plików umożliwia przenoszenie
prezentacji w obrębie serwera bez konieczności modyfikacji już utworzonych połączeń.
Istnieje też możliwość samoczynnego przesyłania zaktualizowanych danych do prze-
glądarki, bez konieczności podejmowania żadnych działań ze strony użytkownika.
Z kolei zapisywanie wszystkich działań serwera do specjalnych plików, zwanych loga-
mi, pozwala na przeprowadzanie wszechstronnych analiz tego, kto i kiedy korzysta
z Twoich prezentacji.
W tym rozdziale nauczyłeś się posługiwać wszystkimi wymienionymi mechanizmami.
Ale to nie wszystko. Wspomniałam tu tylko o kilku możliwościach, pozostałych należy
poszukać w dokumentacji konkretnego serwera, który na pewno potrafi zrobić dla Cie-
bie o wiele więcej.
Warsztat
W tym podrozdziale przedstawiłam pytania i odpowiedzi oraz quiz z zakresu admini-
stracji serwerem WWW.
Pytania i odpowiedzi
P. Utworzyłem plik .shtml, zawierający dwa polecenia SSI uruchamiające skryp-
ty CGI. Obydwa skrypty wymagają przekazania argumentów. Ale, jeżeli do-
brze zrozumiałem, nie mogę przekazać argumentów zapisanych w pliku, lecz
muszę przemycić je w URL-u w pliku .shtml. Jak więc mam przekazać w ten
sposób argumenty do dwóch skryptów?
O. Jedyne, co przychodzi mi do głowy, to przekazanie wszystkich argumentów w URL-u
strony, a następnie takie przygotowanie skryptów, aby umiały rozróżnić, które ar-
gumenty przeznaczone są dla którego z nich.
P. Bez problemów uruchamiam polecenia SSI, takie jak #include czy #fsize,
ale nie mogę w żaden sposób wykonać polecenia #exec. Jedynym efektem są
ciągłe błędy. Dlaczego?
O. Administrator serwera na pewno ze względów bezpieczeństwa zablokował możli-
wość uruchamiania skryptów SSI. Serwer NCSA HTTPD posiada taką możliwość.
Radzę porozmawiać z nim (nią) na ten temat.
P. Nie mogę dostać się do moich logów, bowiem serwer znajduje się na kompute-
rze o ograniczonym dostępie. Czy mogę zdobyć informacje o moich stronach
w jakiś inny sposób?
O. Dostęp do logów powinien zapewnić administrator serwera WWW. Nie musi to być
dostęp bezpośredni, może za pośrednictwem jakiegoś oprogramowania lub też for-
mularza na stronie HTML. Może on również udostępnić Ci program analityczny,
824 Część 10. Konfiguracja i administracja serwera WWW
który będzie od razu generował odpowiednie raporty. W każdym razie należy roz-
począć od rozmowy z administratorem, bowiem wszystko znajduje się w jego rękach.
P. Prowadzę dość popularny serwis informacyjny, w którym informacje są co-
dziennie aktualizowane. Ostatnio odebrałem kilka skarg od osób korzystają-
cych z usług dużych dostawców usług internetowych, które twierdzą, że próbu-
jąc odczytywać moje strony nie otrzymują aktualnych informacji. Dlaczego tak
się dzieje?
O. Większość tego typu użytkowników korzysta mniej lub bardziej świadomie z serwe-
rów buforujących, które, jak już wcześniej wspomniałem, przechowują lokalne ko-
pie najczęściej odczytywanych stron, tak aby szybciej mogły być przesyłane do
przeglądarek. Przy założeniu, że większość z nich połączona jest z siecią za pomocą
raczej wolnych modemów i droga, którą musi przebyć strona od serwera do prze-
glądarki jest dość długa, buforowanie wydaje się być całkiem dobrym pomysłem,
bowiem wydatnie skraca czas ładowania pliku.
Serwery buforujące powinny z każdym żądaniem pobrania określonej strony spraw-
dzać, czy nie została ona zaktualizowana na serwerze macierzystym (jeżeli nie, ser-
wer buforujący prześle lokalną kopię, jeżeli tak, powinien pobrać nową wersję).
Jednakże niewiele serwerów rzetelnie wypełnia ten obowiązek, w związku z czym
bardzo często ich użytkownicy oglądają nieaktualne strony.
Jedynym rozwiązaniem jest częste wykorzystywanie przycisku  Odśwież przez
użytkowników, w ten sposób zawsze można uzyskać aktualną wersję pliku bezpo-
średnio z właściwego serwera (pomijany jest bufor serwera). Powinieneś umieścić
na stronie krótką notkę na ten temat.
Quiz
1. Czym jest mechanizm SSI?
2. Wymień przynajmniej dwie czynności, jakie można wykonać przy wykorzystaniu SSI.
3. W jaki sposób przekierowywanie żądań na serwerze może pomóc w obsłudze
plików przeniesionych w inne miejsce?
4. Jaka nazwa zostanie zapisana w pliku dziennika rejestrującego programy
zgłaszające żądania, jeśli używaną przeglądarką będzie Netscape Navigator?
Odpowiedzi
1. SSI to narzędzie, w jakie mogą być wyposażone serwery WWW. Pozwala ono na
tworzenie plików przetwarzanych przez serwer i zawierających specjalne polecenia.
W momencie otrzymania żądania serwer wykonuje te polecenia i umieszcza ich
wyniki w pliku HTML.
2. Mechanizm SSI pozwala na: 1) wstawianie zawartości plików do innych plików,
pozwala to na dołączanie, na przykład, podpisów lub informacji o prawach
autorskich; 2) umieszczanie w dokumentach HTML aktualnej daty i czasu;
3) prezentację informacji o pliku, takich jak jego wielkość lub data ostatniej
Rozdział 29. Porady i wskazówki na temat serwera WWW 825
modyfikacji; 4) wyświetlanie w dokumencie HTML wyników wykonania
skryptu CGI.
3. Dzięki przekierowaniom można stworzyć w pliku konfiguracyjnym serwera
specjalną regułę, informującą serwer o konieczności przekierowania przeglądarki
pod inny adres, w przypadku otrzymania żądania przesłania konkretnego pliku.
4. Przeglądarka Netscape Navigator jest określana w plikach dzienników serwera WWW
jako  Mozilla .
Ćwiczenia
1. Przyjrzyj się licznikom odwiedzić dostępnym na witrynie Yahoo pod adresem:
http://dir.yahoo.com/Computers_and_Internet/Internet/World_Wide_Web/Program
ming/Access_Counters/. Skopiuj kilka z nich, porównaj ich możliwości i sprawdz,
czy byłbyś w stanie użyć któregoś z nich na własnej witrynie WWW.
2. Sprawdz plik dziennika rejestrujący używane oprogramowanie i określ, jakiej
przeglądarki najczęściej używają osoby odwiedzające Twoją witrynę WWW.
Czy jest to przeglądarka Internet Explorer czy też Netscape Navigator? A może
jeszcze inna przeglądarka? Jaka jest najczęściej używana wersja przeglądarki?
Czy użytkownicy przeważnie korzystają już z wersji 4.x przeglądarek, a może
z jeszcze nowszych? Czy jesteś w stanie określić, jakiej platformy systemowej
używa większość osób odwiedzających Twoją witrynę, czy jest to Windows, Mac
czy też Unix? Odpowiedzi na te pytania powinny mieć znaczący wpływ na projekt
stron WWW, technologie, z jakich będziesz korzystać na witrynie oraz typ
prezentowanej zawartości.
826 Część 10. Konfiguracja i administracja serwera WWW


Wyszukiwarka


Podobne podstrony:
Możliwe przyspieszenie podczas wycofania wojsk USA (29 07 2009)
2009 07 19 3067 29
instrukcja serwisowa termet gco 23 07 17 29 08
2008 Metody obliczeniowe 07 D 2008 10 29 19 28 1
próbna 29 marca 2014
07 Charakteryzowanie budowy pojazdów samochodowych
9 01 07 drzewa binarne
02 07
000805 29
str 04 07 maruszewski
różne (29)

więcej podobnych podstron