Cyfroteka.pl

klikaj i czytaj online

Cyfro
Czytomierz
00448 008677 10464265 na godz. na dobę w sumie
Apache. Przewodnik encyklopedyczny. Wydanie III - książka
Apache. Przewodnik encyklopedyczny. Wydanie III - książka
Autor: , Liczba stron: 704
Wydawca: Helion Język publikacji: polski
ISBN: 83-7361-124-X Data wydania:
Lektor:
Kategoria: ebooki >> komputery i informatyka >> serwery internetowe >> apache
Porównaj ceny (książka, ebook, audiobook).
Udostępniany nieodpłatnie serwer WWW Apache obsługuje dziś ponad połowę wszystkich witryn w internecie i systematycznie zwiększa swój udział w rynku. Książka 'Apache. Przewodnik encyklopedyczny. Wydanie III' autorstwa dwóch kluczowych członków Zespołu Apache, opisuje sposób pobrania, instalacji i zabezpieczania tego serwera oraz omawia popularne rozszerzenia, umożliwiające konstruowanie na jego podstawie aplikacji WWW.

Serwer Apache osiągnął rangę kompletnego systemu i skutecznie konkuruje z wszystkimi pozostałymi serwerami HTTP niezależnie od tego, czy będziemy porównywać je pod kątem oferowanych możliwości, efektywności, czy też szybkość działania. Apache jest przy tym dostępny dla wielu platform systemowych, w tym dla różnego rodzaju systemów Unix i systemów z rodziny Windows.

Prezentowana Czytelnikom trzecia już edycja książki opisuje najpopularniejsze wersje 1.3 i 2.0 serwera Apache dla systemów Windows i Unix kładąc szczególny nacisk na:

Dzięki książce 'Apache. Przewodnik encyklopedyczny' administratorzy witryn WWW nie mający dotychczas do czynienia z serwerem Apache mogą zapoznawać się z jego działaniem stopniowo, analizując i wdrażając przykładowe witryny prezentujące kolejne etapy konfiguracji serwera. Doświadczeni administratorzy i programiści (niezależnie od tego, czy ich środowiskiem roboczym jest system Windows, czy Unix) docenią natomiast te fragmenty książki, które składają się na kompletną i zwięzłą dokumentację całego serwera.

'Najlepsza książka o serwerze Apache jaką widziałem. To obowiązkowy podręcznik najczęściej wykorzystywanego na świecie serwera WWW' -- Chuck Murcko, członek Zespołu Apache
'Mogę z czystym sumieniem polecić tę książkę jako źródło informacji dla każdego administratora, który staje w obliczu zadania uruchomienia i skonfigurowania witryny WWW za pośrednictwem serwera Apache oraz każdego programisty tworzącego aplikacje dla tego serwera' -- E.V Bell II, recenzent Ed's Internet Book Review

Znajdź podobne książki Ostatnio czytane w tej kategorii

Darmowy fragment publikacji:

