R-29MP.doc

(315 KB) Pobierz
Wstęp

747

27

              Porady i wskazówki na temat serwera WWW

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 sterowa­nia lotem kosmicznym. Bez niego to, co stworzyłeś, będzie tylko zbiorem nieistotnych i ni­komu 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 sie­ci, 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:

n               mechanizm SSI serwerów NSCA oraz jego wykorzystanie do umieszczania na stronach informacji na bieżąco aktualizowanych,

n               automatyczne przekierowanie przez serwer połączeń do przeniesionych stron,

n               log — jego struktura, wykorzystanie i programy do generowania statystyk,

n               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 (skrót do 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 przetwarza umieszczone w nim polecenia, a ich wyniki umieszcza w kodzie pliku. Mechanizm SSI pozwala na wykonywanie następujących operacji:

n               umieszczanie plików wewnątrz innych (z reguły są to pliki z podpisami lub notki o prawach autorskich),

n               umieszczanie na stronie HTML bieżącej daty i czasu,

n               umieszczanie na stronie informacji o pliku, na przykład, jego wielkości lub daty ostatniej modyfikacji,

n               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ąże­nie i wol­niejsze ł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ć umiesz­czone w kodzie strony. Opiszę również, jak skonfigurować serwer i pliki, aby mecha­nizm 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 konfiguracyj­nych, a więc trzeba:

n               dodać opcję Include do dyrektywy Options,

n               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 znaleźć odpowiedni opis.

 

 

SSI może zostać zainicjowane dla całego serwera lub tylko dla niektórych katalogów. Po­dobnie, pewnym katalogom można odebrać prawo dostępu do tej usługi.

Aby udostępnić SSI dla wszystkich plików w drzewie katalogów serwera, należy dokonać 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 pli­ków, znajdu­jących się w katalogu /home/www/includes, musisz w pliku access.conf wpi­sać następują­ce linie:

<Directory /home/www/includes>

Options Includes

</Directory>

 

 

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

Przejdźmy 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 katalo­gu konfiguracyjnym. 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 posiadają 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ń przetwa­rzane:

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 zasa­dzie wszystko będzie już przygotowane.

Tworzenie plików z poleceniami SSI

Teraz, kiedy serwer jest już odpowiednio ustawiony, można rozpocząć wstawianie poleceń SSI do plików HTML, tak aby serwer przetwarzał je w momencie, w którym ktoś zażąda dos­tępu do nich.

Polecenia SSI umieszczane są w komentarzach HTML (w ten sposób są one ignorowane przez serwery, które nie wiedzą, co to jest SSI). Mają one swój specyficzny format, który wygląda następująco:

<!--#polecenie arg1="wartość1"-->

W wyrażeniu tym polecenie oznacza polecenie SSI, które zostanie wykonane (np. include, 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 dowolnym 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 zawar­tość innego pliku, war­tość zmiennej lub efekt działania skryptu.

Aby serwer wiedział, że powinien przetworzyć dany plik, należy nadać mu odpowiednie 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 zmie­niać 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 elementów, lecz służy do konfiguracji formatu innych poleceń. Polecenie #config określa konfigurację wszyst­kich innych wyrażeń SSI, występujących po nim w danym pliku HTML. #config może posia­dać trzy argumenty.

errmsg

Jeżeli w trakcie wykonywania polecenia SSI wystąpi błąd, na stronie HTML oraz w logu błędów pojawi się komunikat określony za pomocą tej opcji.

timefmt

Argument ten określa format wyświetlania daty oraz czasu i jest wykorzystywany przez wiele poleceń SSI. Standardowy format wygląda następująco:

Wednesday, 14-May-98 21:04:46

sizefmt

Ten argument określa format wyświetlania wartości polecenia SSI, które zwraca rozmiar zadanego pliku. Jego możliwe wartości to „bytes”, która powoduje podanie pełnej liczby bajtów oraz „abbrev”, która spra­wia, że liczba jest przeliczana na kilobajty lub megabajty oraz dodatkowo zaokrąglana. Standardowo przyjmowana jest wartość „abbrev”.

Oto kilka przykładów użycia polecenia #config:

<!--#config errmsg="Wystąpił błąd"-->

<!--#config timefmt="%m/%d/%y"-->

<!--#config sizefmt="bytes"-->

<!--#config sizefmt="abbrev"-->

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 znaleźć w systemie pod­ręczników UNIX-a (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 pli­ków. Służy do tego polecenie #include wraz z argumentami file lub virtual:

<!--#include file="signature.html"-->

<!--#include virtual="~/foozle/header.html"-->

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 znajdu­jące się w podkatalogach katalogu bieżącego (np. file=signature...

Zgłoś jeśli naruszono regulamin