SlideShare ist ein Scribd-Unternehmen logo
1 von 33
Downloaden Sie, um offline zu lesen
IDZ DO
         PRZYK£ADOWY ROZDZIA£

                           SPIS TREœCI
                                         Apache. Rozmówki
                                         Autorzy: Daniel Lopez, Jesus Blanco
           KATALOG KSI¥¯EK               T³umaczenie: Grzegorz Werner
                                         ISBN: 83-246-0669-6
                      KATALOG ONLINE     Tytu³ orygina³u: Apache Phrasebook
                                         Format: B6, stron: 272
       ZAMÓW DRUKOWANY KATALOG


              TWÓJ KOSZYK
                                         Apache to jeden z najpopularniejszych serwerów WWW. Dostêpny nieodp³atnie na
                    DODAJ DO KOSZYKA     licencji open source jest „motorem napêdowym” ponad 70% witryn WWW w internecie.
                                         W miarê rozwoju serwera Apache jego mo¿liwoœci i z³o¿onoœæ wzros³y do tego stopnia,
                                         ¿e pocz¹tkuj¹cy u¿ytkownicy mog¹ czuæ siê przyt³oczeni sam¹ koniecznoœci¹ jego
         CENNIK I INFORMACJE             skonfigurowania. W³aœciwe dostrojenie dzia³ania serwera wymaga modyfikowania
                                         plików konfiguracyjnych i odpowiedniego dobrania parametrów dyrektyw w nich
                                         zawartych. Na szczêœcie wiêkszoœæ typowych funkcji realizuje siê w podobny sposób
                   ZAMÓW INFORMACJE
                     O NOWOœCIACH        na wszystkich platformach systemowych.
                                         Ksi¹¿ka „Apache. Rozmówki” to zestawienie najistotniejszych wiadomoœci dotycz¹cych
                       ZAMÓW CENNIK      konfigurowania serwera Apache i administrowania nim. Mo¿na tam znaleŸæ tak¿e wiele
                                         przyk³adów i konkretnych wskazówek. Przeczytaj, a dowiesz siê, jak zainstalowaæ
                                         serwer Apache w ró¿nych systemach operacyjnych oraz jak uruchomiæ go i zatrzymaæ.
                 CZYTELNIA               Nauczysz siê diagnozowaæ przyczyny niew³aœciwego dzia³ania serwera i korzystaæ
                                         z dzienników. Poznasz sposoby ³¹czenia katalogów zawieraj¹cych pliki stron WWW
          FRAGMENTY KSI¥¯EK ONLINE       z odpowiednimi adresami URL, zabezpieczania serwera i zestawiania po³¹czeñ
                                         szyfrowanych SSL/TLS. Proste stanie siê dla Ciebie tak¿e maksymalizowanie
                                         wydajnoœci serwera.
                                         Ksi¹¿ka zawiera omówienie takich oto zagadnieñ:
                                             • instalowanie Apache’a w systemach Windows i Linux
                                             • w³¹czanie i wy³¹czanie serwera oraz jego pojedynczych modu³ów
                                             • struktura plików konfiguracyjnych
                                             • analiza dzienników serwera
                                             • odwzorowywanie adresów URL
                                             • metody uwierzytelniania u¿ytkowników
                                             • stosowanie certyfikatów SSL
Wydawnictwo Helion                           • korzystanie z protoko³u WebDAV
ul. Koœciuszki 1c                            • poprawa wydajnoœci Apache’a
44-100 Gliwice                           Dziêki niej szybko skonfigurujesz serwer Apache, a kilkusetstronicowe instrukcje
tel. 032 230 98 63                       obs³ugi przestan¹ Ci byæ potrzebne.
e-mail: helion@helion.pl
O autorach ......................................................................... 13
   Wstęp ................................................................................ 15
1 Apache — podstawy ......................................................... 17
  Podstawowe informacje o serwerze Apache ........................... 17
  Sprawdzanie, czy Apache jest już zainstalowany .................... 19
  Instalowanie serwera Apache 1.3 w Linuksie i Uniksie ........... 21
  Instalowanie serwera Apache 2.0 w Linuksie i Uniksie ........... 22
  Instalowanie serwera Apache w Windows ............................. 23
  Podstawowe informacje o pliku konfiguracyjnym ................... 24
  Używanie wielu plików konfiguracyjnych ............................... 26
  Uruchamianie, zatrzymywanie i restartowanie serwera Apache ... 27
  Zmiana adresu i portu używanego przez serwer Apache ........ 29
  Zmiana użytkownika, z którego przywilejami
   działa serwer Apache ........................................................... 30
  Określanie nazwy serwera ..................................................... 31
  Określanie ikony strony WWW ............................................... 32
  Ustalanie dostępnych modułów serwera ................................ 32
  Włączanie i wyłączanie pojedynczych modułów ..................... 33
  Dodawanie modułów bez rekompilowania serwera Apache ... 34
  Publikowanie treści ................................................................ 36
Spis treści


    2 Rozwiązywanie problemów ..............................................41
      Pomocy! Mój serwer nie działa! ............................................. 41
      Dziennik błędów .................................................................... 42
      Rejestrowanie zdarzeń przez syslog ........................................ 43
      Kontrolowanie ilości rejestrowanych informacji ...................... 43
      Testowanie konfiguracji serwera Apache ................................ 45
      Testowanie serwera Apache z wiersza poleceń ...................... 45
      Sprawdzanie, czy serwer Apache działa .................................. 47
      Inne sposoby zatrzymywania serwera Apache ........................ 48
      Diagnozowanie serwera Apache za pomocą modułów ........... 50
      Błędy podczas uruchamiania serwera ..................................... 51
      Błędy odmowy dostępu .......................................................... 54
      Wewnętrzne błędy serwera .................................................... 55
      Dodatkowe pliki dziennika błędów ......................................... 57
      Przekierowania nie działają .................................................... 58
      Lista diagnostyczna ................................................................ 58
    3 Dzienniki i monitorowanie ................................................65
      Rejestrowanie żądań w serwerze Apache ............................... 65
      Domyślne pliki dziennika serwera Apache .............................. 66
      Tworzenie formatów dziennika .............................................. 66
      Tworzenie własnego pliku dziennika ...................................... 68
      Przekierowywanie dzienników do zewnętrznego programu .... 69
      Warunkowe rejestrowanie żądań ........................................... 70
      Monitorowanie stron wskazujących witrynę ........................... 71
      Monitorowanie serwera Apache za pomocą modułu mod_status ..71
      Monitorowanie serwera Apache za pomocą SNMP ................. 72
      Analizowanie dzienników za pomocą narzędzi open source ... 74
      Monitorowanie dzienników w czasie rzeczywistym ................ 74
      Rejestrowanie żądań w bazie danych ..................................... 75
      Rotacja i archiwizowanie dzienników ...................................... 76
4
Spis treści


   Odwzorowywanie adresów IP ................................................ 77
   Przetwarzanie zarejestrowanych adresów IP .......................... 78
   Automatyczne restartowanie serwera Apache w razie awarii .... 79
   Scalanie i dzielenie plików dziennika ...................................... 80
   Prowadzenie oddzielnego dziennika
    dla każdego hosta wirtualnego ............................................ 81
   Często spotykane wpisy dziennika ......................................... 82
4 Odwzorowywanie adresów URL i treść dynamiczna ......... 85
  Odwzorowywanie adresów URL .............................................. 85
  Odwzorowywanie adresów URL
   na pliki za pomocą dyrektywy Alias ...................................... 86
  Odwzorowywanie wzorców URL
   na pliki za pomocą dyrektywy AliasMatch ............................ 87
  Przekierowywanie żądań do innej lokacji ............................... 87
  Przekierowywanie żądań do najnowszej wersji pliku ............... 88
  Przekierowywanie nieudanych lub nieautoryzowanych żądań ... 89
  Definiowanie procedur obsługi treści ..................................... 90
  Typy MIME ............................................................................ 91
  Konfigurowanie typów MIME ................................................ 92
  Zasady wykonywania skryptów CGI ....................................... 92
  Oznaczanie zasobów jako wykonywalnych skryptów CGI ....... 93
  Wiązanie skryptów z metodami HTTP i typami MIME ............. 94
  Rozwiązywanie problemów z wykonywaniem skryptów CGI .. 95
  Zwiększanie wydajności skryptów CGI ................................... 96
  Server Side Includes ............................................................... 97
  Konfigurowanie SSI ................................................................ 97
  Ustawianie zmiennych środowiskowych ................................ 98
  Dynamiczne ustawianie zmiennych środowiskowych ............. 99
  Specjalne zmienne środowiskowe ........................................ 101
  Negocjacja treści .................................................................. 101
                                                                                              5
Spis treści


       Konfigurowanie negocjacji treści .......................................... 103
       Określanie domyślnych zestawów znaków i priorytetu języków . 104
       Zaawansowane odwzorowywanie adresów URL
        za pomocą modułu mod_rewrite ............................................ 105
       Problem „końcowego ukośnika” ............................................ 106
       Poprawianie pomyłek w pisowni .......................................... 107
       Rozwiązywanie problemów z wielkością liter ....................... 108
       Weryfikowanie stron za pomocą programu Tidy ................... 109
    5 Hosting wirtualny ............................................................111
      Co to jest hosting wirtualny? ................................................ 111
      Co to jest hosting wirtualny oparty na adresach IP? .............. 112
      Konfigurowanie hostingu wirtualnego opartego na adresach IP ..113
      Co to jest hosting wirtualny oparty na nazwach? .................. 114
      Konfigurowanie hostingu wirtualnego opartego na nazwach ..... 115
      Co się dzieje, kiedy żądanie
       nie pasuje do żadnego hosta wirtualnego? ........................ 116
      Konfigurowanie domyślnego
       hosta wirtualnego opartego na nazwie .............................. 117
      Konfigurowanie domyślnego
       hosta wirtualnego opartego na adresie IP .......................... 118
      Łączenie hostów wirtualnych opartych
      na nazwach i na adresach IP ................................................ 119
      Diagnozowanie konfiguracji hostów wirtualnych .................. 120
      Używanie SSL w połączeniu
       z hostami wirtualnymi opartymi na nazwach ...................... 121
      Inna metoda hostingu wirtualnego ...................................... 121
      Inne moduły do hostingu wirtualnego .................................. 123
      Pliki konfigurujące poszczególne katalogi ............................. 124
      Określanie zasięgu plików konfigurujących
       poszczególne katalogi ........................................................ 125
      Wyłączanie plików konfigurujących poszczególne katalogi ... 126
6
Spis treści


6 Bezpieczeństwo i kontrola dostępu ................................. 127
  Stosowanie kontroli dostępu ................................................ 127
  Różnice między wersjami serwera Apache ........................... 128
  Uwierzytelnianie podstawowe i ze skrótem komunikatu ...... 129
  Kontrola dostępu do serwera Apache ................................... 131
  Konfiguracja autoryzacji i uwierzytelniania
   w serwerze Apache ............................................................ 132
  Tworzenie bazy użytkowników ............................................ 133
  Autoryzowanie użytkowników
   i grup za pomocą dyrektywy Require ................................. 134
  Obsługa wielu kont użytkowników ...................................... 135
  Zezwalanie na dostęp tylko spod określonych adresów IP .... 136
  Blokowanie dostępu spod określonych adresów IP .............. 137
  Łączenie metod kontroli dostępu .......................................... 138
  Dostosowywanie strony odmowy dostępu ........................... 138
  Oddawanie kontroli w ręce użytkowników ........................... 140
  Blokowanie dostępu do plików systemowych i poufnych ..... 141
  Ograniczanie wykonywania programów .............................. 142
  Zapobieganie nadużyciom ................................................... 143
  Wyłączanie listingów katalogów .......................................... 144
  Zmiana nagłówka Server: ..................................................... 145
  Zapobieganie tworzeniu zewnętrznych łączy do obrazów ...... 145
  Ograniczanie wybranych metod HTTP .................................. 146
  Ograniczanie dostępu na podstawie typu przeglądarki ......... 148
  Korzystanie z sekcji Location i Directory ................................ 149
  Dodatkowe moduły uwierzytelniające .................................. 149
  Apache 2.2 .......................................................................... 151
  Aktualizowanie zabezpieczeń serwera Apache ..................... 152
  Procedura zabezpieczania serwera ....................................... 153


                                                                                              7
Spis treści


    7 SSL/TLS..............................................................................159
      Co to jest SSL? ...................................................................... 159
      Jak działa SSL? ..................................................................... 160
      Kompilowanie pakietu OpenSSL ........................................... 162
      Klucze szyfrowania ............................................................... 163
      Tworzenie pary kluczy .......................................................... 163
      Tworzenie pary kluczy chronionych hasłem .......................... 164
      Usuwanie hasła z klucza ....................................................... 165
      Certyfikaty ............................................................................ 165
      Tworzenie wniosku o podpisanie certyfikatu ........................ 166
      Wyświetlanie zawartości wniosku o podpisanie certyfikatu .. 168
      Tworzenie samodzielnie podpisanego certyfikatu ................. 168
      Kompilowanie serwera Apache 1.3 z obsługą SSL ................ 169
      Kompilowanie serwera Apache 2.x z obsługą SSL ................. 171
      Minimalna konfiguracja serwera Apache .............................. 171
      Uruchamianie serwera Apache z obsługą SSL ....................... 172
      SSLPassPhraseDialog ............................................................ 173
      Zwiększanie wydajności SSL ................................................. 174
      Realizacja wszystkich żądań z wykorzystaniem SSL ............... 175
      SSL i hosty wirtualne oparte na nazwach .............................. 176
      Używanie modułów uwierzytelniających w połączeniu z SSL 177
      Komunikaty ostrzegawcze wyświetlane
       podczas dostępu do witryny obsługującej SSL .................... 177
      Tworzenie certyfikatów klienta ............................................. 178
      Uwierzytelnianie z wykorzystaniem certyfikatów klienta ....... 179
      Rozwiązania alternatywne ................................................... 180
      Testowanie witryn SSL z wiersza poleceń ............................. 181
      Rozwiązywanie problemów
       z nieprawidłowymi implementacjami SSL ........................... 181



8
Spis treści


   Złożona kontrola dostępu
    z wykorzystaniem modułu mod_ssl .................................... 182
   Powiązane rozdziały ............................................................ 183
8 Publikowanie treści za pomocą DAV ................................ 185
  Publikowanie treści w serwerze Apache ............................... 185
  Wprowadzenie do WebDAV ................................................ 186
  Korzyści związane z użyciem modułu mod_dav .................... 187
  WebDAV i protokół HTTP ..................................................... 188
  Instalowanie modułu mod_dav w serwerze Apache 2.0 ....... 189
  Instalowanie modułu mod_dav w serwerze Apache 1.3 ....... 190
  Podstawowa konfiguracja WebDAV ..................................... 191
  Zabezpieczanie konfiguracji WebDAV .................................. 191
  Dostęp do zasobów DAV z programów Microsoft Office ....... 193
  Dostęp do zasobów DAV z systemu Microsoft Windows ...... 194
  Dostęp do zasobów DAV z przeglądarki Firefox .................... 196
  Dostęp do zasobów DAV z wiersza poleceń ......................... 197
  Obsługa błędnie działających klientów ................................. 198
  Moduł mod_spelling i DAV .................................................. 199
  Treść dynamiczna i DAV ....................................................... 199
  Włączanie stron użytkowników ............................................ 200
  Inny sposób obsługi stron użytkowników ............................. 202
  Rozwiązywanie problemów z plikiem DAVLockDB ................ 202
9 Wydajność i skalowalność ............................................... 205
  Dostrajanie serwera Apache ................................................. 205
  Wydajność i skalowalność ................................................... 206
  Dostrajanie sprzętu .............................................................. 206
  Zwiększanie limitów systemu operacyjnego ......................... 207
  Zwiększanie liczby procesów ................................................ 208
  Zwiększanie liczby deskryptorów plików .............................. 209

                                                                                           9
Spis treści


        Kontrolowanie zewnętrznych procesów ................................ 210
        Zwiększanie wydajności systemu plików .............................. 211
        Dostrajanie ustawień sieci i śledzenia stanu serwera ............ 214
        Zapobieganie nadużyciom .................................................... 217
        Ograniczanie pasma i liczby połączeń ................................... 218
        Blokowanie robotów ............................................................ 220
        Pośredniki odwrotne i urządzenia
         do równoważenia obciążenia ..................................................221
        Buforowanie i kompresja ...................................................... 222
        Optymalizacje specyficznych modułów ................................. 223
        Alternatywne serwery .......................................................... 223
     10 Obsługa pośredniczenia
        i buforowania w serwerze Apache ................................225
       Zastosowanie buforowania i pośredniczenia ........................ 225
       Pośredniki zwykłe i odwrotne ............................................... 226
       Różnice między wersjami 1.3, 2.0 i 2.2 serwera Apache ....... 226
       Włączanie obsługi modułu mod_proxy ................................. 227
       Włączanie obsługi pośredniczenia zwykłego ......................... 228
       Unifikowanie przestrzeni URL
        za pomocą pośrednika odwrotnego .................................... 229
       Ukrywanie serwerów zaplecza ............................................. 230
       Blokowanie pośredniczenia odwrotnego
        w przypadku wybranych adresów URL ............................... 231
       Zwiększanie wydajności ....................................................... 232
       Wspomaganie przetwarzania SSL ......................................... 233
       Przekazywanie informacji o pośredniczeniu w nagłówkach ..... 234
       Manipulowanie nagłówkami ................................................ 235
       Konfigurowanie pośrednika buforującego ............................ 236
       Buforowanie w serwerze Apache 2 ...................................... 237
       Równoważenie obciążenia ................................................... 238

10
Spis treści


   Łączenie się z serwerem Tomcat ............................................. 239
   Inne pośredniki .................................................................... 240
   Przezroczyste pośredniki HTTP .............................................. 241
11 Moduły wieloprocesowe i protokołowe .......................... 243
  Ewolucja architektury serwera Apache ................................. 243
  Wybór modułu MPM ............................................................ 244
  Procesowe moduły MPM ..................................................... 245
  Konfigurowanie modułu MPM prefork ................................. 246
  Wątkowe i hybrydowe moduły MPM ................................... 247
  Konfigurowanie modułu MPM worker .................................. 248
  Inne moduły MPM ............................................................... 249
  Filtry w serwerze Apache 2 .................................................. 250
  Apache jako serwer FTP ....................................................... 251
  Apache jako serwer POP3 .................................................... 252
  Kompresowanie treści „w locie” ........................................... 253

   Skorowidz ....................................................................... 255




                                                                                              11
tym rozdziale zostaną szczegółowo opisane najczę-
ściej spotykane problemy — na przykład błędne ustawienia
praw dostępu do plików i brak możliwości powiązania
serwera z określonym portem — oraz ich rozwiązania.
Omówionych zostanie też kilka narzędzi i zasobów po-
zwalających zidentyfikować przyczyny problemów.



Pomocy! Mój serwer nie działa!
Wiadomo, że nie ma nic bardziej frustrującego, niż przerwa
w lekturze technicznej książki wymuszona zmaganiami
z błędnie działającym oprogramowaniem. Nie chcemy,
aby była to jedna z takich książek! Właśnie dlatego poru-
szamy te kwestie na samym początku. Z tej przyczyny
niniejszy rozdział opisuje zarówno zagadnienia podsta-
wowe, jak i zaawansowane; początkujący użytkownicy
Apache’a mogą opuścić te, które ich nie dotyczą.
Dziennik błędów
ROZDZIAŁ 2



                          Dziennik błędów
                           ErrorLog logs/error_log


                          Plik dziennika błędów przechowuje informacje o ważnych
                          zdarzeniach, w tym o uruchomieniach, restartach, błędach
                          w działaniu serwera oraz zabronionych albo nieprawidło-
                          wych żądaniach. Jest to pierwsze miejsce, w które należy
                          zajrzeć podczas rozwiązywania problemów z serwerem.
ROZWIĄZYWANIE PROBLEMÓW




                          W systemach uniksowych plik error_log jest umieszczany
                          domyślnie w podkatalogu logs/ katalogu instalacyjnego
                          Apache’a. Jeśli instalacja Apache’a stanowi część dystry-
                          bucji systemu, plik może znajdować się w innym miejscu,
                          najczęściej var/log/httpd.

                          W Windows plik nosi nazwę error.log i również znaj-
                          duje się w podkatalogu logs.

                          Za pomocą dyrektywy ErrorLog można określić ścieżkę do
                          pliku dziennika. Można również podać ścieżkę do pro-
                          gramu i poprzedzić ją symbolem potoku (|), aby błędy
                          były wysyłane do innego programu. Tę często używaną
                          technikę opisano w rozdziale 3.

                          Zwróćmy uwagę, że plik dziennika błędów zostanie utwo-
                          rzony dopiero po pierwszym uruchomieniu Apache’a!




            42
Rejestrowanie zdarzeń przez syslog




                                                                ROZDZIAŁ 2
Rejestrowanie zdarzeń
przez syslog
 ErrorLog syslog
 ErrorLog syslog:local7


W systemach uniksowych można określić syslog jako
argument dyrektywy ErrorLog, aby Apache rejestrował
błędy za pomocą demona syslog. Pokazano to w po-




                                                                ROZWIĄZYWANIE PROBLEMÓW
wyższym przykładzie. Opcjonalnie można dołączyć kanał
(domyślnie local7). Kanał syslog to pole informacyjne
związane z komunikatem syslog, które wskazuje źródło
komunikatu. Kanały od local0 do local10 są zarezer-
wowane na użytek administratora i aplikacji takich jak
Apache.



Kontrolowanie ilości
rejestrowanych informacji
 LogLevel notice


Informacje o zdarzeniach generowane przez Apache’a
mają różne stopnie ważności. Dyrektywa LogLevel w połą-
czeniu z argumentami wymienionymi w tabeli 2.1 pozwala
wybrać rodzaj rejestrowanych komunikatów. Rejestrowa-
ne będą tylko błędy o określonym i wyższym poziomie
ważności.



                                                                 43
Kontrolowanie ilości rejestrowanych informacji
ROZDZIAŁ 2


                          Tabela 2.1. Opcje dyrektywy LogLevel według dokumentacji
                          serwera Apache

                            Ustawienie       Opis                 Przykład
                            emerg            Poważne błędy —      Child cannot open
                                             system nie nadaje    lock file. Exiting.
                                             się do użytku
                            alert            Konieczna jest       getpwuid: couldn't
                                             natychmiastowa       determine user name
                                             reakcja              from uid
                            crit             Zdarzenia            socket: Failed to
ROZWIĄZYWANIE PROBLEMÓW




                                             krytyczne            get socket, exiting
                                                                  child.
                            error            Błędy                Premature end of
                                                                  script headers.
                            warn             Ostrzeżenia          Child process 1234
                                                                  did not exit,
                                                                  sending another
                                                                  SIGHUP.
                            notice           Zwykłe, ale          httpd: caught
                                             istotne              SIGBUS, attempting
                                             informacje           to dump core in...
                            info             Informacje           Server seems busy.
                                                                  (You may need to
                                                                  increase
                                                                  StartServers, or
                                                                  Min/MaxSpareServers)
                                                                  ...
                            debug            Komunikaty           Opening config
                                             diagnostyczne        file...


                          Domyślny poziom błędów warn jest odpowiedni w więk-
                          szości instalacji Apache’a. Jeśli jednak konieczne jest zdia-
                          gnozowanie specyficznej konfiguracji, można obniżyć po-
                          ziom błędów aż do debug, aby uzyskać znacznie bardziej
                          szczegółowe informacje.
            44
Testowanie konfiguracji serwera Apache




                                                                   ROZDZIAŁ 2
Testowanie konfiguracji
serwera Apache
 # apachectl configtest


Polecenie to pozwala zbadać plik konfiguracyjny Apache’a
pod kątem problemów przed zastosowaniem go w ak-
tywnym serwerze. Apache używa tej samej procedury do
przetestowania konfiguracji za każdym razem, kiedy użyt-




                                                                   ROZWIĄZYWANIE PROBLEMÓW
kownik wydaje mu polecenie restartu za pośrednictwem
skryptu apachectl. Gwarantuje to, że działający serwer
uruchomi się prawidłowo z nowym plikiem konfigura-
cyjnym.



Testowanie serwera Apache
z wiersza poleceń
 $ telnet www.apache.org 80
 Trying 192.87.106.226...
 Connected to ajax-l.apache.org (192.87.106.226).
 Escape character is '^]'.
 HEAD / HTTP/1.0

 HTTP/1.1 200 OK
 Date: Sun, 04 Sep 2005 20:42:02 GMT
 Server: Apache/2.0.54 (Unix) mod_ssl/2.0.54
      OpenSSL/0.9.7a DAV/2 SVN/1.2.0-dev
 Last-Modified: Sat, 03 Sep 2005 11:35:42 GMT
 ETag: "203a8-2de2-3ffdc7a6d3f80"
 Accept-Ranges: bytes
 Content-Length: 11746
 Cache-Control: max-age=86400

                                                                    45
Testowanie serwera Apache z wiersza poleceń
ROZDZIAŁ 2


                           Expires: Mon, 05 Sep 2005 20:42:02 GMT
                           Connection: close
                           Content-Type: text/html; charset=ISO-8859-1
                           Connection closed by foreign host.


                          HTTP jest prostym protokołem tekstowym, więc można
                          użyć klienta Telnetu — programu, który pozwala połą-
                          czyć się bezpośrednio ze wskazanym komputerem i por-
                          tem — do sprawdzenia obecności serwera w zdalnym
                          hoście. Jeśli serwer nie odpowie, a wiadomo, że sieć jest
                          prawidłowo skonfigurowana, oznacza to, że Apache nie
ROZWIĄZYWANIE PROBLEMÓW




                          nasłuchuje pod określonym adresem i w określonym por-
                          cie. Technika ta bywa przydatna w środowiskach, w któ-
                          rych niedostępna jest przeglądarka WWW, na przykład
                          podczas zdalnego dostępu do serwera przez SSH. Jeśli na
                          przykład można uzyskać dostęp do Apache’a w zdalnym
                          komputerze przez adres localhost, ale nie za pomocą
                          zdalnej przeglądarki, może to oznaczać problemy z zaporą
                          sieciową albo nieprawidłowe ustawienie dyrektywy Listen.

                          Należy połączyć się przez Telnet z adresem www.apache.
                          org (albo inną witryną WWW) w porcie 80. i wpisać:
                           HEAD / HTTP/1.0

                          albo:
                           GET / HTTP/1.0

                          a następnie dwukrotnie nacisnąć klawisz Enter. Pojawi się
                          odpowiedź podobna do pokazanej w powyższym przykładzie.

                          Jeśli w systemie zainstalowana jest tekstowa przeglądarka
                          WWW lynx, można uzyskać podobny wynik za pomocą
                          poniższego polecenia:
            46
Sprawdzanie, czy serwer Apache działa




                                                                 ROZDZIAŁ 2
 lynx -head -dump http://www.apache.org


W rozdziale 7. zostanie opisany moduł mod_ssl, a Czy-
telnicy poznają sposób łączenia się z serwerem obsługują-
cym SSL za pomocą narzędzia openssl.



Sprawdzanie,
czy serwer Apache działa




                                                                 ROZWIĄZYWANIE PROBLEMÓW
 ps -aux | grep httpd
 25297 ?        S       0:00 /usr/local/www/bin/httpd
 -k start
 15974 ?        S       0:06 /usr/local/www/bin/httpd
 -k start
 14441 ?        S       0:02 /usr/local/www/bin/httpd
 -k start
 ...

 /usr/sbin/lsof | grep httpd |grep IPv
 httpd      14441 nobody     3u IPv4      136524
                   TCP www.example.com:http (LISTEN)
 httpd      25297   root     3u IPv4      136524
                   TCP www.example.com:http (LISTEN)
 httpd      30277 nobody     3u IPv4      136524
                   TCP www.example.com:http (LISTEN)
 ...
 netstat -ltnp
 Active Internet connections (only servers)
 Proto Recv-Q Send-Q Local Address           Foreign
       Address        State        PID/Program name
 tcp         0     0 192.168.1.151:80        0.0.0.0:
       *              LISTEN       25297/httpd
 tcp         0     0 0.0.0.0:22              0.0.0.0:
       *              LISTEN       1038/sshd




                                                                  47
Inne sposoby zatrzymywania serwera Apache
ROZDZIAŁ 2


                          Czasem nie można połączyć się z serwerem, ale nie wia-
                          domo, czy to serwer nie działa, czy może wystąpił jakiś
                          problem z siecią. W systemach uniksowych dostępnych
                          jest kilka narzędzi, które pozwalają ustalić przyczynę pro-
                          blemu. Niektóre z nich pokazano w powyższym przykładzie.

                          Narzędzie ps pokazuje, czy w systemie działa proces
                          httpd.

                          Narzędzia netstat oraz lsof pokazują adresy i porty,
ROZWIĄZYWANIE PROBLEMÓW




                          w których nasłuchuje serwer Apache.

                          W systemie Windows można użyć Menedżera zadań Win-
                          dows (uruchamianego przez jednoczesne naciśnięcie klawi-
                          szy Alt+Ctrl+Delete), aby sprawdzić, czy działa proces
                          Apache.exe. Stan serwera można również sprawdzić za
                          pomocą programu monitorującego dołączanego do now-
                          szych dystrybucji i działającego w zasobniku systemowym.



                          Inne sposoby zatrzymywania
                          serwera Apache
                           # kill -HUP 25297
                           # kill -9 25297


                          Czasem wygodniej jest bezpośrednio wysłać sygnał do
                          serwera za pomocą narzędzia kill zamiast używać skryptu
                          apachectl. W tym celu należy najpierw ustalić identyfi-
                          kator procesu działającego serwera z wykorzystaniem pro-
                          gramów ps lub lsof. Następnie można zakończyć proces

            48
Inne sposoby zatrzymywania serwera Apache




                                                                ROZDZIAŁ 2
za pomocą polecenia kill, które przyjmuje dwa argu-
menty: wysyłany sygnał oraz identyfikator procesu ser-
wera Apache (w tym przykładzie 25297). Sygnał KILL
(albo TERM) zatrzymuje serwer, a sygnał HUP uruchamia
go ponownie. Można również zastąpić nazwę sygnału jej
liczbowym odpowiednikiem, jak pokazano w powyższym
przykładzie. Więcej informacji można znaleźć w pod-
ręczniku systemowym pod hasłem kill.

W Linuksie można również wysłać sygnał do wszystkich




                                                                ROZWIĄZYWANIE PROBLEMÓW
procesów o nazwie httpd za pomocą polecenia killall.
Aby na przykład usunąć wszystkie procesy httpd, należy
wydać polecenie:
 # killall -KILL httpd


Należy jednak zachować ostrożność, ponieważ jeśli w sys-
temie działa kilka egzemplarzy Apache’a, powyższe pole-
cenie usunie je wszystkie!

Aby powyższe polecenia zadziałały, użytkownik musi mieć
odpowiednie uprawnienia. W niemal wszystkich przy-
padkach trzeba być albo superużytkownikiem, albo wła-
ścicielem procesu Apache’a, żeby go zatrzymać lub uru-
chomić ponownie.

W systemach Windows można wymusić zamknięcie Apa-
che’a za pomocą przycisku Zakończ proces w Menedżerze
zadań Windows.




                                                                 49
Diagnozowanie serwera Apache za pomocą modułów
ROZDZIAŁ 2



                          Diagnozowanie serwera
                          Apache za pomocą modułów
                          Istnieje kilka modułów Apache’a, które mogą pomóc pod-
                          czas rozwiązywania problemów z konfiguracją serwera albo
                          aplikacją WWW.

                          Moduł mod_loopback, narzędzie do diagnozowania klien-
                          tów WWW, po prostu odsyła do przeglądarki wszystkie
ROZWIĄZYWANIE PROBLEMÓW




                          odebrane informacje dotyczące żądania HTTP, w tym
                          dane POST lub PUT. Moduł jest dostępny pod adresem:
                           http://www.snert.com/Software/mod_loopback/
                           index.shtml

                          Moduły mod_tee oraz mod_trace_output zapisują treść
                          wysyłaną przez serwer. Można je znaleźć pod następują-
                          cymi adresami:
                           http://apache.webthing.com/mod_tee/
                           http://trace-output.sourceforge.net/

                          Moduł mod_logio wchodzący w skład Apache’a 2 zapi-
                          suje wszystkie dane odebrane lub zwrócone przez serwer
                          w dzienniku błędów.

                          Wszystkie te moduły zmniejszają wydajność serwera, ale
                          bywają bardzo przydatne, na przykład podczas analizo-
                          wania problemów z nagłówkami albo plikami cookie.




            50
Błędy podczas uruchamiania serwera




                                                               ROZDZIAŁ 2
Błędy podczas uruchamiania
serwera
W tym podrozdziale zostaną opisane problemy, które mogą
zapobiec uruchomieniu Apache’a, oraz związane z nimi
komunikaty o błędach.


Błąd składni




                                                               ROZWIĄZYWANIE PROBLEMÓW
 Syntax error on line xxx of /etc/http/httpd.conf:
 Invalid command 'PiidFile', perhaps misspelled or
 defined by a module not included in the server
 configuration


Błąd składni oznacza, że użytkownik pomylił się podczas
wpisywania dyrektywy (w tym przykładzie PidFile) al-
bo że zastosował dyrektywę obsługiwaną przez moduł,
który nie został dodany do serwera. Należy sprawdzić
składnię pliku konfiguracyjnego w miejscu wskazanym
przez komunikat o błędzie. W rozdziale 1. wyjaśniono,
jak użyć dyrektywy <ifModule> do warunkowego wyłą-
czania dyrektyw, aby plik konfiguracyjny mógł zostać
przetworzony nawet wtedy, gdy pewien moduł jest nie-
dostępny.


Zajęty adres
 Address already in use: make_sock: could not bind to
 port



                                                                51
Błędy podczas uruchamiania serwera
ROZDZIAŁ 2


                          Powyższy błąd oznacza, że inny program używa już
                          portu, z którym Apache próbuje się związać. Aby roz-
                          wiązać problem, należy zatrzymać ten program przed uru-
                          chomieniem Apache’a albo otworzyć plik konfiguracyjny
                          httpd.conf i zmienić port, w którym Apache nasłuchuje
                          przychodzących żądań (dyrektywy Listen i Port).

                          W większości przypadków błąd ten występuje dlatego, że
                          w systemie działa już inny egzemplarz serwera Apache.
                          W Windows zdarza się, że port Apache’a jest zajęty przez
ROZWIĄZYWANIE PROBLEMÓW




                          program Internet Information Server albo Microsoft Per-
                          sonal Web Server. Port 80. bywa również używany przez
                          inne popularne programy, na przykład Skype.


                          Niewystarczające uprawnienia
                           [Mon Jan 9 20:09:50 2005] [crit] (13)Permission
                           denied: make_sock: could not bind to port 80


                          Powyższy komunikat wskazuje, że użytkownik nie ma
                          wystarczających uprawnień, aby nakazać Apache’owi zwią-
                          zanie się z portem określonym w pliku konfiguracyjnym.
                          W Uniksie tylko użytkownicy uprzywilejowani mogą wią-
                          zać się z portami z zakresu 1 – 1024. Aby rozwiązać ten
                          problem, należy zalogować się jako superużytkownik al-
                          bo wydać polecenie su i ponownie spróbować urucho-
                          mić serwer. Ci, którzy nie mają dostępu do konta supe-
                          rużytkownika, mogą otworzyć plik httpd.conf i zmienić
                          port używany przez Apache’a na wyższy niż 1024.



            52
Błędy podczas uruchamiania serwera




                                                                  ROZDZIAŁ 2
Niezgodny moduł
 module xxx is not compatible with this version of
 Apache


Powyższy błąd występuje wtedy, gdy Apache próbuje
wczytać moduł skompilowany pod kątem nowszej (lub star-
szej) wersji serwera niż obecnie zainstalowana w syste-
mie. Użytkownicy, którzy dysponują kodem źródłowym
modułu, mogą zrekompilować go na użytek odpowiedniej




                                                                  ROZWIĄZYWANIE PROBLEMÓW
wersji w sposób opisany w rozdziale 1. Ci, którzy nie
mają kodu źródłowego albo nie mogą zrekompilować mo-
dułu, a potrzebują oferowanych przez niego funkcji, mogą
zainstalować nowszą (albo starszą) wersję serwera zgodną
z modułem.


Odwzorowywanie nazw
 Cannot determine hostname


Kilka dyrektyw Apache’a, w tym ServerName i Listen,
przyjmuje argumenty w postaci nazw hostów. Jeśli jed-
nak podczas rozruchu Apache nie zdoła przetłumaczyć
nazwy hosta na adres z wykorzystaniem Domain Name
System (DNS) albo systemowej listy hostów, wystąpi po-
wyższy błąd. Aby rozwiązać problem, należy zweryfiko-
wać ustawienia DNS i /etc/hosts oraz pisownię nazw
hostów w pliku httpd.conf. Jeśli to możliwe, w dyrek-
tywach takich jak Listen oraz <VirtualHost> należy
używać adresów IP zamiast nazw hostów.


                                                                   53
Błędy odmowy dostępu
ROZDZIAŁ 2


                          Błąd podczas otwierania dziennika albo pliku
                          konfiguracyjnego
                           (13)Permission denied: httpd: could not open error
                           log file /usr/local/apache/logs/error_log.


                          Powyższy błąd wskazuje, że użytkownik nie ma wystar-
                          czających uprawnień, aby odczytać plik konfiguracyjny Apa-
                          che’a albo zapisać dane w plikach dziennika.
ROZWIĄZYWANIE PROBLEMÓW




                          Problem ten często pojawia się, kiedy serwer jest uru-
                          chamiany przez użytkownika innego niż ten, który go
                          skompilował i zainstalował. Należy albo uruchomić Apa-
                          che’a z konta superużytkownika, albo użyć polecenia
                          chmod, aby zmienić właściciela pliku podanego w komu-
                          nikacie o błędzie.



                          Błędy odmowy dostępu
                           Forbidden/You don't have permission to access /xxx
                           on this server


                          Jeśli przeglądarka zwraca błąd 403 Forbidden/Access
                          Denied podczas próby wczytania strony z serwera Apa-
                          che, oznacza to, że dany adres URL podlega ograniczeniom
                          dostępu, a żądanie nie spełnia określonych warunków. Aby
                          rozwiązać problem, należy zmienić prawa dostępu do tre-
                          ści WWW albo plików i upewnić się, że właściciel procesu
                          Apache’a ma uprawnienia do odczytu i wykonania we
                          wszystkich katalogach prowadzących do dokumentu.

            54
Wewnętrzne błędy serwera




                                                             ROZDZIAŁ 2
W systemach uniksowych uprawnienia te można ustawić
za pomocą polecenia chmod.

Komunikat Client denied by server configuration
w dzienniku błędów wskazuje, że dostępu odmówiono ze
względu na dyrektywy kontrolne (takie jak Allow i Deny)
w sekcjach <Directory> lub <Location> odnoszących się
do danego adresu URL.

Komunikat Directory index forbidden by rule wska-




                                                             ROZWIĄZYWANIE PROBLEMÓW
zuje, że użytkownik próbował uzyskać dostęp do katalogu,
w którym nie ma pliku indeksu. Informacje o indeksowa-
niu katalogów i plikach indeksu można znaleźć w opisie
opcji Indexes dyrektywy Options w rozdziale 6.
 Options ExecCGI is off in this directory


Jeśli podczas próby wykonania skryptu CGI pojawi się
komunikat Options ExecCGI is off in this directory,
oznacza to, że skrypt nie został zaznaczony jako wykony-
walny w pliku konfiguracyjnym Apache’a albo że w da-
nym katalogu nie można wykonywać skryptów. Więcej in-
formacji można znaleźć w opisie dyrektyw ScriptAlias
lub Options.



Wewnętrzne błędy serwera
Wewnętrzne błędy serwera to błędy, które uniemożliwiają
Apache’owi realizację żądania.



                                                              55
Wewnętrzne błędy serwera
ROZDZIAŁ 2


                          Błędy segmentacji
                           child pid exit signal Segmentation Fault (11)


                          Błąd segmentacji występuje, gdy Apache próbuje uzyskać
                          dostęp do obszarów pamięci należących do innych pro-
                          cesów albo gdy w kodzie Apache’a pojawi się błędnie
                          uformowana albo nielegalna instrukcja. Może to wyni-
                          kać z usterek w źle napisanych albo eksperymentalnych
                          bibliotekach lub modułach, a także z błędów sprzętowych,
ROZWIĄZYWANIE PROBLEMÓW




                          zwykle w systemowej pamięci, chipsecie, magistrali lub
                          procesorze.


                          Przedwczesny koniec nagłówków skryptu
                           [error] [client 192.168.200.3] Premature end of
                           script headers:
                           /usr/local/aoache/cgi-bin/test-cgi


                          Błąd ten jest spowodowany niekompletnym wykonaniem
                          skryptu CGI. Należy upewnić się, że skrypt ma ustawio-
                          ne prawo do wykonania i że jego pierwszy wiersz wska-
                          zuje prawidłowy program interpretera. Błąd ten może
                          wystąpić na przykład wtedy, gdy skrypt zaczyna się od
                          wiersza #!/usr/local/bin/perl, a w rzeczywistości in-
                          terpreter Perla znajduje się w pliku /usr/bin/perl.

                          Błędy przedwczesnego końca nagłówków zazwyczaj po-
                          jawiają się wtedy, gdy działanie skryptu zostanie prze-
                          rwane, zanim zwróci on jakiekolwiek dane. Może to wyni-
                          kać z wielu przyczyn, na przykład z błędów w kodzie

            56
Dodatkowe pliki dziennika błędów




                                                                  ROZDZIAŁ 2
albo braku bibliotek, z którymi skonsolidowany jest pro-
gram. Jak wyjaśniono w rozdziale 9., w niektórych przy-
padkach proces może zostać przerwany przez system ope-
racyjny albo przez Apache’a, jeśli zużycie zasobów (pamięci,
czasu procesora) przekroczy pewien limit.


Źle uformowane nagłówki
 [error] [client 192.168.200.3] malformed header from
 script. Bad header=xxx:




                                                                  ROZWIĄZYWANIE PROBLEMÓW
 /usr/local/apache/cgi-bin/example.cgi


Ten błąd występuje wtedy, gdy nagłówki generowane przez
skrypt mają nieprawidłowy format (zwykle z powodu błędu
programisty). Odpowiedź skryptu powinna zaczynać się
od nagłówków (zera lub więcej), po których następuje
pusty wiersz.



Dodatkowe pliki
dziennika błędów
 RewriteLog /usr/local/apache/logs/rewrite_log
 RewriteLogLevel warn
 SSLLog /usr/local/apache/logs/ssl_log
 SSLLogLevel warn
 ScriptLog logs/cgi_log


Kilka modułów — w tym moduł SSL Apache’a 1.3, mod_
rewrite oraz mod_cgi — udostępnia własne dyrektywy do
rejestrowania danych specyficznych dla modułu w od-
dzielnym pliku.
                                                                   57
Przekierowania nie działają
ROZDZIAŁ 2



                          Przekierowania nie działają
                           UseCanonicalName off


                          Jeśli serwer Apache staje się niedostępny, kiedy przekie-
                          rowuje żądanie do innej strony, może to oznaczać, że
                          kanoniczna nazwa hosta jest nieprawidłowa albo niedo-
                          stępna na zewnątrz sieci.

                          Jeśli na przykład dyrektywa ServerName jest ustawiona
ROZWIĄZYWANIE PROBLEMÓW




                          na localhost, 127.0.0.1 albo prywatny adres, serwer bę-
                          dzie niedostępny, gdy przekieruje użytkownika pod adres
                          URL oparty na tych wartościach.

                          Żeby rozwiązać ten problem, należy podać prawidłową
                          wartość ServerName albo ustawić dyrektywę UseCanonic-
                          alName na off, aby samoreferencyjne adresy URL były
                          konstruowane na podstawie nazwy hosta podanej przez
                          klienta. Problem ten występuje często w przypadku kom-
                          puterów znajdujących się za odwrotnym pośrednikiem
                          (co opisano w rozdziale 10.).



                          Lista diagnostyczna
                          W tym rozdziale podsumowano najczęściej występujące
                          problemy z serwerem Apache.




            58
Lista diagnostyczna




                                                               ROZDZIAŁ 2
Uruchamianie serwera
Jeśli serwer nie uruchamia się, należy sprawdzić w pliku
dziennika, czym jest to spowodowane.

Jeśli pod określonym adresem działa inny serwer, należy
wybrać inną kombinację adresu i portu dla nowego serwera.

Jeśli użytkownik nie ma wystarczających uprawnień, aby
powiązać serwer z żądanym portem, powinien urucho-
mić Apache’a z konta superużytkownika (root), aby uzy-




                                                               ROZWIĄZYWANIE PROBLEMÓW
skać dostęp do uprzywilejowanych portów.

Jeśli Apache nie może otworzyć pliku konfiguracyjnego
albo dziennika, należy sprawdzić, czy pliki należą do
użytkownika, który zainstalował Apache’a, i czy ma on
prawo do zapisywania tych plików.


Łączenie się z serwerem
Jeśli próba dostępu do strony kończy się niepowodze-
niem, najpierw trzeba ustalić, czy problem jest spowodo-
wany przez serwer, sieć czy też przez przeglądarkę.

Najpierw należy sprawdzić, czy Apache działa. W tym
celu należy wydać polecenie ps lub netstat albo skorzy-
stać z Menedżera zadań (w Windows). Może się okazać,
że serwer w ogóle nie został uruchomiony.

Następnie należy sprawdzić, czy można połączyć się z Apa-
che’em z lokalnego komputera. W tym celu należy bez-
pośrednio połączyć się z serwerem za pomocą programu
telnet i wpisać proste żądanie.

                                                                59
Lista diagnostyczna
ROZDZIAŁ 2


                          Następnie należy sprawdzić, czy Apache używa prawi-
                          dłowej kombinacji adresu i portu. Jeśli można uzyskać
                          dostęp do serwera lokalnie, ale nie zdalnie, prawdopodob-
                          nie Apache nasłuchuje pod lokalnym adresem albo w por-
                          cie niedostępnym zdalnie. Za pomocą poleceń netstat
                          lub lsof należy ustalić, pod jakimi adresami nasłuchuje
                          Apache i czy są one poprawne.

                          Należy też sprawdzić, czy prawidłowo skonfigurowana
                          jest zapora sieciowa lub router. Jeśli Apache nasłuchuje
ROZWIĄZYWANIE PROBLEMÓW




                          pod prawidłowym adresem, ale jest niedostępny na ze-
                          wnątrz sieci, może to oznaczać, że ruch do serwera jest
                          blokowany. Łączność między hostami można sprawdzić
                          za pomocą polecenia traceroute (tracert w Windows).
                          Wiele systemów operacyjnych domyślnie blokuje dostęp
                          z zewnątrz z wyjątkiem kilku wybranych portów. Sposób
                          rozwiązania tego problemu zależy od dystrybucji. Na przy-
                          kład w systemach Fedora można użyć narzędzia system-
                          config-securitylevel, a w Windows — programu Za-
                          pora systemu Windows znajdującego się w Panelu stero-
                          wania.

                          Wreszcie jeśli połączenie z serwerem jest nawiązywane za
                          pośrednictwem Secure Sockets Layer (SSL — rozdział 7.),
                          a użytkownik korzysta ze starszej przeglądarki albo nie-
                          typowej konfiguracji, należy poszukać w dzienniku błędów
                          komunikatów świadczących o problemach z szyfrowaniem
                          danych SSL.




            60
Lista diagnostyczna




                                                                 ROZDZIAŁ 2
Nie znaleziono dokumentu
Jeśli można uzyskać dostęp do serwera, ale pojawia się
błąd Document not found, należy sprawdzić, czy dokument
rzeczywiście istnieje w systemie plików.

Następnie należy sprawdzić, czy żądanie dotarło do ser-
wera. W tym celu należy wyszukać w pliku access_log
żądania pochodzące od określonego hosta. Jeśli w syste-
mie jednocześnie działa kilka egzemplarzy Apache’a, klient




                                                                 ROZWIĄZYWANIE PROBLEMÓW
mógł nawiązać połączenie z niewłaściwym serwerem.

Potem należy sprawdzić, czy dyrektywy Alias wskazują
właściwą lokację — to znaczy katalog, w którym przecho-
wywany jest docelowy dokument. Należy upewnić się,
czy nazwa katalogu została wpisana prawidłowo i czy nie
został on przypadkowo usunięty.

Wreszcie należy zbadać nieprawidłowe przekierowania,
w tym „końcowe ukośniki” oraz problemy z dyrektywą
ServerName opisane wcześniej w tym rozdziale.


Zabroniony dostęp
Jeśli dokument istnieje, ale dostęp do niego jest zabronio-
ny, może to wynikać z kilku często popełnianych pomyłek.

Należy sprawdzić, czy Apache ma uprawnienia do odczytu
pliku.

Należy sprawdzić, czy właściciel procesu Apache’a ma
uprawnienia do odczytu i wyświetlania zawartości wszyst-
kich katalogów na ścieżce wiodącej do pliku.
                                                                  61
Lista diagnostyczna
ROZDZIAŁ 2


                          Należy sprawdzić, czy użytkownik próbuje uzyskać do-
                          stęp do katalogu bez pliku indeksu, a tworzenie indek-
                          sów katalogów jest zabronione w pliku konfiguracyjnym
                          Apache’a.

                          Należy upewnić się, że spełnione są wszystkie wymaga-
                          nia określone przez dyrektywy kontroli dostępu w pliku
                          konfiguracyjnym Apache’a.

                          Jeśli użytkownik próbuje uzyskać dostęp do skryptu CGI,
                          należy sprawdzić, czy skrypt ma ustawione prawa do od-
ROZWIĄZYWANIE PROBLEMÓW




                          czytu i wykonania.


                          Wewnętrzne błędy serwera
                          Jeśli podczas próby wczytania strony w przeglądarce poja-
                          wia się komunikat Internal server error, należy po-
                          szukać przyczyny w pliku error_log.

                          Należy zadać sobie następujące pytania: Czy użytkownik
                          próbuje uzyskać dostęp do skryptu CGI? Czy skrypt ma
                          właściwe prawa do odczytu i wykonania? Czy ścieżka do
                          interpretera w pierwszym wierszu skryptu jest prawi-
                          dłowa? Czy jest on oznaczony jako skrypt CGI przez dy-
                          rektywę ScriptAlias lub podobną?


                          Jeśli wszystko inne zawiedzie...
                          W niniejszym rozdziale omówiono tylko najczęstsze pro-
                          blemy, z którymi mają do czynienia użytkownicy Apa-
                          che’a. Jeśli ktoś napotka inny problem, pierwszym krokiem

            62
Lista diagnostyczna




                                                                 ROZDZIAŁ 2
powinno być poszukanie informacji w dziennikach błędów.
Aby uzyskać więcej wskazówek, można zwiększyć po-
ziom LogLevel. Następnie należy przeszukać dokumen-
tację Apache’a, listy dyskusyjne oraz bazę usterek. Wreszcie
można wysłać pytanie na listę dyskusyjną użytkowników
Apache’a, przestrzegając dwóch reguł — najpierw należy
samemu „odrobić zadanie domowe”, a następnie podać
wystarczająco dużo informacji, aby inni mogli pomóc.
Na listę można zapisać się pod adresem:




                                                                 ROZWIĄZYWANIE PROBLEMÓW
 http://httpd.apache.org/lists.html#http-users




                                                                  63

Weitere ähnliche Inhalte

Was ist angesagt?

PHP, MySQL i Apache dla każdego. Wydanie III
PHP, MySQL i Apache dla każdego. Wydanie IIIPHP, MySQL i Apache dla każdego. Wydanie III
PHP, MySQL i Apache dla każdego. Wydanie IIIWydawnictwo Helion
 
Red Hat Linux 7.3. Księga eksperta
Red Hat Linux 7.3. Księga ekspertaRed Hat Linux 7.3. Księga eksperta
Red Hat Linux 7.3. Księga ekspertaWydawnictwo Helion
 
Serwery internetowe Red Hat Linux
Serwery internetowe Red Hat LinuxSerwery internetowe Red Hat Linux
Serwery internetowe Red Hat LinuxWydawnictwo Helion
 
Apache. Zabezpieczenia aplikacji i serwerów WWW
Apache. Zabezpieczenia aplikacji i serwerów WWWApache. Zabezpieczenia aplikacji i serwerów WWW
Apache. Zabezpieczenia aplikacji i serwerów WWWWydawnictwo Helion
 
OpenBSD. Podstawy administracji systemem
OpenBSD. Podstawy administracji systememOpenBSD. Podstawy administracji systemem
OpenBSD. Podstawy administracji systememWydawnictwo Helion
 
FreeBSD 7. Instalacja i konfiguracja
FreeBSD 7. Instalacja i konfiguracjaFreeBSD 7. Instalacja i konfiguracja
FreeBSD 7. Instalacja i konfiguracjaWydawnictwo Helion
 
Oracle Database 10g. Nowe możliwości
Oracle Database 10g. Nowe możliwościOracle Database 10g. Nowe możliwości
Oracle Database 10g. Nowe możliwościWydawnictwo Helion
 
100 sposobów na Linux Server. Wskazówki i narzędzia dotyczące integracji, mon...
100 sposobów na Linux Server. Wskazówki i narzędzia dotyczące integracji, mon...100 sposobów na Linux Server. Wskazówki i narzędzia dotyczące integracji, mon...
100 sposobów na Linux Server. Wskazówki i narzędzia dotyczące integracji, mon...Wydawnictwo Helion
 
PHP, Microsoft IIS i SQL Server. Projektowanie i programowanie baz danych
PHP, Microsoft IIS i SQL Server. Projektowanie i programowanie baz danychPHP, Microsoft IIS i SQL Server. Projektowanie i programowanie baz danych
PHP, Microsoft IIS i SQL Server. Projektowanie i programowanie baz danychWydawnictwo Helion
 

Was ist angesagt? (20)

sendmail. Receptury
sendmail. Recepturysendmail. Receptury
sendmail. Receptury
 
Flash i PHP5. Podstawy
Flash i PHP5. PodstawyFlash i PHP5. Podstawy
Flash i PHP5. Podstawy
 
SQL. Szybki start
SQL. Szybki startSQL. Szybki start
SQL. Szybki start
 
Rozbudowa i naprawa serwerów
Rozbudowa i naprawa serwerówRozbudowa i naprawa serwerów
Rozbudowa i naprawa serwerów
 
PHP, MySQL i Apache dla każdego. Wydanie III
PHP, MySQL i Apache dla każdego. Wydanie IIIPHP, MySQL i Apache dla każdego. Wydanie III
PHP, MySQL i Apache dla każdego. Wydanie III
 
Red Hat Linux 7.3. Księga eksperta
Red Hat Linux 7.3. Księga ekspertaRed Hat Linux 7.3. Księga eksperta
Red Hat Linux 7.3. Księga eksperta
 
Serwery internetowe Red Hat Linux
Serwery internetowe Red Hat LinuxSerwery internetowe Red Hat Linux
Serwery internetowe Red Hat Linux
 
Apache. Zabezpieczenia aplikacji i serwerów WWW
Apache. Zabezpieczenia aplikacji i serwerów WWWApache. Zabezpieczenia aplikacji i serwerów WWW
Apache. Zabezpieczenia aplikacji i serwerów WWW
 
Red Hat Linux 8. Biblia
Red Hat Linux 8. BibliaRed Hat Linux 8. Biblia
Red Hat Linux 8. Biblia
 
JDBC. Leksykon kieszonkowy
JDBC. Leksykon kieszonkowyJDBC. Leksykon kieszonkowy
JDBC. Leksykon kieszonkowy
 
OpenBSD. Podstawy administracji systemem
OpenBSD. Podstawy administracji systememOpenBSD. Podstawy administracji systemem
OpenBSD. Podstawy administracji systemem
 
FreeBSD 7. Instalacja i konfiguracja
FreeBSD 7. Instalacja i konfiguracjaFreeBSD 7. Instalacja i konfiguracja
FreeBSD 7. Instalacja i konfiguracja
 
Oracle Database 10g. Nowe możliwości
Oracle Database 10g. Nowe możliwościOracle Database 10g. Nowe możliwości
Oracle Database 10g. Nowe możliwości
 
100 sposobów na BSD
100 sposobów na BSD100 sposobów na BSD
100 sposobów na BSD
 
100 sposobów na Linux Server. Wskazówki i narzędzia dotyczące integracji, mon...
100 sposobów na Linux Server. Wskazówki i narzędzia dotyczące integracji, mon...100 sposobów na Linux Server. Wskazówki i narzędzia dotyczące integracji, mon...
100 sposobów na Linux Server. Wskazówki i narzędzia dotyczące integracji, mon...
 
Perl. Od podstaw
Perl. Od podstawPerl. Od podstaw
Perl. Od podstaw
 
Linux. Komendy i polecenia
Linux. Komendy i poleceniaLinux. Komendy i polecenia
Linux. Komendy i polecenia
 
Cisco. Receptury
Cisco. RecepturyCisco. Receptury
Cisco. Receptury
 
PHP, Microsoft IIS i SQL Server. Projektowanie i programowanie baz danych
PHP, Microsoft IIS i SQL Server. Projektowanie i programowanie baz danychPHP, Microsoft IIS i SQL Server. Projektowanie i programowanie baz danych
PHP, Microsoft IIS i SQL Server. Projektowanie i programowanie baz danych
 
Java. Rozmówki
Java. RozmówkiJava. Rozmówki
Java. Rozmówki
 

Andere mochten auch

TCP/IP. Księga eksperta. Wydanie II
TCP/IP. Księga eksperta. Wydanie IITCP/IP. Księga eksperta. Wydanie II
TCP/IP. Księga eksperta. Wydanie IIWydawnictwo Helion
 
Access 2003 PL. Ćwiczenia praktyczne. Wydanie II
Access 2003 PL. Ćwiczenia praktyczne. Wydanie IIAccess 2003 PL. Ćwiczenia praktyczne. Wydanie II
Access 2003 PL. Ćwiczenia praktyczne. Wydanie IIWydawnictwo Helion
 
Oracle8. Programowanie w języku PL/SQL
Oracle8. Programowanie w języku PL/SQLOracle8. Programowanie w języku PL/SQL
Oracle8. Programowanie w języku PL/SQLWydawnictwo Helion
 
Kurs tworzenia stron internetowych
Kurs tworzenia stron internetowychKurs tworzenia stron internetowych
Kurs tworzenia stron internetowychWydawnictwo Helion
 
Access 2002/XP PL dla każdego
Access 2002/XP PL dla każdegoAccess 2002/XP PL dla każdego
Access 2002/XP PL dla każdegoWydawnictwo Helion
 
Projektowanie serwisów WWW. Standardy sieciowe. Wydanie II
Projektowanie serwisów WWW. Standardy sieciowe. Wydanie IIProjektowanie serwisów WWW. Standardy sieciowe. Wydanie II
Projektowanie serwisów WWW. Standardy sieciowe. Wydanie IIWydawnictwo Helion
 
Okablowanie strukturalne sieci. Teoria i praktyka. Wydanie II
Okablowanie strukturalne sieci. Teoria i praktyka. Wydanie IIOkablowanie strukturalne sieci. Teoria i praktyka. Wydanie II
Okablowanie strukturalne sieci. Teoria i praktyka. Wydanie IIWydawnictwo Helion
 
JavaScript - przykłady. Biblia
JavaScript - przykłady. BibliaJavaScript - przykłady. Biblia
JavaScript - przykłady. BibliaWydawnictwo Helion
 
Projektowanie i analiza algorytmów
Projektowanie i analiza algorytmówProjektowanie i analiza algorytmów
Projektowanie i analiza algorytmówWydawnictwo Helion
 
PHP-Nuke. Tworzenie witryn WWW
PHP-Nuke. Tworzenie witryn WWWPHP-Nuke. Tworzenie witryn WWW
PHP-Nuke. Tworzenie witryn WWWWydawnictwo Helion
 
Perełki programowania gier. Vademecum profesjonalisty. Tom 2
Perełki programowania gier. Vademecum profesjonalisty. Tom 2Perełki programowania gier. Vademecum profesjonalisty. Tom 2
Perełki programowania gier. Vademecum profesjonalisty. Tom 2Wydawnictwo Helion
 
MySQL. Budowanie interfejsów użytkownika. Vademecum profesjonalisty
MySQL. Budowanie interfejsów użytkownika. Vademecum profesjonalistyMySQL. Budowanie interfejsów użytkownika. Vademecum profesjonalisty
MySQL. Budowanie interfejsów użytkownika. Vademecum profesjonalistyWydawnictwo Helion
 

Andere mochten auch (16)

TCP/IP. Księga eksperta. Wydanie II
TCP/IP. Księga eksperta. Wydanie IITCP/IP. Księga eksperta. Wydanie II
TCP/IP. Księga eksperta. Wydanie II
 
Access 2003 PL. Ćwiczenia praktyczne. Wydanie II
Access 2003 PL. Ćwiczenia praktyczne. Wydanie IIAccess 2003 PL. Ćwiczenia praktyczne. Wydanie II
Access 2003 PL. Ćwiczenia praktyczne. Wydanie II
 
Oracle8. Programowanie w języku PL/SQL
Oracle8. Programowanie w języku PL/SQLOracle8. Programowanie w języku PL/SQL
Oracle8. Programowanie w języku PL/SQL
 
Pajączek 5 NxG
Pajączek  5 NxGPajączek  5 NxG
Pajączek 5 NxG
 
Kurs tworzenia stron internetowych
Kurs tworzenia stron internetowychKurs tworzenia stron internetowych
Kurs tworzenia stron internetowych
 
JavaScript dla każdego
JavaScript dla każdegoJavaScript dla każdego
JavaScript dla każdego
 
Access 2002/XP PL dla każdego
Access 2002/XP PL dla każdegoAccess 2002/XP PL dla każdego
Access 2002/XP PL dla każdego
 
Projektowanie serwisów WWW. Standardy sieciowe. Wydanie II
Projektowanie serwisów WWW. Standardy sieciowe. Wydanie IIProjektowanie serwisów WWW. Standardy sieciowe. Wydanie II
Projektowanie serwisów WWW. Standardy sieciowe. Wydanie II
 
Ubuntu Linux. Ćwiczenia
Ubuntu Linux. ĆwiczeniaUbuntu Linux. Ćwiczenia
Ubuntu Linux. Ćwiczenia
 
Okablowanie strukturalne sieci. Teoria i praktyka. Wydanie II
Okablowanie strukturalne sieci. Teoria i praktyka. Wydanie IIOkablowanie strukturalne sieci. Teoria i praktyka. Wydanie II
Okablowanie strukturalne sieci. Teoria i praktyka. Wydanie II
 
JavaScript - przykłady. Biblia
JavaScript - przykłady. BibliaJavaScript - przykłady. Biblia
JavaScript - przykłady. Biblia
 
Projektowanie i analiza algorytmów
Projektowanie i analiza algorytmówProjektowanie i analiza algorytmów
Projektowanie i analiza algorytmów
 
PHP-Nuke. Tworzenie witryn WWW
PHP-Nuke. Tworzenie witryn WWWPHP-Nuke. Tworzenie witryn WWW
PHP-Nuke. Tworzenie witryn WWW
 
SQL. Ćwiczenia praktyczne
SQL. Ćwiczenia praktyczneSQL. Ćwiczenia praktyczne
SQL. Ćwiczenia praktyczne
 
Perełki programowania gier. Vademecum profesjonalisty. Tom 2
Perełki programowania gier. Vademecum profesjonalisty. Tom 2Perełki programowania gier. Vademecum profesjonalisty. Tom 2
Perełki programowania gier. Vademecum profesjonalisty. Tom 2
 
MySQL. Budowanie interfejsów użytkownika. Vademecum profesjonalisty
MySQL. Budowanie interfejsów użytkownika. Vademecum profesjonalistyMySQL. Budowanie interfejsów użytkownika. Vademecum profesjonalisty
MySQL. Budowanie interfejsów użytkownika. Vademecum profesjonalisty
 

Ähnlich wie Apache. Rozmówki

PHP5, Apache i MySQL. Od podstaw
PHP5, Apache i MySQL. Od podstawPHP5, Apache i MySQL. Od podstaw
PHP5, Apache i MySQL. Od podstawWydawnictwo Helion
 
PHP i MySQL. Dynamiczne strony WWW. Szybki start
PHP i MySQL. Dynamiczne strony WWW. Szybki startPHP i MySQL. Dynamiczne strony WWW. Szybki start
PHP i MySQL. Dynamiczne strony WWW. Szybki startWydawnictwo Helion
 
PHP i MySQL. Witryna WWW oparta na bazie danych. Wydanie III
PHP i MySQL. Witryna WWW oparta na bazie danych. Wydanie IIIPHP i MySQL. Witryna WWW oparta na bazie danych. Wydanie III
PHP i MySQL. Witryna WWW oparta na bazie danych. Wydanie IIIWydawnictwo Helion
 
Po prostu PHP. Techniki zaawansowane
Po prostu PHP. Techniki zaawansowanePo prostu PHP. Techniki zaawansowane
Po prostu PHP. Techniki zaawansowaneWydawnictwo Helion
 
Hack Proofing Linux. Edycja polska
Hack Proofing Linux. Edycja polskaHack Proofing Linux. Edycja polska
Hack Proofing Linux. Edycja polskaWydawnictwo Helion
 
Windows Server 2003. Podręcznik administratora
Windows Server 2003. Podręcznik administratoraWindows Server 2003. Podręcznik administratora
Windows Server 2003. Podręcznik administratoraWydawnictwo Helion
 
PHP i MySQL. Dynamiczne strony WWW. Szybki start. Wydanie II
PHP i MySQL. Dynamiczne strony WWW. Szybki start. Wydanie IIPHP i MySQL. Dynamiczne strony WWW. Szybki start. Wydanie II
PHP i MySQL. Dynamiczne strony WWW. Szybki start. Wydanie IIWydawnictwo Helion
 
Serwisy internetowe. Programowanie
Serwisy internetowe. ProgramowanieSerwisy internetowe. Programowanie
Serwisy internetowe. ProgramowanieWydawnictwo Helion
 
Windows XP. Komendy i polecenia. Praktyczne przykłady
Windows XP. Komendy i polecenia. Praktyczne przykładyWindows XP. Komendy i polecenia. Praktyczne przykłady
Windows XP. Komendy i polecenia. Praktyczne przykładyWydawnictwo Helion
 
Windows Server 2003. Rejestr systemu
Windows Server 2003. Rejestr systemuWindows Server 2003. Rejestr systemu
Windows Server 2003. Rejestr systemuWydawnictwo Helion
 
Oracle9i. Podręcznik administratora baz danych
Oracle9i. Podręcznik administratora baz danychOracle9i. Podręcznik administratora baz danych
Oracle9i. Podręcznik administratora baz danychWydawnictwo Helion
 
SUSE Linux Enterprise Server. Administracja usługami serwera. Księga eksperta
SUSE Linux Enterprise Server. Administracja usługami serwera. Księga ekspertaSUSE Linux Enterprise Server. Administracja usługami serwera. Księga eksperta
SUSE Linux Enterprise Server. Administracja usługami serwera. Księga ekspertaWydawnictwo Helion
 
Perl. Testowanie. Zapiski programisty
Perl. Testowanie. Zapiski programistyPerl. Testowanie. Zapiski programisty
Perl. Testowanie. Zapiski programistyWydawnictwo Helion
 
ASP.NET 2.0. Gotowe rozwiązania
ASP.NET 2.0. Gotowe rozwiązaniaASP.NET 2.0. Gotowe rozwiązania
ASP.NET 2.0. Gotowe rozwiązaniaWydawnictwo Helion
 
Bazy danych SQL. Teoria i praktyka
Bazy danych SQL. Teoria i praktykaBazy danych SQL. Teoria i praktyka
Bazy danych SQL. Teoria i praktykaWydawnictwo Helion
 

Ähnlich wie Apache. Rozmówki (20)

PHP5, Apache i MySQL. Od podstaw
PHP5, Apache i MySQL. Od podstawPHP5, Apache i MySQL. Od podstaw
PHP5, Apache i MySQL. Od podstaw
 
PHP i MySQL. Dynamiczne strony WWW. Szybki start
PHP i MySQL. Dynamiczne strony WWW. Szybki startPHP i MySQL. Dynamiczne strony WWW. Szybki start
PHP i MySQL. Dynamiczne strony WWW. Szybki start
 
PHP i MySQL. Witryna WWW oparta na bazie danych. Wydanie III
PHP i MySQL. Witryna WWW oparta na bazie danych. Wydanie IIIPHP i MySQL. Witryna WWW oparta na bazie danych. Wydanie III
PHP i MySQL. Witryna WWW oparta na bazie danych. Wydanie III
 
Po prostu PHP. Techniki zaawansowane
Po prostu PHP. Techniki zaawansowanePo prostu PHP. Techniki zaawansowane
Po prostu PHP. Techniki zaawansowane
 
Hack Proofing Linux. Edycja polska
Hack Proofing Linux. Edycja polskaHack Proofing Linux. Edycja polska
Hack Proofing Linux. Edycja polska
 
Perl
PerlPerl
Perl
 
Windows Server 2003. Podręcznik administratora
Windows Server 2003. Podręcznik administratoraWindows Server 2003. Podręcznik administratora
Windows Server 2003. Podręcznik administratora
 
PHP i MySQL. Dynamiczne strony WWW. Szybki start. Wydanie II
PHP i MySQL. Dynamiczne strony WWW. Szybki start. Wydanie IIPHP i MySQL. Dynamiczne strony WWW. Szybki start. Wydanie II
PHP i MySQL. Dynamiczne strony WWW. Szybki start. Wydanie II
 
Praktyczny kurs asemblera
Praktyczny kurs asembleraPraktyczny kurs asemblera
Praktyczny kurs asemblera
 
Serwisy internetowe. Programowanie
Serwisy internetowe. ProgramowanieSerwisy internetowe. Programowanie
Serwisy internetowe. Programowanie
 
Windows XP. Komendy i polecenia. Praktyczne przykłady
Windows XP. Komendy i polecenia. Praktyczne przykładyWindows XP. Komendy i polecenia. Praktyczne przykłady
Windows XP. Komendy i polecenia. Praktyczne przykłady
 
Windows Server 2003. Rejestr systemu
Windows Server 2003. Rejestr systemuWindows Server 2003. Rejestr systemu
Windows Server 2003. Rejestr systemu
 
Oracle9i. Podręcznik administratora baz danych
Oracle9i. Podręcznik administratora baz danychOracle9i. Podręcznik administratora baz danych
Oracle9i. Podręcznik administratora baz danych
 
SUSE Linux Enterprise Server. Administracja usługami serwera. Księga eksperta
SUSE Linux Enterprise Server. Administracja usługami serwera. Księga ekspertaSUSE Linux Enterprise Server. Administracja usługami serwera. Księga eksperta
SUSE Linux Enterprise Server. Administracja usługami serwera. Księga eksperta
 
Perl. Testowanie. Zapiski programisty
Perl. Testowanie. Zapiski programistyPerl. Testowanie. Zapiski programisty
Perl. Testowanie. Zapiski programisty
 
JavaScript. Projekty
JavaScript. ProjektyJavaScript. Projekty
JavaScript. Projekty
 
PHP5 i MySQL. Biblia
PHP5 i MySQL. BibliaPHP5 i MySQL. Biblia
PHP5 i MySQL. Biblia
 
ASP.NET 2.0. Gotowe rozwiązania
ASP.NET 2.0. Gotowe rozwiązaniaASP.NET 2.0. Gotowe rozwiązania
ASP.NET 2.0. Gotowe rozwiązania
 
Bazy danych SQL. Teoria i praktyka
Bazy danych SQL. Teoria i praktykaBazy danych SQL. Teoria i praktyka
Bazy danych SQL. Teoria i praktyka
 
PHP w mgnieniu oka
PHP w mgnieniu okaPHP w mgnieniu oka
PHP w mgnieniu oka
 

Mehr von Wydawnictwo Helion

Tworzenie filmów w Windows XP. Projekty
Tworzenie filmów w Windows XP. ProjektyTworzenie filmów w Windows XP. Projekty
Tworzenie filmów w Windows XP. ProjektyWydawnictwo Helion
 
Blog, więcej niż internetowy pamiętnik
Blog, więcej niż internetowy pamiętnikBlog, więcej niż internetowy pamiętnik
Blog, więcej niż internetowy pamiętnikWydawnictwo Helion
 
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczne
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktycznePozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczne
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczneWydawnictwo Helion
 
E-wizerunek. Internet jako narzędzie kreowania image&#39;u w biznesie
E-wizerunek. Internet jako narzędzie kreowania image&#39;u w biznesieE-wizerunek. Internet jako narzędzie kreowania image&#39;u w biznesie
E-wizerunek. Internet jako narzędzie kreowania image&#39;u w biznesieWydawnictwo Helion
 
Microsoft Visual C++ 2008. Tworzenie aplikacji dla Windows
Microsoft Visual C++ 2008. Tworzenie aplikacji dla WindowsMicrosoft Visual C++ 2008. Tworzenie aplikacji dla Windows
Microsoft Visual C++ 2008. Tworzenie aplikacji dla WindowsWydawnictwo Helion
 
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie II
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie IICo potrafi Twój iPhone? Podręcznik użytkownika. Wydanie II
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie IIWydawnictwo Helion
 
Makrofotografia. Magia szczegółu
Makrofotografia. Magia szczegółuMakrofotografia. Magia szczegółu
Makrofotografia. Magia szczegółuWydawnictwo Helion
 
Java. Efektywne programowanie. Wydanie II
Java. Efektywne programowanie. Wydanie IIJava. Efektywne programowanie. Wydanie II
Java. Efektywne programowanie. Wydanie IIWydawnictwo Helion
 
Ajax, JavaScript i PHP. Intensywny trening
Ajax, JavaScript i PHP. Intensywny treningAjax, JavaScript i PHP. Intensywny trening
Ajax, JavaScript i PHP. Intensywny treningWydawnictwo Helion
 
PowerPoint 2007 PL. Seria praktyk
PowerPoint 2007 PL. Seria praktykPowerPoint 2007 PL. Seria praktyk
PowerPoint 2007 PL. Seria praktykWydawnictwo Helion
 
Serwisy społecznościowe. Budowa, administracja i moderacja
Serwisy społecznościowe. Budowa, administracja i moderacjaSerwisy społecznościowe. Budowa, administracja i moderacja
Serwisy społecznościowe. Budowa, administracja i moderacjaWydawnictwo Helion
 

Mehr von Wydawnictwo Helion (20)

Tworzenie filmów w Windows XP. Projekty
Tworzenie filmów w Windows XP. ProjektyTworzenie filmów w Windows XP. Projekty
Tworzenie filmów w Windows XP. Projekty
 
Blog, więcej niż internetowy pamiętnik
Blog, więcej niż internetowy pamiętnikBlog, więcej niż internetowy pamiętnik
Blog, więcej niż internetowy pamiętnik
 
Access w biurze i nie tylko
Access w biurze i nie tylkoAccess w biurze i nie tylko
Access w biurze i nie tylko
 
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczne
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktycznePozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczne
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczne
 
E-wizerunek. Internet jako narzędzie kreowania image&#39;u w biznesie
E-wizerunek. Internet jako narzędzie kreowania image&#39;u w biznesieE-wizerunek. Internet jako narzędzie kreowania image&#39;u w biznesie
E-wizerunek. Internet jako narzędzie kreowania image&#39;u w biznesie
 
Microsoft Visual C++ 2008. Tworzenie aplikacji dla Windows
Microsoft Visual C++ 2008. Tworzenie aplikacji dla WindowsMicrosoft Visual C++ 2008. Tworzenie aplikacji dla Windows
Microsoft Visual C++ 2008. Tworzenie aplikacji dla Windows
 
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie II
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie IICo potrafi Twój iPhone? Podręcznik użytkownika. Wydanie II
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie II
 
Makrofotografia. Magia szczegółu
Makrofotografia. Magia szczegółuMakrofotografia. Magia szczegółu
Makrofotografia. Magia szczegółu
 
Windows PowerShell. Podstawy
Windows PowerShell. PodstawyWindows PowerShell. Podstawy
Windows PowerShell. Podstawy
 
Java. Efektywne programowanie. Wydanie II
Java. Efektywne programowanie. Wydanie IIJava. Efektywne programowanie. Wydanie II
Java. Efektywne programowanie. Wydanie II
 
JavaScript. Pierwsze starcie
JavaScript. Pierwsze starcieJavaScript. Pierwsze starcie
JavaScript. Pierwsze starcie
 
Ajax, JavaScript i PHP. Intensywny trening
Ajax, JavaScript i PHP. Intensywny treningAjax, JavaScript i PHP. Intensywny trening
Ajax, JavaScript i PHP. Intensywny trening
 
PowerPoint 2007 PL. Seria praktyk
PowerPoint 2007 PL. Seria praktykPowerPoint 2007 PL. Seria praktyk
PowerPoint 2007 PL. Seria praktyk
 
Excel 2007 PL. Seria praktyk
Excel 2007 PL. Seria praktykExcel 2007 PL. Seria praktyk
Excel 2007 PL. Seria praktyk
 
Access 2007 PL. Seria praktyk
Access 2007 PL. Seria praktykAccess 2007 PL. Seria praktyk
Access 2007 PL. Seria praktyk
 
Word 2007 PL. Seria praktyk
Word 2007 PL. Seria praktykWord 2007 PL. Seria praktyk
Word 2007 PL. Seria praktyk
 
Serwisy społecznościowe. Budowa, administracja i moderacja
Serwisy społecznościowe. Budowa, administracja i moderacjaSerwisy społecznościowe. Budowa, administracja i moderacja
Serwisy społecznościowe. Budowa, administracja i moderacja
 
AutoCAD 2008 i 2008 PL
AutoCAD 2008 i 2008 PLAutoCAD 2008 i 2008 PL
AutoCAD 2008 i 2008 PL
 
Bazy danych. Pierwsze starcie
Bazy danych. Pierwsze starcieBazy danych. Pierwsze starcie
Bazy danych. Pierwsze starcie
 
Inventor. Pierwsze kroki
Inventor. Pierwsze krokiInventor. Pierwsze kroki
Inventor. Pierwsze kroki
 

Apache. Rozmówki

  • 1. IDZ DO PRZYK£ADOWY ROZDZIA£ SPIS TREœCI Apache. Rozmówki Autorzy: Daniel Lopez, Jesus Blanco KATALOG KSI¥¯EK T³umaczenie: Grzegorz Werner ISBN: 83-246-0669-6 KATALOG ONLINE Tytu³ orygina³u: Apache Phrasebook Format: B6, stron: 272 ZAMÓW DRUKOWANY KATALOG TWÓJ KOSZYK Apache to jeden z najpopularniejszych serwerów WWW. Dostêpny nieodp³atnie na DODAJ DO KOSZYKA licencji open source jest „motorem napêdowym” ponad 70% witryn WWW w internecie. W miarê rozwoju serwera Apache jego mo¿liwoœci i z³o¿onoœæ wzros³y do tego stopnia, ¿e pocz¹tkuj¹cy u¿ytkownicy mog¹ czuæ siê przyt³oczeni sam¹ koniecznoœci¹ jego CENNIK I INFORMACJE skonfigurowania. W³aœciwe dostrojenie dzia³ania serwera wymaga modyfikowania plików konfiguracyjnych i odpowiedniego dobrania parametrów dyrektyw w nich zawartych. Na szczêœcie wiêkszoœæ typowych funkcji realizuje siê w podobny sposób ZAMÓW INFORMACJE O NOWOœCIACH na wszystkich platformach systemowych. Ksi¹¿ka „Apache. Rozmówki” to zestawienie najistotniejszych wiadomoœci dotycz¹cych ZAMÓW CENNIK konfigurowania serwera Apache i administrowania nim. Mo¿na tam znaleŸæ tak¿e wiele przyk³adów i konkretnych wskazówek. Przeczytaj, a dowiesz siê, jak zainstalowaæ serwer Apache w ró¿nych systemach operacyjnych oraz jak uruchomiæ go i zatrzymaæ. CZYTELNIA Nauczysz siê diagnozowaæ przyczyny niew³aœciwego dzia³ania serwera i korzystaæ z dzienników. Poznasz sposoby ³¹czenia katalogów zawieraj¹cych pliki stron WWW FRAGMENTY KSI¥¯EK ONLINE z odpowiednimi adresami URL, zabezpieczania serwera i zestawiania po³¹czeñ szyfrowanych SSL/TLS. Proste stanie siê dla Ciebie tak¿e maksymalizowanie wydajnoœci serwera. Ksi¹¿ka zawiera omówienie takich oto zagadnieñ: • instalowanie Apache’a w systemach Windows i Linux • w³¹czanie i wy³¹czanie serwera oraz jego pojedynczych modu³ów • struktura plików konfiguracyjnych • analiza dzienników serwera • odwzorowywanie adresów URL • metody uwierzytelniania u¿ytkowników • stosowanie certyfikatów SSL Wydawnictwo Helion • korzystanie z protoko³u WebDAV ul. Koœciuszki 1c • poprawa wydajnoœci Apache’a 44-100 Gliwice Dziêki niej szybko skonfigurujesz serwer Apache, a kilkusetstronicowe instrukcje tel. 032 230 98 63 obs³ugi przestan¹ Ci byæ potrzebne. e-mail: helion@helion.pl
  • 2. O autorach ......................................................................... 13 Wstęp ................................................................................ 15 1 Apache — podstawy ......................................................... 17 Podstawowe informacje o serwerze Apache ........................... 17 Sprawdzanie, czy Apache jest już zainstalowany .................... 19 Instalowanie serwera Apache 1.3 w Linuksie i Uniksie ........... 21 Instalowanie serwera Apache 2.0 w Linuksie i Uniksie ........... 22 Instalowanie serwera Apache w Windows ............................. 23 Podstawowe informacje o pliku konfiguracyjnym ................... 24 Używanie wielu plików konfiguracyjnych ............................... 26 Uruchamianie, zatrzymywanie i restartowanie serwera Apache ... 27 Zmiana adresu i portu używanego przez serwer Apache ........ 29 Zmiana użytkownika, z którego przywilejami działa serwer Apache ........................................................... 30 Określanie nazwy serwera ..................................................... 31 Określanie ikony strony WWW ............................................... 32 Ustalanie dostępnych modułów serwera ................................ 32 Włączanie i wyłączanie pojedynczych modułów ..................... 33 Dodawanie modułów bez rekompilowania serwera Apache ... 34 Publikowanie treści ................................................................ 36
  • 3. Spis treści 2 Rozwiązywanie problemów ..............................................41 Pomocy! Mój serwer nie działa! ............................................. 41 Dziennik błędów .................................................................... 42 Rejestrowanie zdarzeń przez syslog ........................................ 43 Kontrolowanie ilości rejestrowanych informacji ...................... 43 Testowanie konfiguracji serwera Apache ................................ 45 Testowanie serwera Apache z wiersza poleceń ...................... 45 Sprawdzanie, czy serwer Apache działa .................................. 47 Inne sposoby zatrzymywania serwera Apache ........................ 48 Diagnozowanie serwera Apache za pomocą modułów ........... 50 Błędy podczas uruchamiania serwera ..................................... 51 Błędy odmowy dostępu .......................................................... 54 Wewnętrzne błędy serwera .................................................... 55 Dodatkowe pliki dziennika błędów ......................................... 57 Przekierowania nie działają .................................................... 58 Lista diagnostyczna ................................................................ 58 3 Dzienniki i monitorowanie ................................................65 Rejestrowanie żądań w serwerze Apache ............................... 65 Domyślne pliki dziennika serwera Apache .............................. 66 Tworzenie formatów dziennika .............................................. 66 Tworzenie własnego pliku dziennika ...................................... 68 Przekierowywanie dzienników do zewnętrznego programu .... 69 Warunkowe rejestrowanie żądań ........................................... 70 Monitorowanie stron wskazujących witrynę ........................... 71 Monitorowanie serwera Apache za pomocą modułu mod_status ..71 Monitorowanie serwera Apache za pomocą SNMP ................. 72 Analizowanie dzienników za pomocą narzędzi open source ... 74 Monitorowanie dzienników w czasie rzeczywistym ................ 74 Rejestrowanie żądań w bazie danych ..................................... 75 Rotacja i archiwizowanie dzienników ...................................... 76 4
  • 4. Spis treści Odwzorowywanie adresów IP ................................................ 77 Przetwarzanie zarejestrowanych adresów IP .......................... 78 Automatyczne restartowanie serwera Apache w razie awarii .... 79 Scalanie i dzielenie plików dziennika ...................................... 80 Prowadzenie oddzielnego dziennika dla każdego hosta wirtualnego ............................................ 81 Często spotykane wpisy dziennika ......................................... 82 4 Odwzorowywanie adresów URL i treść dynamiczna ......... 85 Odwzorowywanie adresów URL .............................................. 85 Odwzorowywanie adresów URL na pliki za pomocą dyrektywy Alias ...................................... 86 Odwzorowywanie wzorców URL na pliki za pomocą dyrektywy AliasMatch ............................ 87 Przekierowywanie żądań do innej lokacji ............................... 87 Przekierowywanie żądań do najnowszej wersji pliku ............... 88 Przekierowywanie nieudanych lub nieautoryzowanych żądań ... 89 Definiowanie procedur obsługi treści ..................................... 90 Typy MIME ............................................................................ 91 Konfigurowanie typów MIME ................................................ 92 Zasady wykonywania skryptów CGI ....................................... 92 Oznaczanie zasobów jako wykonywalnych skryptów CGI ....... 93 Wiązanie skryptów z metodami HTTP i typami MIME ............. 94 Rozwiązywanie problemów z wykonywaniem skryptów CGI .. 95 Zwiększanie wydajności skryptów CGI ................................... 96 Server Side Includes ............................................................... 97 Konfigurowanie SSI ................................................................ 97 Ustawianie zmiennych środowiskowych ................................ 98 Dynamiczne ustawianie zmiennych środowiskowych ............. 99 Specjalne zmienne środowiskowe ........................................ 101 Negocjacja treści .................................................................. 101 5
  • 5. Spis treści Konfigurowanie negocjacji treści .......................................... 103 Określanie domyślnych zestawów znaków i priorytetu języków . 104 Zaawansowane odwzorowywanie adresów URL za pomocą modułu mod_rewrite ............................................ 105 Problem „końcowego ukośnika” ............................................ 106 Poprawianie pomyłek w pisowni .......................................... 107 Rozwiązywanie problemów z wielkością liter ....................... 108 Weryfikowanie stron za pomocą programu Tidy ................... 109 5 Hosting wirtualny ............................................................111 Co to jest hosting wirtualny? ................................................ 111 Co to jest hosting wirtualny oparty na adresach IP? .............. 112 Konfigurowanie hostingu wirtualnego opartego na adresach IP ..113 Co to jest hosting wirtualny oparty na nazwach? .................. 114 Konfigurowanie hostingu wirtualnego opartego na nazwach ..... 115 Co się dzieje, kiedy żądanie nie pasuje do żadnego hosta wirtualnego? ........................ 116 Konfigurowanie domyślnego hosta wirtualnego opartego na nazwie .............................. 117 Konfigurowanie domyślnego hosta wirtualnego opartego na adresie IP .......................... 118 Łączenie hostów wirtualnych opartych na nazwach i na adresach IP ................................................ 119 Diagnozowanie konfiguracji hostów wirtualnych .................. 120 Używanie SSL w połączeniu z hostami wirtualnymi opartymi na nazwach ...................... 121 Inna metoda hostingu wirtualnego ...................................... 121 Inne moduły do hostingu wirtualnego .................................. 123 Pliki konfigurujące poszczególne katalogi ............................. 124 Określanie zasięgu plików konfigurujących poszczególne katalogi ........................................................ 125 Wyłączanie plików konfigurujących poszczególne katalogi ... 126 6
  • 6. Spis treści 6 Bezpieczeństwo i kontrola dostępu ................................. 127 Stosowanie kontroli dostępu ................................................ 127 Różnice między wersjami serwera Apache ........................... 128 Uwierzytelnianie podstawowe i ze skrótem komunikatu ...... 129 Kontrola dostępu do serwera Apache ................................... 131 Konfiguracja autoryzacji i uwierzytelniania w serwerze Apache ............................................................ 132 Tworzenie bazy użytkowników ............................................ 133 Autoryzowanie użytkowników i grup za pomocą dyrektywy Require ................................. 134 Obsługa wielu kont użytkowników ...................................... 135 Zezwalanie na dostęp tylko spod określonych adresów IP .... 136 Blokowanie dostępu spod określonych adresów IP .............. 137 Łączenie metod kontroli dostępu .......................................... 138 Dostosowywanie strony odmowy dostępu ........................... 138 Oddawanie kontroli w ręce użytkowników ........................... 140 Blokowanie dostępu do plików systemowych i poufnych ..... 141 Ograniczanie wykonywania programów .............................. 142 Zapobieganie nadużyciom ................................................... 143 Wyłączanie listingów katalogów .......................................... 144 Zmiana nagłówka Server: ..................................................... 145 Zapobieganie tworzeniu zewnętrznych łączy do obrazów ...... 145 Ograniczanie wybranych metod HTTP .................................. 146 Ograniczanie dostępu na podstawie typu przeglądarki ......... 148 Korzystanie z sekcji Location i Directory ................................ 149 Dodatkowe moduły uwierzytelniające .................................. 149 Apache 2.2 .......................................................................... 151 Aktualizowanie zabezpieczeń serwera Apache ..................... 152 Procedura zabezpieczania serwera ....................................... 153 7
  • 7. Spis treści 7 SSL/TLS..............................................................................159 Co to jest SSL? ...................................................................... 159 Jak działa SSL? ..................................................................... 160 Kompilowanie pakietu OpenSSL ........................................... 162 Klucze szyfrowania ............................................................... 163 Tworzenie pary kluczy .......................................................... 163 Tworzenie pary kluczy chronionych hasłem .......................... 164 Usuwanie hasła z klucza ....................................................... 165 Certyfikaty ............................................................................ 165 Tworzenie wniosku o podpisanie certyfikatu ........................ 166 Wyświetlanie zawartości wniosku o podpisanie certyfikatu .. 168 Tworzenie samodzielnie podpisanego certyfikatu ................. 168 Kompilowanie serwera Apache 1.3 z obsługą SSL ................ 169 Kompilowanie serwera Apache 2.x z obsługą SSL ................. 171 Minimalna konfiguracja serwera Apache .............................. 171 Uruchamianie serwera Apache z obsługą SSL ....................... 172 SSLPassPhraseDialog ............................................................ 173 Zwiększanie wydajności SSL ................................................. 174 Realizacja wszystkich żądań z wykorzystaniem SSL ............... 175 SSL i hosty wirtualne oparte na nazwach .............................. 176 Używanie modułów uwierzytelniających w połączeniu z SSL 177 Komunikaty ostrzegawcze wyświetlane podczas dostępu do witryny obsługującej SSL .................... 177 Tworzenie certyfikatów klienta ............................................. 178 Uwierzytelnianie z wykorzystaniem certyfikatów klienta ....... 179 Rozwiązania alternatywne ................................................... 180 Testowanie witryn SSL z wiersza poleceń ............................. 181 Rozwiązywanie problemów z nieprawidłowymi implementacjami SSL ........................... 181 8
  • 8. Spis treści Złożona kontrola dostępu z wykorzystaniem modułu mod_ssl .................................... 182 Powiązane rozdziały ............................................................ 183 8 Publikowanie treści za pomocą DAV ................................ 185 Publikowanie treści w serwerze Apache ............................... 185 Wprowadzenie do WebDAV ................................................ 186 Korzyści związane z użyciem modułu mod_dav .................... 187 WebDAV i protokół HTTP ..................................................... 188 Instalowanie modułu mod_dav w serwerze Apache 2.0 ....... 189 Instalowanie modułu mod_dav w serwerze Apache 1.3 ....... 190 Podstawowa konfiguracja WebDAV ..................................... 191 Zabezpieczanie konfiguracji WebDAV .................................. 191 Dostęp do zasobów DAV z programów Microsoft Office ....... 193 Dostęp do zasobów DAV z systemu Microsoft Windows ...... 194 Dostęp do zasobów DAV z przeglądarki Firefox .................... 196 Dostęp do zasobów DAV z wiersza poleceń ......................... 197 Obsługa błędnie działających klientów ................................. 198 Moduł mod_spelling i DAV .................................................. 199 Treść dynamiczna i DAV ....................................................... 199 Włączanie stron użytkowników ............................................ 200 Inny sposób obsługi stron użytkowników ............................. 202 Rozwiązywanie problemów z plikiem DAVLockDB ................ 202 9 Wydajność i skalowalność ............................................... 205 Dostrajanie serwera Apache ................................................. 205 Wydajność i skalowalność ................................................... 206 Dostrajanie sprzętu .............................................................. 206 Zwiększanie limitów systemu operacyjnego ......................... 207 Zwiększanie liczby procesów ................................................ 208 Zwiększanie liczby deskryptorów plików .............................. 209 9
  • 9. Spis treści Kontrolowanie zewnętrznych procesów ................................ 210 Zwiększanie wydajności systemu plików .............................. 211 Dostrajanie ustawień sieci i śledzenia stanu serwera ............ 214 Zapobieganie nadużyciom .................................................... 217 Ograniczanie pasma i liczby połączeń ................................... 218 Blokowanie robotów ............................................................ 220 Pośredniki odwrotne i urządzenia do równoważenia obciążenia ..................................................221 Buforowanie i kompresja ...................................................... 222 Optymalizacje specyficznych modułów ................................. 223 Alternatywne serwery .......................................................... 223 10 Obsługa pośredniczenia i buforowania w serwerze Apache ................................225 Zastosowanie buforowania i pośredniczenia ........................ 225 Pośredniki zwykłe i odwrotne ............................................... 226 Różnice między wersjami 1.3, 2.0 i 2.2 serwera Apache ....... 226 Włączanie obsługi modułu mod_proxy ................................. 227 Włączanie obsługi pośredniczenia zwykłego ......................... 228 Unifikowanie przestrzeni URL za pomocą pośrednika odwrotnego .................................... 229 Ukrywanie serwerów zaplecza ............................................. 230 Blokowanie pośredniczenia odwrotnego w przypadku wybranych adresów URL ............................... 231 Zwiększanie wydajności ....................................................... 232 Wspomaganie przetwarzania SSL ......................................... 233 Przekazywanie informacji o pośredniczeniu w nagłówkach ..... 234 Manipulowanie nagłówkami ................................................ 235 Konfigurowanie pośrednika buforującego ............................ 236 Buforowanie w serwerze Apache 2 ...................................... 237 Równoważenie obciążenia ................................................... 238 10
  • 10. Spis treści Łączenie się z serwerem Tomcat ............................................. 239 Inne pośredniki .................................................................... 240 Przezroczyste pośredniki HTTP .............................................. 241 11 Moduły wieloprocesowe i protokołowe .......................... 243 Ewolucja architektury serwera Apache ................................. 243 Wybór modułu MPM ............................................................ 244 Procesowe moduły MPM ..................................................... 245 Konfigurowanie modułu MPM prefork ................................. 246 Wątkowe i hybrydowe moduły MPM ................................... 247 Konfigurowanie modułu MPM worker .................................. 248 Inne moduły MPM ............................................................... 249 Filtry w serwerze Apache 2 .................................................. 250 Apache jako serwer FTP ....................................................... 251 Apache jako serwer POP3 .................................................... 252 Kompresowanie treści „w locie” ........................................... 253 Skorowidz ....................................................................... 255 11
  • 11. tym rozdziale zostaną szczegółowo opisane najczę- ściej spotykane problemy — na przykład błędne ustawienia praw dostępu do plików i brak możliwości powiązania serwera z określonym portem — oraz ich rozwiązania. Omówionych zostanie też kilka narzędzi i zasobów po- zwalających zidentyfikować przyczyny problemów. Pomocy! Mój serwer nie działa! Wiadomo, że nie ma nic bardziej frustrującego, niż przerwa w lekturze technicznej książki wymuszona zmaganiami z błędnie działającym oprogramowaniem. Nie chcemy, aby była to jedna z takich książek! Właśnie dlatego poru- szamy te kwestie na samym początku. Z tej przyczyny niniejszy rozdział opisuje zarówno zagadnienia podsta- wowe, jak i zaawansowane; początkujący użytkownicy Apache’a mogą opuścić te, które ich nie dotyczą.
  • 12. Dziennik błędów ROZDZIAŁ 2 Dziennik błędów ErrorLog logs/error_log Plik dziennika błędów przechowuje informacje o ważnych zdarzeniach, w tym o uruchomieniach, restartach, błędach w działaniu serwera oraz zabronionych albo nieprawidło- wych żądaniach. Jest to pierwsze miejsce, w które należy zajrzeć podczas rozwiązywania problemów z serwerem. ROZWIĄZYWANIE PROBLEMÓW W systemach uniksowych plik error_log jest umieszczany domyślnie w podkatalogu logs/ katalogu instalacyjnego Apache’a. Jeśli instalacja Apache’a stanowi część dystry- bucji systemu, plik może znajdować się w innym miejscu, najczęściej var/log/httpd. W Windows plik nosi nazwę error.log i również znaj- duje się w podkatalogu logs. Za pomocą dyrektywy ErrorLog można określić ścieżkę do pliku dziennika. Można również podać ścieżkę do pro- gramu i poprzedzić ją symbolem potoku (|), aby błędy były wysyłane do innego programu. Tę często używaną technikę opisano w rozdziale 3. Zwróćmy uwagę, że plik dziennika błędów zostanie utwo- rzony dopiero po pierwszym uruchomieniu Apache’a! 42
  • 13. Rejestrowanie zdarzeń przez syslog ROZDZIAŁ 2 Rejestrowanie zdarzeń przez syslog ErrorLog syslog ErrorLog syslog:local7 W systemach uniksowych można określić syslog jako argument dyrektywy ErrorLog, aby Apache rejestrował błędy za pomocą demona syslog. Pokazano to w po- ROZWIĄZYWANIE PROBLEMÓW wyższym przykładzie. Opcjonalnie można dołączyć kanał (domyślnie local7). Kanał syslog to pole informacyjne związane z komunikatem syslog, które wskazuje źródło komunikatu. Kanały od local0 do local10 są zarezer- wowane na użytek administratora i aplikacji takich jak Apache. Kontrolowanie ilości rejestrowanych informacji LogLevel notice Informacje o zdarzeniach generowane przez Apache’a mają różne stopnie ważności. Dyrektywa LogLevel w połą- czeniu z argumentami wymienionymi w tabeli 2.1 pozwala wybrać rodzaj rejestrowanych komunikatów. Rejestrowa- ne będą tylko błędy o określonym i wyższym poziomie ważności. 43
  • 14. Kontrolowanie ilości rejestrowanych informacji ROZDZIAŁ 2 Tabela 2.1. Opcje dyrektywy LogLevel według dokumentacji serwera Apache Ustawienie Opis Przykład emerg Poważne błędy — Child cannot open system nie nadaje lock file. Exiting. się do użytku alert Konieczna jest getpwuid: couldn't natychmiastowa determine user name reakcja from uid crit Zdarzenia socket: Failed to ROZWIĄZYWANIE PROBLEMÓW krytyczne get socket, exiting child. error Błędy Premature end of script headers. warn Ostrzeżenia Child process 1234 did not exit, sending another SIGHUP. notice Zwykłe, ale httpd: caught istotne SIGBUS, attempting informacje to dump core in... info Informacje Server seems busy. (You may need to increase StartServers, or Min/MaxSpareServers) ... debug Komunikaty Opening config diagnostyczne file... Domyślny poziom błędów warn jest odpowiedni w więk- szości instalacji Apache’a. Jeśli jednak konieczne jest zdia- gnozowanie specyficznej konfiguracji, można obniżyć po- ziom błędów aż do debug, aby uzyskać znacznie bardziej szczegółowe informacje. 44
  • 15. Testowanie konfiguracji serwera Apache ROZDZIAŁ 2 Testowanie konfiguracji serwera Apache # apachectl configtest Polecenie to pozwala zbadać plik konfiguracyjny Apache’a pod kątem problemów przed zastosowaniem go w ak- tywnym serwerze. Apache używa tej samej procedury do przetestowania konfiguracji za każdym razem, kiedy użyt- ROZWIĄZYWANIE PROBLEMÓW kownik wydaje mu polecenie restartu za pośrednictwem skryptu apachectl. Gwarantuje to, że działający serwer uruchomi się prawidłowo z nowym plikiem konfigura- cyjnym. Testowanie serwera Apache z wiersza poleceń $ telnet www.apache.org 80 Trying 192.87.106.226... Connected to ajax-l.apache.org (192.87.106.226). Escape character is '^]'. HEAD / HTTP/1.0 HTTP/1.1 200 OK Date: Sun, 04 Sep 2005 20:42:02 GMT Server: Apache/2.0.54 (Unix) mod_ssl/2.0.54 OpenSSL/0.9.7a DAV/2 SVN/1.2.0-dev Last-Modified: Sat, 03 Sep 2005 11:35:42 GMT ETag: "203a8-2de2-3ffdc7a6d3f80" Accept-Ranges: bytes Content-Length: 11746 Cache-Control: max-age=86400 45
  • 16. Testowanie serwera Apache z wiersza poleceń ROZDZIAŁ 2 Expires: Mon, 05 Sep 2005 20:42:02 GMT Connection: close Content-Type: text/html; charset=ISO-8859-1 Connection closed by foreign host. HTTP jest prostym protokołem tekstowym, więc można użyć klienta Telnetu — programu, który pozwala połą- czyć się bezpośrednio ze wskazanym komputerem i por- tem — do sprawdzenia obecności serwera w zdalnym hoście. Jeśli serwer nie odpowie, a wiadomo, że sieć jest prawidłowo skonfigurowana, oznacza to, że Apache nie ROZWIĄZYWANIE PROBLEMÓW nasłuchuje pod określonym adresem i w określonym por- cie. Technika ta bywa przydatna w środowiskach, w któ- rych niedostępna jest przeglądarka WWW, na przykład podczas zdalnego dostępu do serwera przez SSH. Jeśli na przykład można uzyskać dostęp do Apache’a w zdalnym komputerze przez adres localhost, ale nie za pomocą zdalnej przeglądarki, może to oznaczać problemy z zaporą sieciową albo nieprawidłowe ustawienie dyrektywy Listen. Należy połączyć się przez Telnet z adresem www.apache. org (albo inną witryną WWW) w porcie 80. i wpisać: HEAD / HTTP/1.0 albo: GET / HTTP/1.0 a następnie dwukrotnie nacisnąć klawisz Enter. Pojawi się odpowiedź podobna do pokazanej w powyższym przykładzie. Jeśli w systemie zainstalowana jest tekstowa przeglądarka WWW lynx, można uzyskać podobny wynik za pomocą poniższego polecenia: 46
  • 17. Sprawdzanie, czy serwer Apache działa ROZDZIAŁ 2 lynx -head -dump http://www.apache.org W rozdziale 7. zostanie opisany moduł mod_ssl, a Czy- telnicy poznają sposób łączenia się z serwerem obsługują- cym SSL za pomocą narzędzia openssl. Sprawdzanie, czy serwer Apache działa ROZWIĄZYWANIE PROBLEMÓW ps -aux | grep httpd 25297 ? S 0:00 /usr/local/www/bin/httpd -k start 15974 ? S 0:06 /usr/local/www/bin/httpd -k start 14441 ? S 0:02 /usr/local/www/bin/httpd -k start ... /usr/sbin/lsof | grep httpd |grep IPv httpd 14441 nobody 3u IPv4 136524 TCP www.example.com:http (LISTEN) httpd 25297 root 3u IPv4 136524 TCP www.example.com:http (LISTEN) httpd 30277 nobody 3u IPv4 136524 TCP www.example.com:http (LISTEN) ... netstat -ltnp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 192.168.1.151:80 0.0.0.0: * LISTEN 25297/httpd tcp 0 0 0.0.0.0:22 0.0.0.0: * LISTEN 1038/sshd 47
  • 18. Inne sposoby zatrzymywania serwera Apache ROZDZIAŁ 2 Czasem nie można połączyć się z serwerem, ale nie wia- domo, czy to serwer nie działa, czy może wystąpił jakiś problem z siecią. W systemach uniksowych dostępnych jest kilka narzędzi, które pozwalają ustalić przyczynę pro- blemu. Niektóre z nich pokazano w powyższym przykładzie. Narzędzie ps pokazuje, czy w systemie działa proces httpd. Narzędzia netstat oraz lsof pokazują adresy i porty, ROZWIĄZYWANIE PROBLEMÓW w których nasłuchuje serwer Apache. W systemie Windows można użyć Menedżera zadań Win- dows (uruchamianego przez jednoczesne naciśnięcie klawi- szy Alt+Ctrl+Delete), aby sprawdzić, czy działa proces Apache.exe. Stan serwera można również sprawdzić za pomocą programu monitorującego dołączanego do now- szych dystrybucji i działającego w zasobniku systemowym. Inne sposoby zatrzymywania serwera Apache # kill -HUP 25297 # kill -9 25297 Czasem wygodniej jest bezpośrednio wysłać sygnał do serwera za pomocą narzędzia kill zamiast używać skryptu apachectl. W tym celu należy najpierw ustalić identyfi- kator procesu działającego serwera z wykorzystaniem pro- gramów ps lub lsof. Następnie można zakończyć proces 48
  • 19. Inne sposoby zatrzymywania serwera Apache ROZDZIAŁ 2 za pomocą polecenia kill, które przyjmuje dwa argu- menty: wysyłany sygnał oraz identyfikator procesu ser- wera Apache (w tym przykładzie 25297). Sygnał KILL (albo TERM) zatrzymuje serwer, a sygnał HUP uruchamia go ponownie. Można również zastąpić nazwę sygnału jej liczbowym odpowiednikiem, jak pokazano w powyższym przykładzie. Więcej informacji można znaleźć w pod- ręczniku systemowym pod hasłem kill. W Linuksie można również wysłać sygnał do wszystkich ROZWIĄZYWANIE PROBLEMÓW procesów o nazwie httpd za pomocą polecenia killall. Aby na przykład usunąć wszystkie procesy httpd, należy wydać polecenie: # killall -KILL httpd Należy jednak zachować ostrożność, ponieważ jeśli w sys- temie działa kilka egzemplarzy Apache’a, powyższe pole- cenie usunie je wszystkie! Aby powyższe polecenia zadziałały, użytkownik musi mieć odpowiednie uprawnienia. W niemal wszystkich przy- padkach trzeba być albo superużytkownikiem, albo wła- ścicielem procesu Apache’a, żeby go zatrzymać lub uru- chomić ponownie. W systemach Windows można wymusić zamknięcie Apa- che’a za pomocą przycisku Zakończ proces w Menedżerze zadań Windows. 49
  • 20. Diagnozowanie serwera Apache za pomocą modułów ROZDZIAŁ 2 Diagnozowanie serwera Apache za pomocą modułów Istnieje kilka modułów Apache’a, które mogą pomóc pod- czas rozwiązywania problemów z konfiguracją serwera albo aplikacją WWW. Moduł mod_loopback, narzędzie do diagnozowania klien- tów WWW, po prostu odsyła do przeglądarki wszystkie ROZWIĄZYWANIE PROBLEMÓW odebrane informacje dotyczące żądania HTTP, w tym dane POST lub PUT. Moduł jest dostępny pod adresem: http://www.snert.com/Software/mod_loopback/ index.shtml Moduły mod_tee oraz mod_trace_output zapisują treść wysyłaną przez serwer. Można je znaleźć pod następują- cymi adresami: http://apache.webthing.com/mod_tee/ http://trace-output.sourceforge.net/ Moduł mod_logio wchodzący w skład Apache’a 2 zapi- suje wszystkie dane odebrane lub zwrócone przez serwer w dzienniku błędów. Wszystkie te moduły zmniejszają wydajność serwera, ale bywają bardzo przydatne, na przykład podczas analizo- wania problemów z nagłówkami albo plikami cookie. 50
  • 21. Błędy podczas uruchamiania serwera ROZDZIAŁ 2 Błędy podczas uruchamiania serwera W tym podrozdziale zostaną opisane problemy, które mogą zapobiec uruchomieniu Apache’a, oraz związane z nimi komunikaty o błędach. Błąd składni ROZWIĄZYWANIE PROBLEMÓW Syntax error on line xxx of /etc/http/httpd.conf: Invalid command 'PiidFile', perhaps misspelled or defined by a module not included in the server configuration Błąd składni oznacza, że użytkownik pomylił się podczas wpisywania dyrektywy (w tym przykładzie PidFile) al- bo że zastosował dyrektywę obsługiwaną przez moduł, który nie został dodany do serwera. Należy sprawdzić składnię pliku konfiguracyjnego w miejscu wskazanym przez komunikat o błędzie. W rozdziale 1. wyjaśniono, jak użyć dyrektywy <ifModule> do warunkowego wyłą- czania dyrektyw, aby plik konfiguracyjny mógł zostać przetworzony nawet wtedy, gdy pewien moduł jest nie- dostępny. Zajęty adres Address already in use: make_sock: could not bind to port 51
  • 22. Błędy podczas uruchamiania serwera ROZDZIAŁ 2 Powyższy błąd oznacza, że inny program używa już portu, z którym Apache próbuje się związać. Aby roz- wiązać problem, należy zatrzymać ten program przed uru- chomieniem Apache’a albo otworzyć plik konfiguracyjny httpd.conf i zmienić port, w którym Apache nasłuchuje przychodzących żądań (dyrektywy Listen i Port). W większości przypadków błąd ten występuje dlatego, że w systemie działa już inny egzemplarz serwera Apache. W Windows zdarza się, że port Apache’a jest zajęty przez ROZWIĄZYWANIE PROBLEMÓW program Internet Information Server albo Microsoft Per- sonal Web Server. Port 80. bywa również używany przez inne popularne programy, na przykład Skype. Niewystarczające uprawnienia [Mon Jan 9 20:09:50 2005] [crit] (13)Permission denied: make_sock: could not bind to port 80 Powyższy komunikat wskazuje, że użytkownik nie ma wystarczających uprawnień, aby nakazać Apache’owi zwią- zanie się z portem określonym w pliku konfiguracyjnym. W Uniksie tylko użytkownicy uprzywilejowani mogą wią- zać się z portami z zakresu 1 – 1024. Aby rozwiązać ten problem, należy zalogować się jako superużytkownik al- bo wydać polecenie su i ponownie spróbować urucho- mić serwer. Ci, którzy nie mają dostępu do konta supe- rużytkownika, mogą otworzyć plik httpd.conf i zmienić port używany przez Apache’a na wyższy niż 1024. 52
  • 23. Błędy podczas uruchamiania serwera ROZDZIAŁ 2 Niezgodny moduł module xxx is not compatible with this version of Apache Powyższy błąd występuje wtedy, gdy Apache próbuje wczytać moduł skompilowany pod kątem nowszej (lub star- szej) wersji serwera niż obecnie zainstalowana w syste- mie. Użytkownicy, którzy dysponują kodem źródłowym modułu, mogą zrekompilować go na użytek odpowiedniej ROZWIĄZYWANIE PROBLEMÓW wersji w sposób opisany w rozdziale 1. Ci, którzy nie mają kodu źródłowego albo nie mogą zrekompilować mo- dułu, a potrzebują oferowanych przez niego funkcji, mogą zainstalować nowszą (albo starszą) wersję serwera zgodną z modułem. Odwzorowywanie nazw Cannot determine hostname Kilka dyrektyw Apache’a, w tym ServerName i Listen, przyjmuje argumenty w postaci nazw hostów. Jeśli jed- nak podczas rozruchu Apache nie zdoła przetłumaczyć nazwy hosta na adres z wykorzystaniem Domain Name System (DNS) albo systemowej listy hostów, wystąpi po- wyższy błąd. Aby rozwiązać problem, należy zweryfiko- wać ustawienia DNS i /etc/hosts oraz pisownię nazw hostów w pliku httpd.conf. Jeśli to możliwe, w dyrek- tywach takich jak Listen oraz <VirtualHost> należy używać adresów IP zamiast nazw hostów. 53
  • 24. Błędy odmowy dostępu ROZDZIAŁ 2 Błąd podczas otwierania dziennika albo pliku konfiguracyjnego (13)Permission denied: httpd: could not open error log file /usr/local/apache/logs/error_log. Powyższy błąd wskazuje, że użytkownik nie ma wystar- czających uprawnień, aby odczytać plik konfiguracyjny Apa- che’a albo zapisać dane w plikach dziennika. ROZWIĄZYWANIE PROBLEMÓW Problem ten często pojawia się, kiedy serwer jest uru- chamiany przez użytkownika innego niż ten, który go skompilował i zainstalował. Należy albo uruchomić Apa- che’a z konta superużytkownika, albo użyć polecenia chmod, aby zmienić właściciela pliku podanego w komu- nikacie o błędzie. Błędy odmowy dostępu Forbidden/You don't have permission to access /xxx on this server Jeśli przeglądarka zwraca błąd 403 Forbidden/Access Denied podczas próby wczytania strony z serwera Apa- che, oznacza to, że dany adres URL podlega ograniczeniom dostępu, a żądanie nie spełnia określonych warunków. Aby rozwiązać problem, należy zmienić prawa dostępu do tre- ści WWW albo plików i upewnić się, że właściciel procesu Apache’a ma uprawnienia do odczytu i wykonania we wszystkich katalogach prowadzących do dokumentu. 54
  • 25. Wewnętrzne błędy serwera ROZDZIAŁ 2 W systemach uniksowych uprawnienia te można ustawić za pomocą polecenia chmod. Komunikat Client denied by server configuration w dzienniku błędów wskazuje, że dostępu odmówiono ze względu na dyrektywy kontrolne (takie jak Allow i Deny) w sekcjach <Directory> lub <Location> odnoszących się do danego adresu URL. Komunikat Directory index forbidden by rule wska- ROZWIĄZYWANIE PROBLEMÓW zuje, że użytkownik próbował uzyskać dostęp do katalogu, w którym nie ma pliku indeksu. Informacje o indeksowa- niu katalogów i plikach indeksu można znaleźć w opisie opcji Indexes dyrektywy Options w rozdziale 6. Options ExecCGI is off in this directory Jeśli podczas próby wykonania skryptu CGI pojawi się komunikat Options ExecCGI is off in this directory, oznacza to, że skrypt nie został zaznaczony jako wykony- walny w pliku konfiguracyjnym Apache’a albo że w da- nym katalogu nie można wykonywać skryptów. Więcej in- formacji można znaleźć w opisie dyrektyw ScriptAlias lub Options. Wewnętrzne błędy serwera Wewnętrzne błędy serwera to błędy, które uniemożliwiają Apache’owi realizację żądania. 55
  • 26. Wewnętrzne błędy serwera ROZDZIAŁ 2 Błędy segmentacji child pid exit signal Segmentation Fault (11) Błąd segmentacji występuje, gdy Apache próbuje uzyskać dostęp do obszarów pamięci należących do innych pro- cesów albo gdy w kodzie Apache’a pojawi się błędnie uformowana albo nielegalna instrukcja. Może to wyni- kać z usterek w źle napisanych albo eksperymentalnych bibliotekach lub modułach, a także z błędów sprzętowych, ROZWIĄZYWANIE PROBLEMÓW zwykle w systemowej pamięci, chipsecie, magistrali lub procesorze. Przedwczesny koniec nagłówków skryptu [error] [client 192.168.200.3] Premature end of script headers: /usr/local/aoache/cgi-bin/test-cgi Błąd ten jest spowodowany niekompletnym wykonaniem skryptu CGI. Należy upewnić się, że skrypt ma ustawio- ne prawo do wykonania i że jego pierwszy wiersz wska- zuje prawidłowy program interpretera. Błąd ten może wystąpić na przykład wtedy, gdy skrypt zaczyna się od wiersza #!/usr/local/bin/perl, a w rzeczywistości in- terpreter Perla znajduje się w pliku /usr/bin/perl. Błędy przedwczesnego końca nagłówków zazwyczaj po- jawiają się wtedy, gdy działanie skryptu zostanie prze- rwane, zanim zwróci on jakiekolwiek dane. Może to wyni- kać z wielu przyczyn, na przykład z błędów w kodzie 56
  • 27. Dodatkowe pliki dziennika błędów ROZDZIAŁ 2 albo braku bibliotek, z którymi skonsolidowany jest pro- gram. Jak wyjaśniono w rozdziale 9., w niektórych przy- padkach proces może zostać przerwany przez system ope- racyjny albo przez Apache’a, jeśli zużycie zasobów (pamięci, czasu procesora) przekroczy pewien limit. Źle uformowane nagłówki [error] [client 192.168.200.3] malformed header from script. Bad header=xxx: ROZWIĄZYWANIE PROBLEMÓW /usr/local/apache/cgi-bin/example.cgi Ten błąd występuje wtedy, gdy nagłówki generowane przez skrypt mają nieprawidłowy format (zwykle z powodu błędu programisty). Odpowiedź skryptu powinna zaczynać się od nagłówków (zera lub więcej), po których następuje pusty wiersz. Dodatkowe pliki dziennika błędów RewriteLog /usr/local/apache/logs/rewrite_log RewriteLogLevel warn SSLLog /usr/local/apache/logs/ssl_log SSLLogLevel warn ScriptLog logs/cgi_log Kilka modułów — w tym moduł SSL Apache’a 1.3, mod_ rewrite oraz mod_cgi — udostępnia własne dyrektywy do rejestrowania danych specyficznych dla modułu w od- dzielnym pliku. 57
  • 28. Przekierowania nie działają ROZDZIAŁ 2 Przekierowania nie działają UseCanonicalName off Jeśli serwer Apache staje się niedostępny, kiedy przekie- rowuje żądanie do innej strony, może to oznaczać, że kanoniczna nazwa hosta jest nieprawidłowa albo niedo- stępna na zewnątrz sieci. Jeśli na przykład dyrektywa ServerName jest ustawiona ROZWIĄZYWANIE PROBLEMÓW na localhost, 127.0.0.1 albo prywatny adres, serwer bę- dzie niedostępny, gdy przekieruje użytkownika pod adres URL oparty na tych wartościach. Żeby rozwiązać ten problem, należy podać prawidłową wartość ServerName albo ustawić dyrektywę UseCanonic- alName na off, aby samoreferencyjne adresy URL były konstruowane na podstawie nazwy hosta podanej przez klienta. Problem ten występuje często w przypadku kom- puterów znajdujących się za odwrotnym pośrednikiem (co opisano w rozdziale 10.). Lista diagnostyczna W tym rozdziale podsumowano najczęściej występujące problemy z serwerem Apache. 58
  • 29. Lista diagnostyczna ROZDZIAŁ 2 Uruchamianie serwera Jeśli serwer nie uruchamia się, należy sprawdzić w pliku dziennika, czym jest to spowodowane. Jeśli pod określonym adresem działa inny serwer, należy wybrać inną kombinację adresu i portu dla nowego serwera. Jeśli użytkownik nie ma wystarczających uprawnień, aby powiązać serwer z żądanym portem, powinien urucho- mić Apache’a z konta superużytkownika (root), aby uzy- ROZWIĄZYWANIE PROBLEMÓW skać dostęp do uprzywilejowanych portów. Jeśli Apache nie może otworzyć pliku konfiguracyjnego albo dziennika, należy sprawdzić, czy pliki należą do użytkownika, który zainstalował Apache’a, i czy ma on prawo do zapisywania tych plików. Łączenie się z serwerem Jeśli próba dostępu do strony kończy się niepowodze- niem, najpierw trzeba ustalić, czy problem jest spowodo- wany przez serwer, sieć czy też przez przeglądarkę. Najpierw należy sprawdzić, czy Apache działa. W tym celu należy wydać polecenie ps lub netstat albo skorzy- stać z Menedżera zadań (w Windows). Może się okazać, że serwer w ogóle nie został uruchomiony. Następnie należy sprawdzić, czy można połączyć się z Apa- che’em z lokalnego komputera. W tym celu należy bez- pośrednio połączyć się z serwerem za pomocą programu telnet i wpisać proste żądanie. 59
  • 30. Lista diagnostyczna ROZDZIAŁ 2 Następnie należy sprawdzić, czy Apache używa prawi- dłowej kombinacji adresu i portu. Jeśli można uzyskać dostęp do serwera lokalnie, ale nie zdalnie, prawdopodob- nie Apache nasłuchuje pod lokalnym adresem albo w por- cie niedostępnym zdalnie. Za pomocą poleceń netstat lub lsof należy ustalić, pod jakimi adresami nasłuchuje Apache i czy są one poprawne. Należy też sprawdzić, czy prawidłowo skonfigurowana jest zapora sieciowa lub router. Jeśli Apache nasłuchuje ROZWIĄZYWANIE PROBLEMÓW pod prawidłowym adresem, ale jest niedostępny na ze- wnątrz sieci, może to oznaczać, że ruch do serwera jest blokowany. Łączność między hostami można sprawdzić za pomocą polecenia traceroute (tracert w Windows). Wiele systemów operacyjnych domyślnie blokuje dostęp z zewnątrz z wyjątkiem kilku wybranych portów. Sposób rozwiązania tego problemu zależy od dystrybucji. Na przy- kład w systemach Fedora można użyć narzędzia system- config-securitylevel, a w Windows — programu Za- pora systemu Windows znajdującego się w Panelu stero- wania. Wreszcie jeśli połączenie z serwerem jest nawiązywane za pośrednictwem Secure Sockets Layer (SSL — rozdział 7.), a użytkownik korzysta ze starszej przeglądarki albo nie- typowej konfiguracji, należy poszukać w dzienniku błędów komunikatów świadczących o problemach z szyfrowaniem danych SSL. 60
  • 31. Lista diagnostyczna ROZDZIAŁ 2 Nie znaleziono dokumentu Jeśli można uzyskać dostęp do serwera, ale pojawia się błąd Document not found, należy sprawdzić, czy dokument rzeczywiście istnieje w systemie plików. Następnie należy sprawdzić, czy żądanie dotarło do ser- wera. W tym celu należy wyszukać w pliku access_log żądania pochodzące od określonego hosta. Jeśli w syste- mie jednocześnie działa kilka egzemplarzy Apache’a, klient ROZWIĄZYWANIE PROBLEMÓW mógł nawiązać połączenie z niewłaściwym serwerem. Potem należy sprawdzić, czy dyrektywy Alias wskazują właściwą lokację — to znaczy katalog, w którym przecho- wywany jest docelowy dokument. Należy upewnić się, czy nazwa katalogu została wpisana prawidłowo i czy nie został on przypadkowo usunięty. Wreszcie należy zbadać nieprawidłowe przekierowania, w tym „końcowe ukośniki” oraz problemy z dyrektywą ServerName opisane wcześniej w tym rozdziale. Zabroniony dostęp Jeśli dokument istnieje, ale dostęp do niego jest zabronio- ny, może to wynikać z kilku często popełnianych pomyłek. Należy sprawdzić, czy Apache ma uprawnienia do odczytu pliku. Należy sprawdzić, czy właściciel procesu Apache’a ma uprawnienia do odczytu i wyświetlania zawartości wszyst- kich katalogów na ścieżce wiodącej do pliku. 61
  • 32. Lista diagnostyczna ROZDZIAŁ 2 Należy sprawdzić, czy użytkownik próbuje uzyskać do- stęp do katalogu bez pliku indeksu, a tworzenie indek- sów katalogów jest zabronione w pliku konfiguracyjnym Apache’a. Należy upewnić się, że spełnione są wszystkie wymaga- nia określone przez dyrektywy kontroli dostępu w pliku konfiguracyjnym Apache’a. Jeśli użytkownik próbuje uzyskać dostęp do skryptu CGI, należy sprawdzić, czy skrypt ma ustawione prawa do od- ROZWIĄZYWANIE PROBLEMÓW czytu i wykonania. Wewnętrzne błędy serwera Jeśli podczas próby wczytania strony w przeglądarce poja- wia się komunikat Internal server error, należy po- szukać przyczyny w pliku error_log. Należy zadać sobie następujące pytania: Czy użytkownik próbuje uzyskać dostęp do skryptu CGI? Czy skrypt ma właściwe prawa do odczytu i wykonania? Czy ścieżka do interpretera w pierwszym wierszu skryptu jest prawi- dłowa? Czy jest on oznaczony jako skrypt CGI przez dy- rektywę ScriptAlias lub podobną? Jeśli wszystko inne zawiedzie... W niniejszym rozdziale omówiono tylko najczęstsze pro- blemy, z którymi mają do czynienia użytkownicy Apa- che’a. Jeśli ktoś napotka inny problem, pierwszym krokiem 62
  • 33. Lista diagnostyczna ROZDZIAŁ 2 powinno być poszukanie informacji w dziennikach błędów. Aby uzyskać więcej wskazówek, można zwiększyć po- ziom LogLevel. Następnie należy przeszukać dokumen- tację Apache’a, listy dyskusyjne oraz bazę usterek. Wreszcie można wysłać pytanie na listę dyskusyjną użytkowników Apache’a, przestrzegając dwóch reguł — najpierw należy samemu „odrobić zadanie domowe”, a następnie podać wystarczająco dużo informacji, aby inni mogli pomóc. Na listę można zapisać się pod adresem: ROZWIĄZYWANIE PROBLEMÓW http://httpd.apache.org/lists.html#http-users 63