IDZ DO IDZ DO PRZYK£ADOWY ROZDZIA£ PRZYK£ADOWY ROZDZIA£ SPIS TREĎCI SPIS TREĎCI KATALOG KSI¥¯EK KATALOG KSI¥¯EK KATALOG ONLINE KATALOG ONLINE ZAMÓW DRUKOWANY KATALOG ZAMÓW DRUKOWANY KATALOG TWÓJ KOSZYK TWÓJ KOSZYK DODAJ DO KOSZYKA DODAJ DO KOSZYKA CENNIK I INFORMACJE CENNIK I INFORMACJE ZAMÓW INFORMACJE ZAMÓW INFORMACJE O NOWOĎCIACH O NOWOĎCIACH ZAMÓW CENNIK ZAMÓW CENNIK Apache. Przewodnik encyklopedyczny. Wydanie III Autorzy: Ben Laurie, Peter Laurie T³umaczenie: Tomasz Sadowski ISBN: 83-7361-124-X Format: B5, stron: 704 Przyk³ady na ftp: 1249 kB Udostêpniany nieodp³atnie serwer WWW Apache obs³uguje dziġ ponad po³owê wszystkich witryn w internecie i systematycznie zwiêksza swój udzia³ w rynku. Ksi¹¿ka „Apache. Przewodnik encyklopedyczny. Wydanie III” autorstwa dwóch kluczowych cz³onków Zespo³u Apache, opisuje sposób pobrania, instalacji i zabezpieczania tego serwera oraz omawia popularne rozszerzenia, umo¿liwiaj¹ce konstruowanie na jego podstawie aplikacji WWW. Serwer Apache osi¹gn¹³ rangê kompletnego systemu i skutecznie konkuruje z wszystkimi pozosta³ymi serwerami HTTP niezale¿nie od tego, czy bêdziemy porównywaæ je pod k¹tem oferowanych mo¿liwoġci, efektywnoġci, czy te¿ szybkoġæ dzia³ania. Apache jest przy tym dostêpny dla wielu platform systemowych, w tym dla ró¿nego rodzaju systemów Unix i systemów z rodziny Windows. CZYTELNIA CZYTELNIA Prezentowana Czytelnikom trzecia ju¿ edycja ksi¹¿ki opisuje najpopularniejsze wersje 1.3 i 2.0 serwera Apache dla systemów Windows i Unix k³ad¹c szczególny nacisk na: FRAGMENTY KSI¥¯EK ONLINE FRAGMENTY KSI¥¯EK ONLINE Wydawnictwo Helion ul. Chopina 6 44-100 Gliwice tel. (32)230-98-63 e-mail: helion@helion.pl • pobranie i kompilacjê oprogramowania serwera, • konfiguracjê i uruchamianie serwera w systemach Windows i Unix (obejmuj¹c te¿ zagadnienia zwi¹zane ze strukturami katalogów serwera i serwerami wirtualnymi), • omówienie interfejsu programowego serwera (w wersjach 1.3 i 2.0), • szczegó³owy opis zagadnieñ zwi¹zanych z zabezpieczeniem serwera Apache i wdro¿eniem go w rozbudowanych witrynach, • prezentacje pe³nej listy dyrektyw konfiguracyjnych, • informacje na temat instalacji i testowania skryptów jêzyka Perl uruchamianych w trybie CGI oraz instalacji i korzystania z rozszerzeñ, takich jak mod_perl, PHP, JServ, Tomcat i Cocoon. Dziêki ksi¹¿ce „Apache. Przewodnik encyklopedyczny” administratorzy witryn WWW nie maj¹cy dotychczas do czynienia z serwerem Apache mog¹ zapoznawaæ siê z jego dzia³aniem stopniowo, analizuj¹c i wdra¿aj¹c przyk³adowe witryny prezentuj¹ce kolejne etapy konfiguracji serwera. Doġwiadczeni administratorzy i programiġci (niezale¿nie od tego, czy ich ġrodowiskiem roboczym jest system Windows, czy Unix) doceni¹ natomiast te fragmenty ksi¹¿ki, które sk³adaj¹ siê na kompletn¹ i zwiêz³¹ dokumentacjê ca³ego serwera. Spis treści Przedmowa ..............................................................................................................9 Rozdział 1. Wprowadzenie ................................................................................19 ..... 23 .......... 24 ......... 30 Co robi serwer WWW? ...................................................W...................................................W..... 19 Jak działa Apache? ...................................................W...................................................W....... Apache i sieci...................................................W...................................................W........... Jak działa klient?...................................................W...................................................W....... Co dzieje się po stronie serwera? ...................................................W......................................... 32 Planowanie instalacji serwera Apache ...................................................W................................. 33 Windows? ...................................................W...................................................W................. ......... 36 Która wersja Apache?...................................................W...................................................W..... ... 36 Instalowanie serwera Apache ...................................................W............................................... 37 Kompilacja serwera Apache 1.3.x w systemie Unix ...................................................W............ 42 Nowe funkcje Apache 2...................................................W...................................................W.... . 53 Instalacja Apache 2.0 w systemie Unix...................................................W................................ 56 Apache w systemach Windows ...................................................W............................................ 57 Rozdział 2. Konfiguracja serwera Apache — odsłona pierwsza ..............63 Co to właściwie jest witryna WWW?...................................................W................................... 63 Pierwsza witryna — site.toddle ...................................................W............................................ 66 Uruchomienie serwera w Uniksie...................................................W......................................... 67 Uruchomienie serwera w Windows...................................................W...................................... 81 Dyrektywy ...................................................W...................................................W................ Obiekty współużytkowane...................................................W...................................................W. 87 ......... 85 4 Spis treści Rozdział 3. Wielkie otwarcie ............................................................................91 Więcej i lepiej, czyli site.simple...................................................W........................................... 91 Zaczynamy na poważnie...................................................W...................................................W....95 Dyrektywy blokowe...................................................W...................................................W........ ... 98 Pozostałe dyrektywy...................................................W...................................................W...... .. 102 Nagłówki odpowiedzi HTTP...................................................W.............................................. 112 Restart serwera...................................................W...................................................W.......... Pliki .htaccess ...................................................W...................................................W.......... Metapliki w standardzie CERN ...................................................W.......................................... 118 Określanie terminu ważności dokumentu...................................................W........................... 119 ....... 117 ........ 118 Rozdział 4. Serwery wirtualne........................................................................123 Implementacja dwóch witryn ...................................................W............................................. 123 Implementacja serwerów wirtualnych...................................................W................................ 123 Dwie kopie serwera Apache ...................................................W............................................... 128 Serwery wirtualne konfigurowane dynamicznie ...................................................W................ 132 Rozdział 5. Uwierzytelnianie ..........................................................................137 Protokół uwierzytelniania...................................................W...................................................W137 Dyrektywy sterujące uwierzytelnianiem ...................................................W............................ 139 Hasła w systemie Unix ...................................................W...................................................W....144 Hasła w systemie Windows ...................................................W................................................ 146 Hasła w sieci WWW...................................................W...................................................W........146 Punkt widzenia klienta...................................................W...................................................W... .. 146 ....... 147 Skrypty CGI...................................................W...................................................W.............. Co by tu jeszcze… ...................................................W...................................................W........ ... 147 Dyrektywy order, allow i deny ...................................................W........................................... 147 Pliki DBM w Uniksie ...................................................W...................................................W......151 Uwierzytelnianie oparte na skrótach wiadomości...................................................W.................. 155 Dostęp anonimowy ...................................................W...................................................W......... . 159 Kilka ćwiczeń ...................................................W...................................................W............ ...... 162 Automatyczne przekazywanie danych o użytkowniku ...................................................W...... 163 Jak korzystać z plików .htaccess?...................................................W....................................... 164 Priorytety dyrektyw lokalnych ...................................................W........................................... 166 Spis treści 5 Rozdział 6. Opis i negocjacja zawartości dokumentów...........................169 Typy MIME ...................................................W...................................................W................ ..... 169 Uzgadnianie zawartości ...................................................W...................................................W...177 Uzgadnianie języka...................................................W...................................................W....... ... 179 Mapy typów ...................................................W...................................................W............... ...... 183 Przeglądarki a protokół HTTP/1.1...................................................W...................................... 185 Mechanizm filtrów...................................................W...................................................W........ ... 186 Rozdział 7. Indeksowanie katalogów ...........................................................191 Lepszy indeks — ale jak? ...................................................W...................................................W 191 Rozszerzenia indeksów tworzonych przez użytkownika ...................................................W... 202 Mapy graficzne ...................................................W...................................................W........... Dyrektywy związane z mapami graficznymi ...................................................W..................... 210 ..... 205 Rozdział 8. Przeadresowywanie.....................................................................213 .... 214 Dyrektywa Alias ...................................................W...................................................W.......... Translacja adresów URL ...................................................W...................................................W. 222 Korygowanie adresów ...................................................W...................................................W..... 230 Rozdział 9. Apache jako serwer pośredniczący..........................................233 .... 233 Bezpieczeństwo ...................................................W...................................................W........... Dyrektywy sterujące serwerem pośredniczącym ...................................................W............... 234 ...... 239 Czyżby błąd? ...................................................W...................................................W............. Wydajność serwera...................................................W...................................................W........ .. 239 ... 242 Nasza konfiguracja ...................................................W...................................................W....... Rozdział 10. Co jest grane? .............................................................................249 Rejestrowanie za pośrednictwem skryptu i bazy danych ...................................................W... 249 Dzienniki serwera Apache...................................................W.................................................. 250 Rejestrowanie konfiguracji...................................................W................................................. 260 Status serwera ...................................................W...................................................W........... ....... 263 Rozdział 11. Bezpieczeństwo informacji.......................................................267 Użytkownicy wewnętrzni i zewnętrzni ...................................................W.............................. 269 Podpisy cyfrowe i pieniądz elektroniczny...................................................W.......................... 271 Certyfikaty cyfrowe ...................................................W...................................................W...... Zapory sieciowe...................................................W...................................................W.......... ... 276 ..... 278 6 Spis treści Zagadnienia prawne...................................................W...................................................W....... .. 282 Secure Sockets Layer (SSL) ...................................................W............................................... 283 Podstawowe mechanizmy bezpieczeństwa w serwerze Apache ........................................... 283 Dyrektywy sterujące SSL ...................................................W...................................................W 301 Zestawy szyfrów...................................................W...................................................W.......... Bezpieczeństwo w praktyce...................................................W................................................ 328 Przyszłość zabezpieczeń...................................................W...................................................W..333 .... 321 Rozdział 12. Duża witryna WWW ................................................................335 Konfiguracja komputera ...................................................W...................................................W.. 335 Bezpieczeństwo serwera...................................................W...................................................W.. 335 Zarządzanie dużą witryną ...................................................W...................................................W 340 Oprogramowanie dodatkowe...................................................W.............................................. 343 Skalowalność ...................................................W...................................................W............. Równoważenie obciążenia...................................................W.................................................. 352 ...... 350 Rozdział 13. Piszemy aplikacje ......................................................................367 Witryny WWW jako aplikacje ...................................................W........................................... 367 Definiowanie logiki aplikacji ...................................................W............................................. 372 Języki XML i XSLT w aplikacjach WWW...................................................W........................ 377 Rozdział 14. Polecenia wstawiane SSI .........................................................379 Informacja o rozmiarze pliku...................................................W.............................................. 382 Informacja o czasie modyfikacji pliku ...................................................W............................... 383 Wstawianie treści plików...................................................W...................................................W.384 Wykonywanie skryptów CGI ...................................................W............................................. 384 Zmienne w poleceniach SSI ...................................................W............................................... 385 Filtry SSI w Apache 2.0...................................................W...................................................W.. . 385 Rozdział 15. PHP...............................................................................................389 Instalacja języka PHP ...................................................W...................................................W.... .. 390 ........... 391 Site.php ...................................................W...................................................W................. Rozdział 16. Skrypty CGI i język Perl..........................................................397 ........ 397 Świat CGI ...................................................W...................................................W................ Udostępnienie skryptu serwerowi Apache ...................................................W......................... 399 Ustawianie wartości zmiennych środowiskowych...................................................W............. 417 Spis treści 7 ......... 418 Ciasteczka ...................................................W...................................................W............... Dyrektywy serwera Apache związane z obsługą skryptów .................................................. 430 suEXEC w Uniksie ...................................................W...................................................W......... . 433 Procedury obsługi ...................................................W...................................................W........ .... 440 ............ 442 Akcje...................................................W...................................................W.................... Przeglądarki ...................................................W...................................................W............. ........ 444 Rozdział 17. Moduł mod_perl .........................................................................447 Moduł mod_perl — jak to działa?...................................................W...................................... 449 Dokumentacja modułu mod_perl ...................................................W....................................... 450 Instalacja modułu mod_perl — wariant prostszy...................................................W................. 450 Dostosowanie skryptów do wymagań modułu mod_perl ...................................................W.. 454 Zmienne globalne ...................................................W...................................................W......... Dyrektywa strict...................................................W...................................................W......... Odświeżanie pamięci serwera...................................................W............................................. 457 Otwieranie i zamykanie plików ...................................................W.......................................... 458 Konfiguracja serwera dla modułu mod_perl ...................................................W...................... 458 ... 454 ...... 457 Rozdział 18. Kontenery apletów: JServ i Tomcat ......................................463 ... 464 Moduł mod_jserv...................................................W...................................................W.......... Tomcat ...................................................W...................................................W................... .......... 476 .... 482 Tomcat i Apache...................................................W...................................................W.......... Rozdział 19. XML i serwlet Cocoon ..............................................................487 ...... 487 Język XML ...................................................W...................................................W................ ... 491 Język XML a Perl ...................................................W...................................................W......... .......... 492 Cocoon ...................................................W...................................................W................... .... 492 Cocoon 1.8 i JServ...................................................W...................................................W....... Cocoon 2.0.3 i Tomcat...................................................W...................................................W.... . 496 Testowanie serwletu Cocoon...................................................W.............................................. 497 Rozdział 20. Interfejs programowy serwera Apache .................................501 ..... 502 ..... 502 ............. 502 Dokumentacja ...................................................W...................................................W............. Biblioteka APR...................................................W...................................................W........... Pule ...................................................W...................................................W..................... Globalna struktura konfiguracyjna ...................................................W..................................... 504 Lokalna struktura konfiguracyjna...................................................W....................................... 507 8 Spis treści Opis żądania...................................................W...................................................W............. Dostęp do danych konfiguracyjnych i opisu żądania ...................................................W......... 514 Zaczepy, zaczepy opcjonalne i funkcje opcjonalne ...................................................W............... 514 Filtry, kubełki i zespoły ...................................................W...................................................W... 524 .......... 536 Moduły...................................................W...................................................W................... ........ 510 Rozdział 21. Piszemy własny moduł serwera Apache ..............................539 .... 540 Wprowadzenie ...................................................W...................................................W............. ........ 541 Kody stanu ...................................................W...................................................W............... .... 543 Struktura module ...................................................W...................................................W......... ... 583 Przykład od A do Z...................................................W...................................................W....... Wskazówki ogólne...................................................W...................................................W......... .. 602 Przystosowywanie kodu do wersji 2.0 ...................................................W............................... 602 Dodatek A Interfejs API 1.x...........................................................................607 ............. 607 Pule ...................................................W...................................................W..................... Globalna struktura konfiguracyjna ...................................................W..................................... 609 Lokalna struktura konfiguracyjna...................................................W....................................... 610 Opis żądania...................................................W...................................................W............. Dostęp do danych konfiguracyjnych i opisu żądania ...................................................W......... 613 Funkcje API ...................................................W...................................................W.............. ........ 610 ....... 613 Skorowidz ............................................................................................................669 Wielkie otwarcie Mając już działający w oparciu o podstawową konfigurację serwer, można pokusić się o głębszą analizę jego możliwości, z większą liczbą szczegółów. Na szczęście różnice pomiędzy wersjami serwera Apache dla systemów uniksowych i systemów Windows kończą się po przebrnięciu przez początkową konfigurację; później można się już skupić na tworzeniu działającej strony WWW. Więcej i lepiej, czyli site.simple W chwili obecnej możemy już przystąpić do konstruowania przykładowych witryn WWW, których zawartość można znaleźć również na załączonej do książki płycie CD. Aby zachować jakiś związek z realnym światem, oprzemy nasze eksperymenty na przy- kładzie fikcyjnej firmy Butterthlies, Inc., a dokładniej jej polskiej filii — Butterthlies Pol- ska, sp. z o.o. Nasza firma zajmuje się sprzedażą artystycznych pocztówek i ma zamiar zaistnieć w Internecie. W związku z powyższym musimy przydzielić jej jakieś adresy IP; jako że wszystko to dzieje się na niby i ogranicza się do eksperymentu, adresy te będą zawierały się w obrębie naszej sieci lokalnej. Dzięki temu komputery biorące udział w doświadczeniu nie będą musiały łączyć się z Internetem. Techniczna strona przydzie- lenia adresów sprowadza się do zmodyfikowania zawartości plików windowshosts (na komputerze „windowsowym” pełniącym rolę klienta) i /etc/hosts (na maszynie unikso- wej będącej serwerem), tak aby zawierały następującze wpisy: 127.0.0.1 localhost 192.168.123.2 www.butterthlies.com.pl 192.168.123.2 sales.butterthlies.com.pl 192.168.123.3 sales-IP.butterthlies.com.pl 192.168.124.1 www.gdzies-tam.com 92 Rozdział 3. Wielkie otwarcie Pierwszy wpis (localhost) jest obowiązkowym elementem pliku i nie należy go usuwać; nie powinieneś również kierować do niego żadnych żądań HTTP, gdyż wyniki mogą być dziwne. W kwestii pozostałych wpisów najlepiej skonsultuj się z administratorem swojej sieci lo- kalnej. Witryna site.simple jest lekko zmodyfikowanym wariantem site.toddle. Skrypt go powi- nien działać bez problemów. Przypomnijmy sobie procedury uruchamiania i zatrzymy- wania serwera (w różnych systemach operacyjnych): W Uniksie: test -d logs || mkdir logs httpd -d pwd -f pwd /conf/httpd.conf Zatrzymanie polega na wykonaniu polecenia kill z odpowiednim identyfikatorem. W Windows: Otwórz okno DOS i w wierszu poleceń wpisz: cd program filesapache groupapache apache -k start Apache/1.3.26 (Win32) running ... Aby zatrzymać serwer, otwórz drugie okno DOS i wpisz: apache -k stop cd logs i ewentualnie: edit error.log Procedury te będą obowiązywać dla wszystkich witryn demonstrowanych w ramach przykładów do książki, dlatego nie będziemy już przytaczać procedur sterujących uru- chamianiem serwera. Również inne różnice w opisywanych dalej konfiguracjach serwera Apache dla Uniksa i Windows powinny być minimalne. O ile nie będzie to wyraźnie zaznaczone, należy zakładać, że wszystkie opisy stosują się w tej samezj formie do obu wersji. Nie od rzeczy byłoby rejestrować w jakimś pliku poczynania naszego serwera. Podczas pracy nad pierwszym wydaniem książki mieliśmy ułatwione zadanie, gdyż używana przez nas wersja Apache automatycznie tworzyła w katalogu …/site.simple/logs plik dziennika o nazwie access_log. Z sobie tylko wiadomych przyczyn projektanci serwera Apache postanowili jednak zerwać z przeszłością i kolejne wersje wymagają już jawnego określenia położenia dziennika w pliku konfiguracji serwera. Służy do tego dyrektywa TransferLog. Więcej i lepiej, czyli site.simple 93 W swojej obecnej postaci plik httpd.conf powinien wyglądać następująco: User webuser Group webgroup ServerName localhost DocumentRoot /usr/www/APACHE3/site.simple/htdocs TransferLog logs/access_log Katalog …/site.simple/htdocs zawiera, jak poprzednio, tylko jeden plik o nazwiez 1.txt: Witamy w witrynie site.simple! W chwili obecnej możesz już uruchomić serwer poleceniem go, przesiąść się do kom- putera-klienta i za pomocą przeglądarki WWW zajrzeć pod adres http://www.butterthlies. com.pl. Powinieneś ujrzeć coś takiego: Index of / * Parent Directory * 1.txt Kliknięcie łącza do pliku 1.txt wyświetli zawarty w tym ostatnim komunikat. Wszystko ładnie, ale jedna rzecz jest tu cokolwiek zagadkowa: ten sam wynik uzysku- jemy, łącząc się z adresem http://sales.butterthlies.com.pl. Jakim cudem w ogóle uzyskujemy jakąś odpowiedź, skoro ani jeden, ani drugi adres (ani też odpowiadające im numery IP) nie został wpisany do pliku konfiguracji zawartego zw katalogu site.simple? Odpowiedź jest prosta. Konfigurując komputer pełniący rolę serwera, nakazaliśmy jego interfejsowi sieciowemu reagować na komunikaty skiezrowane pod adresy: 192.168.123.2 192.168.123.3 Serwer Apache przez domniemanie prowadzi nasłuch na wszystkich adresach zdefi- niowanych dla danego systemu, a dla wybranych również udziela odpowiedzi. Jeśli w systemie zdefiniowano serwery wirtualne (w naszym przypadku nie zdefiniowano), Apache przegląda ich listę w poszukiwaniu adresu IP, który odpowiada adresowi, pod którym odebrano nadesłane żądanie obsługi. Ustaliwszy, o który serwer wirtualny cho- dzi, Apache używa odpowiadającego mu bloku w pliku konfiguracyjnym, a jeśli blok taki nie istnieje — głównego bloku konfiguracji serwera. Do zagadnienia tego wrócimy w dalszej części rozdziału, omawiając dyrektywy BindAddress, Listen i Virtu- alHost , dające administratorowi skuteczną kontrolę nad sezrwerami wirtualnymi. Należy zauważyć, że prezentowany tu sposób pracy, polegający na częstej zmianie wy- korzystywanych konfiguracji, jest w stanie skutecznie zdezorientować przeglądarkę, co stwierdziliśmy zarówno w przypadku programu Netscape, jak i Internet Explorera. W przypadku przeglądarki Netscape przekonanie się o poprawnym działaniu serwera wymagało na ogół odświeżania przeglądanych plików przez klikanie przycisku Reload przy wciśniętym klawiszu Ctrl. W skrajnych przypadkach konieczne było wyłączenie buforowania stron w pamięci podręcznej poprzez wydanie poleceń Edit-Preferences- Advanced-Cache, wyzerowanie rozmiarów bufora dyskowego (Disk Cache) i pamięciowego (Memory Cache) i wymuszenie każdorazowego badania aktualności dokumentu (zazna- 94 Rozdział 3. Wielkie otwarcie czenie przycisku opcji Every Time). W przypadku Internet Explorera konieczne okazało się ustawienie opcji sterującej częstotliwością porównywania zawartości bufora z treścią odpowiedzi na Przy każdej wizycie na tej stronie (w oknie ustawień Tymczasowych plików internetowych) w ramach okna Opcje internetowe. Jeśli nie wykonasz tych zabiegów, mu- sisz liczyć się z możliwością wyświetlenia przez przeglądarkę mieszanki kilku ostatnio odebranych z serwera stron. Dzieje się tak oczywiście dlatego, iż w naszych doświad- czeniach bez przerwy żonglujemy różnymi wersjami witryn, katalogów i plików, czego trzeźwo myślący administrator ani użytkownik na ogół nie robi. Jeśli jakiś plik zostanie zastąpiony starszą wersją, przeglądarka dochodzi do skądinąd słusznego wniosku, że zawartość pamięci podręcznej jest bardziej aktualnaz i oczywiście ją wyświetla. Wróćmy jednak do rzeczy. Zakończ pracę programu Apache, naciskając na klawiaturze serwera klawisze Ctrl+C (lub inną kombinację służącą do przerywania działania pro- gramu) i obejrzyj zawartość pliku …/logs/access_log. Powinien on zawierać coś w rodzaju 192.168.123.1 - - [ data i godzina ] GET / HTTP/1.0 200 256 Liczba 200 jest kodem odpowiedzi zwracanym przez serwer (ang. HTTP response code) i oznacza, że operacja się udała, zaś 256 — liczbą przesłanych podczas transakcji bajtów. Plik …/error_log powinien być pusty, ponieważ cała operacja przebiegła bez błędów. Warto oczywiście zaglądać tam od czasu do czasu, chociaż skojarzenie daty i czasu wpisu z błędem, który wystąpił jakiś czas temu, bywa kłopotliwe i nieraz trzeba w tym celu mocno wysilić pamięć. Życie niestety bywa mniej przyjemne i czasami coś się psuje. Dla przykładu, klient może zażądać od serwera nieistniejącego dokumentu. Sytuację taką można obsłużyć za pomo- cą dyrektywy ErrorDocument. ErrorDocument Dyrektywa ErrorDocument pozwala na określenie czynności podejmowanej w sytu- acji, kiedy klient odwołuje się do nieistniejącego zdokumentu. ErrorDocument kod-błędu nazwa-dokumentu Zastosowanie: konfiguracja główna, serwery wirtualne, katalogai, pliki .htaccess W przypadku wystąpienia błędu, Apache może zrobić jedną z czterech rzeczy: 1. Przekazać klientowi elementarny komunikat o błędziez, o sztywnej, niezmiennej treści. 2. Przekazać klientowi komunikat zdefiniowany przez adzministratora. 3. Przeadresować żądanie klienta do lokalnego adresu URL zprzeznaczonego do obsługi błędu. 4. Przeadresować żądanie klienta do zewnętrznego adreszu URL. Domyślnie realizowana jest czynność pierwsza, natomiast trzy pozostałe opcje mogą być wymuszone za pomocą dyrektywy ErrorDocument, której argumentami są kod odpo- wiedzi serwera i komunikat o błędzie lub adres URL. Komunikat różni się od adresu Zaczynamy na poważnie 95 tym, iż jest poprzedzony znakiem cudzysłowu ( ), który nie jest oczywiście przesyłany do klienta. W niektórych przypadkach Apache dołącza do komunikatu dodatkowe in- formacje i objaśnienia. Używane w dyrektywie ErrorDocument adresy URL mogą być adresami lokalnymi (rozpoczynają się wówczas znakiem ukośnika — „/”) lub pełnymi adresami zawierają- cymi nazwę węzła. A oto kilka przykładów: ErrorDocument 500 http://gdzies.tam.com/cgi-bin/test ErrorDocument 404 /cgi-bin/zlyadres.pl ErrorDocument 401 /rejestracja.html ErrorDocument 403 Nieczynne z powodu urlopu Zwróćmy uwagę, że użycie w dyrektywie ErrorDocument pełnego adresu URL (roz- poczynającego się od prefiksu metody, np. „http”) powoduje przesłanie do klienta pole- cenia przeadresowania nawet wtedy, gdy dokument identyfikowany adresem znajduje się na tym samym serwerze. Fakt ten ma kilka konsekwencji, z których najważniejszą jest niemożność odwołania się do nielokalnego dokumentu w przypadku obsługi błędu numer 401 (co wynika z zasady działania podstawowego schematu uwierzytelniania (Basic) w protokole HTTP). Zaczynamy na poważnie Plik konfiguracji serwera httpd.conf znajdujący się w katalogu …/site.first ma postać: User webuser Group webgroup ServerName localhost DocumentRoot /usr/www/site.first/htdocs TransferLog logs/access_log W pierwszej edycji książki omawialiśmy w tym podrozdziale również dyrektywy Ac- cessConfig i ResourceConfig. Użycie w nich jako argumentu urządzenia pustego (/dev/null w Uniksie, NUL w Windows) pozwalało na zablokowanie odwołań do plików srm.conf i access.conf, co było niezbędne w przypadku nieobecności tych ostatnich. Po- nieważ nowsze wersje Apache po prostu nie przejmują się brakiem wspomnianych pli- ków, użycie obu dyrektyw jest obecnie zbędne. W przypadku ich użycia wskazywane przez nie pliki zostaną włączone do pliku konfiguracyjnego serwera. Od wersji 1.3.14 dyrektywy te mogą wskazywać nie pliki, a katalogi — wtedy do pliku konfiguracyjnego serwera włączona zostanie zawartość wszystkich plików przechowywanych w tych ka- talogach. W Apache 2.0 dyrektywy AccessConfig i ResourceConfig zostały zniesione, więc ich umieszczenie w pliku spowoduje zgłoszenie przez serwer komunikatu o błędzie kon- figuracji. Zamiast nich można zastosować dyrektywy Include: Include conf/srm. conf i Include conf/access.conf (w podanej kolejności) na końcu głównego pliku konfiguracyjnego. 96 Rozdział 3. Wielkie otwarcie Ponadto Apache 2.0, dość konsekwentnie, wymaga zdefiniowania dyrektywy Listen. Jej brak spowoduje przerwanie działania serwera i wyświetlenie komunikatu o błędzie następującej treści: ... no listening sockets available, shutting down. W systemach z rodziny Windows Apache ignoruje dyrektywy User i Group, w związku z czym mogą one zostać usunięte z pliku konfiguracyzjnego. Zadaniem serwera Apache jest dostarczanie klientom dokumentów w języku HTML, a jak do tej pory nie miał on specjalnie czego dostarczać. Spróbujmy zatem utworzyć prostą stronę WWW zawierającą ofertę firmy Butterthlies Polska i informacje o sposobie zakupu towaru. Nieco teorii na temat projektowania WWW można znaleźć np. w systemie pomocy przeglądarki Netscape pod hasłem „Creating Net Sites”. Po odbyciu elementarnego kursu języka HTML możemy już wyprodukować surową wersję wirztualnej broszurki: !DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.0//EN html head title Katalog firmy Butterthlies /title /head h1 Witamy w firmie Butterthlies Polska /h1 h2 Nasza oferta na lato /h2 p Wszystkie kartki można zamawiać w paczkach po 20 sztuk, po a8 złotych za paczkę. Przy zamówieniach powyżej 100 sztuk udzielamy 10 rabatu. Ceny nie zawierają podatku VAT. /p hr p Wzór 2315 p align=center img src= bench.jpg alt= Ławeczka p align=center Ławeczka dla zakochanych hr p Wzór 2316 p align=center img src= hen.jpg ALT= Kurnik a la chińska pagoda p align=center Chiński Kurnik HR p Wzór 2317 p align=center img src= tree.jpg alt= Bardzo ładne drzewo p align=center Świątynia Dumania hr p Wzór 2318 p align=center img src= bath.jpg alt= Cokolwiek niecodzienne zdjęcie wanny p align=center Wanna Surrealistyczna Zaczynamy na poważnie 97 hr p align=right Projekt pocztówek: Harriet@alart.demon.co.uk hr br Butterthlies Polska sp. z o.o. * 99-000 Helionowo /br /body /html Nasza strona pojawi się po raz pierwszy w katalogu …/site.first/htdocs, ale w dalszej czę- ści książki będziemy ją również wykorzystywać w wielu innych witrynach. W takiej sytuacji można ulokować odpowiednie pliki w jednym, „centralnym” katalogu i utwo- rzyć do nich dowiązania z innych katalogów, wykorzystując uniksowe polecenie ln. Co więcej, każda zmiana „oryginalnego” pliku będzie natychmiast widoczna we wszystkich dowiązaniach. Mamy więc katalog /usr/www/APACHE3/main_docs i plik dokumentu ca- talog_summer.html. Plik ten odwołuje się do kilku oryginalnych zdjęć, przechowywanych w postaci czterech plików .jpg. Wszystkie te pliki znajdują się w katalogu …/main_docs i zostaną dowiązane do odpowiednich plików w katalogzu htdocs: ln /usr/www/APACHE3/main_docs/catalog_summer.html ln /usr/www/APACHE3/main_docs/bench.jpg W ten sam sposób należy wykonać dowiązania do pozostałych plików. Powyższe pole- cenie powinno być wykonywane z wnętrza katalogu …/site.first/htdocs. Po wykonaniu w tym katalogu polecenia ls okaże się, że jest on pełen potrzebnych nam plików. W systemie Windows nie istnieje pojęcie dowiązania, toteż będziemy musieli za każdym razem kopiować pliki. Domyślny indeks witryny Uruchom ponownie serwer poleceniem go. Przesiądź się do komputera-klienta i jeszcze raz otwórz stronę http://www.butterthlies.com.pl. Powinieneś zobaczyć coś takiego: Index of / * Parent Directory * bath.jpg * bench.jpg * catalog_summer.html * hen.jpg * tree.jpg Plik index.html Powyższy wydruk zawiera domyślny indeks zawartości katalogu, będący swego ro- dzaju protezą, generowaną automatycznie przez program Apache w przypadku braku „prawdziwego” indeksu. Spróbujmy zatem stworzyć porządny indeks i zapisać go w pli- ku …/htdocs/index.html: 98 Rozdział 3. Wielkie otwarcie !DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.0//EN html head title Indeks ofert firmy Butterthlies /title /head body p Witamy w firmie Butterthlies Polska /p ul li A href= catalog_sumer.html Oferta - lato /A li A href= catalog_summer.html Katalog - jesień /A /ul hr br Butterthlies Polska sp. z o.o. * 99-000 Helionowo /br /body /html Aby wszystko wyglądało poważniej, dorzuciliśmy przy okazji jeszcze jeden plik, catalog_ autumn.html (idąc po linii najmniejszego oporu, skopiowaliśmy plik catalog_summer.html, zmieniając w nim tylko porę roku), tak więc w indekzsie ostatecznie znalazły się dwa łącza. Jeśli klient (przeglądarka) w nadesłanym przez siebie żądaniu przekaże adres URL kata- logu zawierającego plik index.html, Apache automatycznie prześle ten plik klientowi, traktując go jako domyślny indeks katalogu (zachowanie to można zmodyfikować za po- mocą dyrektywy DirectoryIndex). Kolejne odwołanie do adresu http://www.butterthlies. com.pl powinno więc dać następujący efekt: Witamy w firmie Butterthlies Polska * Katalog - lato * Katalog - jesień ---------------------------------------------------a Butterthlies Polska sp. z o.o. * 99-000 Helionowo Oczywiście jako doświadczeni marketingowcy nie możemy zapomnieć o rejestracji na- szej witryny w wyszukiwarkach internetowych. Dzięki temu już wkrótce nasze strony zaczną odwiedzać pierwsi klienci (zostawiając po sobie ślady w pliku …/logs/access_log), a kiedy zapoznają się z naszą fantastyczną ofertą… rozdzwonią się telefony z zamówie- niami, a my wkrótce zostaniemy milionerami. Dyrektywy blokowe Apache udostępnia cały szereg tak zwanych dyrektyw blokowych (ang. block directives). Dyrektywy te pozwalają ograniczyć zasięg działania innych, zawartych w nich dyrek- tyw do określonych serwerów wirtualnych, katalogów czy też plików. Dyrektywy blo- kowe są niezwykle istotne w praktyce, bowiem to właśnie one — a w szczególności dy- rektywa VirtualHost — umożliwiają administratorowi uruchomienie większej liczby niezależnych serwerów WWW poprzez pojedyncze wywołanie programu Apa- che. Stwierdzenie to nabierze większego sensu, gdy przejdziemy do omawiania obsługi kilku witryn (zobacz podrozdział „Implementacja dwóch witryn” w rozdziale 4.). Obecnie zajmiemy się składnią dyrektyw blokowych. Dyrektywy blokowe VirtualHost VirtualHost węzeł[:port] ... /VirtualHost Zastosowanie: konfiguracja główna 99 Działanie dyrektywy VirtualHost w pliku konfiguracji serwera jest podobne do funkcji pełnionej przez znaczniki języka HTML. Nagłówek VirtualHost otwiera blok tekstu zawierający inne dyrektywy, odnoszące się do konkretnego serwera wirtual- nego; koniec takiego bloku oznaczany jest ciągiem /VirtualHost . Oto przykład: ... VirtualHost www.butterthlies.com.pl ServerAdmin sales@butterthlies.com.pl DocumentRoot /usr/www/APACHE3/site.virtual/htdocs/customers ServerName www.butterthlies.com.pl ErrorLog /usr/www/APACHE3/site.virtual/name-based/logs/error_loag TransferLog /usr/www/APACHE3/site.virtual/name-based/logs/accessa_log /VirtualHost ... Dyrektywa VirtualHost pozwala ponadto określić nazwę domenową lub adres IP (i ewentualnie numer portu) przypisany danemu serwerowi wirtualnemu. Jeśli port nie zostanie podany, domyślnie wykorzystywany jest port numer 80 (standardowy port używany w protokole HTTP) lub port określony za pomocą dyrektywy Port. Użycie w miejscu argumentu węzeł ciągu _default_ powoduje wreszcie, że zawartość danego bloku będzie odnosiła się do wszystkich serwerów nie uwzględnionych w innych blo- kach VirtualHost . W rzeczywistym systemie węzeł będzie oczywiście nazwą dome- nową lub adresem IP naszego serwera. Oprócz dyrektywy VirtualHost Apache udostępnia jeszcze trzy inne dyrektywy pozwalające na ograniczenie zasięgu działania innyczh dyrektyw: • Directory • Files • Location Powyższe dyrektywy wymieniliśmy w kolejności rosnącego priorytetu. Oznacza to, że działanie dyrektywy Directory może być zmodyfikowane przez nadrzędną wobec niej Files , a ta z kolei musi „ustąpić pierwszeństwa” dyrektywie Location . Dy- rektywy przetwarzane są grupami w następującej kolezjności: 1. Directory (nie zawierające wyrażeń regularnych), równolegle z zzawartością pli- ków .htaccess1, przy czym te ostatnie mają priorytet. 2. DirectoryMatch i Directory zawierające wyrażenia regularne. 3. Files i FilesMatch (równolegle). 4. Location i LocationMatch (równolegle). 1 I oczywiście dla każdego katalogu zawartego w ścieżece dostępu. 100 Rozdział 3. Wielkie otwarcie W pierwszym przypadku katalogi przetwarzane są w kolejności od najmniejszego do największego2. Kolejność przetwarzania dla pozostałych grup określona jest porządkiem zapisu w pliku konfiguracji serwera. Dyrektywy zawarte wewnątrz bloków Virtu- alHost realizowane są po wykonaniu odpowiadających im bloków położonych na zewnątrz. Directory i DirectoryMatch Directory katalog ... /Directory Zastosowanie: konfiguracja główna, serwery wirtualne Dyrektywa Directory pozwala na ograniczenie zasięgu działania bloku dyrektyw do wybranego katalogu lub grupy katalogów. Należy tu podkreślić, że specyfikacja ka- talogu traktowana jest jako bezwzględna, tj. dyrektywa Directory / obejmie swoim działaniem nie katalog DocumentRoot (i jego podkatalogi), ale cały system plików, po- czynając od katalogu głównego. Nazwa katalogu może zawierać symbole wieloznaczne (?) (dowolny znak) i (*) (dowolny ciąg dowolnych znaków), a także nawiasy kwadra- towe ([ ]), służące do definiowania zbiorów znaków. Dla przykładu, specyfikacja [a-d] oznacza „dowolny ze znaków a, b, c lub d”. Umieszczenie znaku tyldy (~) na początku nazwy katalogu pozwala na użycie w niej kompletnychz wyrażeń regularnych3. Dyrektywa DirectoryMatch działa tak samo jak Directory ~ , tj. akceptuje definicję nazwy katalogu w postaci wyrażenia regulazrnego, tak więc zapisy: Directory ~ /[a-d].* i DirectoryMatch /[a-d].* są identyczne i odnoszą się do wszystkich katalogów, których nazwy rozpoczynają się od liter „a”, „b”, „c” lub „d”. Files i FilesMatch Files plik ... /Files Zastosowanie: konfiguracja główna, serwery wirtualne, pliki .ahtaccess Dyrektywa Files pozwala ograniczyć działanie bloku dyrektyw do plików o nazwie zadanej parametrem plik. Nazwa ta określana jest względem katalogu DocumentRoot i może zawierać symbole wieloznaczne oraz wyrażenia regularne poprzedzone znakiem tyldy (~). Dyrektywa FilesMatch używana jest wraz z wyrażeniami regularnymi 2 Określenia te odnoszą się do liczby elementów kataleogu, a nie ich łącznej objętości. 3 Szczegółowe omówienie wyrażeń regularnych znajdziesz we książce Jeffreya E. F. Friedla Mastering Regular Expressions (O’Reilly Associates; jak na razie książka ta nie doeczekała się niestety polskiego tłumaczenia). Dyrektywy blokowe 101 nie poprzedzonymi znakiem tyldy. Aby zatem ograniczyć działanie bloku do trzech naj- popularniejszych w Internecie typów plików graficznychz, musimy użyć dyrektywy: FilesMatch .gif|jpe?g|png$ zaś aby zapewnić specjalne traktowanie katalogom produktów firmy Butterthlies Polska, możemy użyć konstrukcji: FilesMatch catalog.* W odróżnieniu od Directory i Location , dyrektywa Files może być umieszczana w plikach .htaccess. Location i LocationMatch Location adres-URL ... /Location Zastosowanie: konfiguracja główna, serwery wirtualne Użycie dyrektywy Location pozwala na ograniczenie zasięgu działania bloku dyrek- tyw do zadanych adresów URL. Podobnie jak poprzednio, adresy mogą zawierać sym- bole wieloznaczne oraz wyrażenia regularne poprzedzone znakiem tyldy. Zgodnie z re- gułami interpretacji wyrażeń regularnych wprowadzonymi w programie Apache 1.3, symbole (*) i (?) nie spowodują dopasowania znaku ukośnika (/). Argumentami dyrek- tywy LocationMatch są wyrażenia regularne nie poprzedzone znakiem tylzdy (~). Większość dyrektyw używanych w bloku Directory może być również stosowana w bloku Location . Należy jednak pamiętać, że użycie w nim dyrektywy AllowOver- ride, chociaż poprawne z formalnego punktu widzenia, jest pozbawione sensu. IfDefine IfDefine nazwa ... /IfDefine Dyrektywa IfDefine pozwala na warunkowe uaktywnienie bloku dyrektyw w przy- 4. Pozwala to na zamknięcie padku uruchomienia programu Apache z opcją –D nazwa kilku wariantów konfiguracji w pojedynczym pliku httpd.conf. Możliwość ta przydaje się głównie podczas testowania i tworzenia wersji dystrybucyjnych, jest natomiast rzadziej stosowana w przypadku „regularnych” witryn o ustalonezj strukturze. IfModule IfModule [!]nazwa-pliku-modułu ... /IfModule 4 Opcja ta definiuje symbol o zadanej nazwie; zob. też „Oepcje wywołania programu Apache” w rozdziale 2. — przyp. tłum. 102 Rozdział 3. Wielkie otwarcie Dyrektywa IfModule pozwala na warunkowe uaktywnienie bloku dyrektyw w za- leżności od tego, czy moduł o danej nazwie został dołączony do programu Apache (w trakcie kompilacji bądź też dynamicznie, poprzez załadowanie w trakcie pracy pliku DLL). Poprzedzenie nazwy modułu znakiem wykrzyknika (!) powoduje uaktywnienie bloku w przypadku, gdy moduł nie został dołączony. Bloki ograniczone dyrektywami IfModule mogą być zagnieżdżane. Parametr nazwa-pliku-modułu powinien od- powiadać nazwie pliku źródłowego modułu, na przykładz mod_log_conf.c. Pozostałe dyrektywy Pozostało nam do omówienia jeszcze kilka dyrektyw o zcharakterze administracyjnym. ServerName ServerName nazwa-domenowa Zastosowanie: konfiguracja główna, serwery wirtualne Dyrektywa ServerName definiuje nazwę domenową serwera używaną w adresach URL wykorzystywanych do przeadresowywania żądań. Brak dyrektywy spowoduje wyko- nywanie przez serwer próby samodzielnego określenia nazwy domenowej serwera na podstawie własnego adresu IP; jednakże metoda ta może nie zadziałać lub spowodować wybranie nazwy innej niż preferowana nazwa domenowa węzła. Przykładowo, jeżeli kanoniczna nazwa domenowa serwera to simple.example.com, ale docelowo klienci mają się odwoływać do węzła www.example.com, dyrektywa ServerName powinna mieć na- stępującą postać: ServerName www.przyklad.com UseCanonicalName UseCanonicalName on|off Wartość domyślna: on Zastosowanie: konfiguracja główna, serwery wirtualne, katalogai, pliki .htaccess Dyrektywa ta steruje sposobem tworzenia przez Apache adresów wskazujących „na sie- bie”, co ma miejsce np. w przypadku przeadresowania odwołania adresu http:// www.firma.com/jakis/katalog do poprawnej formy http://www.firma.com/jakis/katalog/ (różni- ca tkwi w końcowym znaku ukośnika). W przypadku włączenia dyrektywy UseCano- nicalName (stan domyślny), do przeadresowania zostanie użyta nazwa serwera i nu- mer portu zadane dyrektywami ServerName i Port (ale nie w przypadku serwera Apache 2.0). Jej wyłączenie spowoduje użycie nazwy i numeru portu określonej w ory- ginalnym żądaniu. Dyrektywa UseCanonicalName przydaje się między innymi w sytuacji, w której kom- putery użytkowników należą do tej samej domeny co serwer WWW (ma to miejsce np. w sieciach typu intranet). W takim przypadku użytkownik może odwoływać się do ser- wera za pomocą nazwy skróconej (np. „www”), oszczędzając sobie w ten sposób wpi- Pozostałe dyrektywy 103 sywania pełnej nazwy domenowej (np. www.firma.com). Jeśli dyrektywa UseCanoni- calName jest aktywna, podanie przez użytkownika adresu bez końcowego ukośnika (np. http://www/katalog) spowoduje przeadresowanie żądania do adresu URL http://www. firma.com/katalog/, podczas gdy w przypadku wyłączenia dyrektywy żądanie trafiłoby pod adres http://www/katalog/. Ma to oczywiste zastosowanie w sytuacji korzystania do- stępu autoryzowanego — ponowne użycie nazwy serwera zwalnia użytkownika od ko- nieczności powtórnego przechodzenia przez procedurę autoryzacji, co stałoby się w momencie zorientowania się przez przeglądarkę, że nazwa serwera uległa zmianie. Inne, bardziej złożone zastosowania wiążą się z translacją nazw i adresów związaną z pewnymi aspektami użycia zapór sieciowych. ServerAdmin ServerAdmin adres-e-mail Zastosowanie: konfiguracja główna, serwery wirtualne Dyrektywa ServerAdmin pozwala zdefiniować adres poczty elektronicznej umieszczany automatycznie przez Apache na stronach generowanych w przypadku wystąpienia błędu. Warto użyć w tym celu dedykowanego adresu, np. problemy-WWW@butterthlies.com.pl. ServerSignature ServerSignature off|on|email Wartość domyślna: off Zastosowanie: katalogi, pliki .htaccess Dyrektywa ServerSignature umożliwia zidentyfikowanie serwera, który faktycznie obsłużył dane żądanie (co ma znaczenie np. w przypadku użycia serwerów pośredni- czących). Jej włączenie (ServerSignature on) powoduje automatyczne dołączanie do generowanych przez serwer dokumentów stopki (sygnatury), zawierającej numer wersji programu serwera i nazwę serwera wirtualnego zdefiniowaną w dyrektywie Server- Name. Użycie formy ServerSignature email dodaje do stopki łącze mailto: za- wierające adres określony dyrektywą ServerAdmin. ServerTokens ServerTokens productonly|min[imal]|OS|full Wartość domyślna: full Zastosowanie: konfiguracja główna Dyrektywa ServerTokens ustala zakres informacji, jakimi „przedstawia się” serwer Apache. Administrator troszczący się o bezpieczeństwo serwera może ograniczyć ilość informacji o serwerze, jaka może trafić do potencjazlnych włamywaczy. productonly (od wersji 1.3.14) Serwer zwraca wyłącznie nazwę Apache. min[imal] Serwer zwraca tylko swoją nazwę i numer wersji, np. zApache v1.3. 104 OS Rozdział 3. Wielkie otwarcie Serwer zwraca swoją nazwę i numer wersji oraz nazwę macierzystego systemu ope- racyjnego, np. Apache v1.3 (Unix). full Serwer zwraca dane opisane powyżej oraz informacje o wchodzących w skład jego kodu modułach, np. Apache 1.3 (Unix) PHP/3.0 MojModul/1.2. ServerAlias ServerAlias nazwa1 nazwa2 nazwa3 ... Zastosowanie: serwery wirtualne Dyrektywa ServerAlias umożliwia zdefiniowanie listy aliasów, czyli synonimów nazw identyfikujących dany serwer wirtualny. Protokół HTTP/1.1 umożliwia odwołanie się do serwera poprzez nazwę za pomocą pola Host: nagłówka HTTP. Podana w na- główku nazwa powinna odpowiadać którejś z nazw zdefiniowanych w dyrektywach ServerName, ServerAlias lub VirtualHost. ServerPath ServerPath ścieżka Zastosowanie: serwery wirtualne Protokół HTTP/1.1 umożliwia związanie z tym samym adresem IP kilku nazw dome- nowych serwerów. W takiej sytuacji klient identyfikuje odpowiedni serwer poprzez przesłanie w nagłówku żądania pola Host: nazwa-serwera. Chociaż migracja do proto- kołu HTTP została już prawie zakończona, niektóre przeglądarki będą zapewne jeszcze przez jakiś czas używały protokołu HTTP/1.0, nie przesyłając pól Host5. Z tego też względu stworzono dyrektywę ServerPath pozwalającą na dostęp do witryny po- przez podanie ścieżki. Należy tu podkreślić, że użycie dyrektywy ServerPath jest nieco kłopotliwe, wymaga bowiem ogromnej dyscypliny w kwestii spójności zapisu łączy używanych wewnątrz witryny. Wszystkie one muszą być zapisywane w postaci względnej, tylko wtedy bo- wiem będą prawidłowo współpracowały z różnymi adresami URL. Jeśli jednak musisz zapewnić w witrynie obsługę przeglądarek nie korzystających z protokołu HTTP/1.1 i nie przesyłających pól Host, w zasadzie nie masz wyboru. Załóżmy, dla przykładu, że utworzyliśmy dwie witryny o nazwach www.firma.com i sklep. firma.com, przypisując im obu ten sam adres IP, np. 192.168.123.2. Nasz plik httpd. conf wygląda tak: VirtualHost 192.168.123.2 ServerName www.firma.com DocumentRoot /usr/www/firma 5 Z drugiej strony warto zauważyć, że ów okres przejścioewy w znacznym stopniu zakończył się jeszcze przed wprowadzeniem protokołu HTTP/1.1 — wiele przeeglądarek wysyłało pola Host: również w przypadku korzystania z wersji 1.0. Tym niemeniej w sporadycznych przypadkach omawiana dyrektywa może okazać się przydatna. Pozostałe dyrektywy 105 ServerPath /firma /VirtualHost VirtualHost 192.168.123.2 ServerName sklep.firma.com DocumentRoot /usr/www/sklep ServerPath /sklep /VirtualHost Przeglądarka korzystająca z protokołu HTTP/1.1 może w takiej sytuacji rozróżnić obie witryny, przesyłając po prostu adresy URL http://www.firma.com/ i http://sklep.firma.com/. Ponieważ protokół HTTP/1.0 pozwala na rozróżnianie witryn wyłącznie na podstawie adresów IP, oba powyższe adresy URL będą w tym przypadku tożsame. Przeglądarki korzystające z protokołu HTTP/1.0 mogą jednak odwoływać się do obu witryn indywi- dualnie, podając adresy http://www.firma.com/firma i http://www.firma.com/sklep. Warto za- uważyć, że ten sam efekt miałyby odwołania do adresów URL http://www.sklep.com/firma i http://www.sklep.com/sklep, bowiem obu występującym w nich nazwom domenowym odpowiada ten sam adres IP (a zatem z punktu widzenia protokołu HTTP/1.0 są one identyczne). ScoreBoardFile ScoreBoardFile nazwa-pliku Wartość domyślna: logs/apache_status Zastosowanie: konfiguracja główna Dyrektywa ScoreBoardFile jest w niektórych systemach wymagana do poprawnego utworzenia pliku tymczasowego, wykorzystywanego przez serwer do zarządzania proce- sami potomnymi (tzw. plik tablicy procesów potomnych, scoreboard file). Najprostszą metodą przekonania się, czy w danym systemie plik taki jest wymagany, jest urucho- mienie programu Apache i sprawdzenie, czy w wyniku tego działania został utworzony plik o nazwie zadanej w dyrektywie. Jeśli okaże się, że plik taki jest niezbędny, należy podjąć kroki w celu zapewnienia, by nie był on równocześnie używany przez więcej niż jeden proces główny serwera Apache. W przypadku konieczności użycia pliku tablicy procesów potomnych można spróbować umieścić go na dysku pamięciowym (wirtualnym, RAM disk). Powinno to poprawić osiągi serwera, jednak wiąże się z ryzykiem utraty zdanych. Używając serwera Apache w systemach Linux 1.x i Unix System V Release 4, można próbować zablokować użycie pliku tablicy procesów potomnych, dołączając opcje - DHAVE_SHMGET –DUSE_SHMGET_SCOREBOARD do zmiennej EXTRA_CFLAGS w pliku konfiguracyjnym kompilacji serwera Configuration. Rozwiązanie to powinno działać przynajmniej w części konfiguracji Linuksa 1.x (w wersjach Apache wcześniejszych od 1.3b4 wystarczało użycie opcji HAVE_SHMGET). CoreDumpDirectory CoreDumpDirectory katalog Wartość domyślna: ServerRoot Zastosowanie: konfiguracja główna 106 Rozdział 3. Wielkie otwarcie Dyrektywa ta określa położenie katalogu, w którym w razie awarii Apache zapisze plik zrzutu pamięci procesu (ang. core dump file). Plik ten można następnie poddać ana- lizie za pomocą debugera. Domyślnie plik ten powinien być zapisywany w katalogu określonym dyrektywą ServerRoot, jednak przypisane mu prawa dostępu nie umoż- liwiają zapisywania tam danych przez proces serwera uruchomiony przez zwykłego użytkownika. Użycie dyrektywy CoreDumpDirectory ma sens tylko w Uniksie, gdyż Windows nie obsługuje funkcji zrzutu pamięci w przyzpadku załamania systemu. SendBufferSize SendBufferSize liczba Wartość domyślna: ustalana przez system operacyjny Zastosowanie: konfiguracja główna Dyrektywa ta pozwala powiększyć wielkość bufora transmisji używanego przez proce- dury obsługi protokołu TCP/IP ponad domyślną wartość określaną przez system opera- cyjny. W specyficznych przypadkach pozwala to na poprawę wydajności, jednak nie ra- dzimy Ci zmieniać domyślnego ustawienia parametrów TCP/IP, o ile nie znasz się na rzeczy naprawdę dobrze. LockFile LockFile plik Wartość domyślna: logs/accept.lock Zastosowanie: konfiguracja główna Jeśli Apache zostanie skompilowany z opcją USE_FCNTL_SERIALIZED_ACCEPT lub USE_FLOCK_SERIALIZED_ACCEPT, przed uruchomieniem musi on zapisać na dysku lokalnym plik blokady (ang. lock file). Operacja ta może okazać się niemożliwa w przy- padku umieszczenia katalogu logs w woluminie NFS. Nie jest również wskazane umieszczanie pliku blokady w katalogu dostępnym dla wszystkich do zapisu, gdyż jego przypadkowe utworzenie zablokuje możliwość uruchomienia serwera. Mechanizm blo- kady jest niezbędny w niektórych systemach operacyjnych, które nie tolerują równocze- snego wywołania funkcji accept()przez kilka procesów dla pojedynczego gniazda (to właśnie w niej „siedzi” Apache w trakcie oczekiwania na połączenie). Z tego też wzglę- du konieczne jest użycie jakiegoś mechanizmu szeregowania wywołań funkcji ac- cept(). Można tego dokonać poprzez użycie pliku blokady, jednak rozwiązanie to nie daje się zastosować w przypadku użycia systemu NFS. AcceptMutex AcceptMutex default|metoda Wartość domyślna: default Zastosowanie: Konfiguracja główna Dyrektywy AcceptMutex służą do ustalenia metody wykorzystywanej następnie przez Apache do szeregowania wielokrotnych wywołań funkcji accept() w stosunku do gniazda sieciowego, inicjowanych przez procesy potomne serwera. W wersjach poprze- dzających Apache 2.0 metodę szeregowania można było określić wyłącznie na etapie Pozostałe dyrektywy 107 kompilacji. Wybór optymalnej metody uzależniony jest oczywiście od cech systemu ope- racyjnego i architektury serwera. Szczegółowe informacje na ten temat można znaleźć pod adresem http://httpd.apache.org/docs-2.0/misc/perf-tuning.html. W przypadku rezygnacji z określenia wartości dyrektywy AcceptMutex lub ustawienia jej na wartość domyślną, serwer skorzysta z ustawień określonych w trakcie kompilacji. Pozostałe dostępne metody zostały wyliczone poniżej. Warto odnotować, że nie wszystkie metody są odpowiednie dla każdej platformy. Jeżeli dana metoda nie jest na konkretnej platformie obsługiwana, próba uruchomienia serwera spowoduje zapisanie w pliku dziennika błędów odpowiedniego komunikatu i listy dzostępnych metod szeregowania. flock Synchronizacja dostępu do pliku określonego wartością dyrektywy LockFile reali- zowana jest za pośrednictwem systemowego wywołania zflock(). fcntl Synchronizacja dostępu do pliku określonego wartością dyrektywy LockFile reali- zowana jest za pośrednictwem systemowego wywołania zfcntl(). sysvsem Synchronizacja dostępu do pliku realizowana jest przy użyciu semaforów zgodnych ze specyfikacją System V. pthread Synchronizacja dostępu do
Pobierz darmowy fragment (pdf)

Gdzie kupić całą publikację:

Apache. Przewodnik encyklopedyczny. Wydanie III
Autor:
,

Opinie na temat publikacji:


Inne popularne pozycje z tej kategorii:


Czytaj również:


Prowadzisz stronę lub blog? Wstaw link do fragmentu tej książki i współpracuj z Cyfroteką: