Apache 2. Leksykon kieszonkowy 978-83-246-5959-3 [PDF]

Podręczne źródło informacji na temat Apache! Jak wykorzystać mechanizm mod_rewrite? Jak kontrolować dostęp do zasobów? J

141 1 3MB

Polish Pages 220 Year 2010

Report DMCA / Copyright

DOWNLOAD PDF FILE

Table of contents :
Spis treści......Page 3
Leksykon kieszonkowy......Page 7
Przykładowy kod......Page 8
Podziękowania......Page 9
Przegląd architektoniczny......Page 10
Przegląd operacyjny......Page 11
Bieżące wersje Apache’a......Page 12
Jak uzyskać Apache’a?......Page 13
Uruchamianie i zatrzymywanie Apache’a......Page 14
Opcje wiersza polecenia......Page 15
Pliki konfiguracyjne......Page 17
DirectorySlash SVDH (Indexes)......Page 18
Include SVD*......Page 20
AllowOverride D......Page 21
SVDH*......Page 22
SVDH*......Page 23
Sekcje kontenerowe......Page 24
SVDH*......Page 25
SVDH*......Page 26
SVDH*......Page 27
Główny serwer i hosty wirtualne......Page 28
NameVirtualHost S*......Page 29
ServerPath V......Page 30
ServerTokens S......Page 31
Konfiguracja sieci......Page 32
AcceptMutex S......Page 33
KeepAlive SV......Page 34
ListenBacklog S......Page 35
TraceEnable S......Page 36
GracefulShutDownTimeout S......Page 37
MaxRequestsPerChild S......Page 38
MaxSpareThreads S......Page 39
ServerLimit S......Page 40
ThreadLimit S......Page 41
Funkcje opcjonalne EnableExceptionHook S......Page 42
Options SVDH (Options)......Page 43
User S......Page 44
CoreDumpDirectory S......Page 45
ScoreBoardFile S......Page 46
LimitInternalRecursion SV......Page 47
LimitRequestLine S......Page 48
RLimitNPROC SVDH......Page 49
DBDKeep SV......Page 50
DBDParams SV*......Page 51
DBDDriver SV......Page 52
LDAPConnectionTimeout S......Page 53
LDAPSharedCacheSize S......Page 54
LDAPTrustedGlobalCert S......Page 55
LDAPTrustedMode SV......Page 56
LDAPVerifyServerCert S......Page 57
Wstępna konfiguracja środowiska......Page 58
SetEnvIf SVDH* (FileInfo)......Page 59
BrowserMatch SV*......Page 60
AcceptPathInfo SVDH (FileInfo)......Page 61
Alias SV*......Page 62
Redirect SVDH* (FileInfo)......Page 63
ScriptAlias SV*......Page 64
DirectorySlash SVDH (Indexes)......Page 65
Przekształcanie adresów URL z wykorzystaniem modułu mod_rewrite......Page 66
RewriteCond SVDH* (FileInfo)......Page 67
RewriteEngine SVDH (FileInfo)......Page 68
RewriteMap SV*......Page 69
RewriteRule SVDH* (FileInfo)......Page 70
LanguagePriority SVDH (FileInfo)......Page 72
UserDir SV*......Page 73
CheckCaseOnly SVDH (Options)......Page 74
Mapy obrazkowe......Page 75
ImapMenu SVDH (Indexes)......Page 77
Masowy hosting wirtualny......Page 78
VirtualScriptAliasIP SV......Page 79
Kontrola dostępu niezwiązana z kontami użytkowników......Page 80
Satisfy DH (AuthConfig)......Page 81
AuthDefaultAuthoritative DH (AuthConfig)......Page 82
AuthBasicAuthoritative DH (AuthConfig)......Page 83
AuthDigestAlgorithm DH (AuthConfig)......Page 84
AuthDigestProvider DH (AuthConfig)......Page 85
OSTRZEŻENIE......Page 86
AuthUserFile DH (AuthConfig)......Page 87
Dane uwierzytelniające przechowywane w relacyjnej bazie danych......Page 88
Anonymous DH* (AuthConfig)......Page 89
Rozszerzeni dostawcy usług uwierzytelniania......Page 90
AuthzDefaultAuthoritative DH (AuthConfig)......Page 91
Jawna autoryzacja użytkowników......Page 92
AuthzGroupFileAuthoritative DH (AuthConfig)......Page 93
AuthzDBMType SVDH* (AuthConfig)......Page 94
Uwierzytelnianie i autoryzacja LDAP......Page 95
AuthLDAPDereferenceAliases DH (AuthConfig)......Page 96
AuthLDAPUrl DH (AuthConfig)......Page 97
Dyrektywy dotyczące fazy autoryzacji......Page 98
AuthLDAPGroupAttributeIsDN DH (AuthConfig)......Page 99
Standardowe atrybuty dokumentu......Page 100
AddDefaultCharset SVDH (FileInfo)......Page 101
DefaultLanguage SVDH (FileInfo)......Page 102
MultiviewsMatch SVDH* (FileInfo)......Page 103
RemoveLanguage VDH* (FileInfo)......Page 104
MimeMagicFile SV......Page 105
ExpiresByType SVDH (Indexes)......Page 106
FileETag SVDH (FileInfo)......Page 107
Header SVDH* (FileInfo)......Page 108
RequestHeader SVDH* (FileInfo)......Page 109
MetaSuffix SVDH (Indexes)......Page 110
CookieName SVDH (FileInfo)......Page 111
PassEnv SV*......Page 112
SetEnv SV*......Page 113
Rozdział 6. Procedury obsługi......Page 114
SetHandler DH (FileInfo)......Page 115
IndexOptions SVDH (Indexes)......Page 116
AddDescription SVDH* (Indexes)......Page 119
DefaultIcon SVDH (Indexes)......Page 120
IndexStyleSheet SVDH (Indexes)......Page 121
Skrypty CGI......Page 122
ScriptInterpreterSource SVDH (FileInfo)......Page 123
API rozszerzeń serwera internetowego......Page 124
ISAPILogNotSupported SVDH (FileInfo)......Page 125
DavDepthInfinity SVDH*......Page 126
Strony statusu generowane przez serwer......Page 127
Dostosowane komunikaty o błędach......Page 128
ErrorDocument SVDH (FileInfo)......Page 129
AddInputFilter SVDH* (FileInfo)......Page 130
SetInputFilter SVDH (FileInfo)......Page 131
FilterChain SVDH* (Options)......Page 132
FilterDeclare SVDH* (Options)......Page 133
FilterProvider SVDH* (Options)......Page 134
ExtFilterDefine S*......Page 135
ExtFilterOptions D*......Page 136
DeflateCompressionLevel SV......Page 137
DeflateWindowSize SV......Page 138
Server-Side Includes (SSI)......Page 139
SSIErrorMsg SVDH......Page 141
XBitHack SVDH (Options)......Page 142
Substitute DH* (FileInfo)......Page 143
CacheFile S*......Page 144
CacheDisable SV*......Page 145
CacheIgnoreCacheControl SV......Page 146
CacheLastModifiedFactor SV......Page 147
Buforowanie danych w pamięci......Page 148
MCacheRemovalAlgorithm S......Page 149
CacheRoot SV......Page 150
CacheMinFileSize SV......Page 151
Podstawowa konfiguracja pośredniczenia......Page 152
ProxyBadHeader SV......Page 154
ProxyFtpDirCharset SVD......Page 155
ProxyTimeout SV......Page 156
ProxyRemote SV......Page 157
ProxyVia SV......Page 158
ProxyRequests SV......Page 159
Odwrotny serwer pośredniczący......Page 160
ProxyPassReverse SV*......Page 163
ProxySet D*......Page 164
ProxyStatus SV......Page 165
SSLEngine SV......Page 166
SSLPassPhraseDialog S......Page 167
SSLUserName SVDH (AutoConfig)......Page 168
SSLCertificateFile SV*......Page 169
SSLCACertificatePath SV......Page 170
SSLCARevocationFile SV......Page 171
SSLSessionCache S......Page 172
SSLMutex S......Page 173
Kontrola dostępu oparta na SSL......Page 174
SSLRequire DH (AuthConfig)......Page 176
SSLVerifyClient SV......Page 177
SSLProxyCACertificateFile SV......Page 178
SSLProxyCipherSuite SVDH......Page 179
SSLProxyProtocol SV......Page 180
SSLProxyVerifyDepth SVHD (AuthConfig)......Page 181
ErrorLog SV......Page 182
DumpIOLogLevel......Page 183
Rejestrowanie żądań......Page 184
IdentityCheck SVD......Page 186
Rejestrowanie skryptów......Page 187
Rejestrowanie ruchu SSL......Page 188
ForensicLog SV*......Page 189
Narzędzia pomocnicze......Page 190
Moduły......Page 191
Standardowe zmienne CGI......Page 195
Informacje dotyczące protokołu SSL/TLS......Page 197
Informacje o certyfikacie serwera......Page 198
Informacje o certyfikacie klienta......Page 199
Dodatek C Formaty czasu strftime()......Page 201
Dodatek D Kody stanu HTTP......Page 203
Dodatek E Pola nagłówka HTTP......Page 205

Apache 2. Leksykon kieszonkowy
 978-83-246-5959-3 [PDF]

  • 0 0 0
  • Gefällt Ihnen dieses papier und der download? Sie können Ihre eigene PDF-Datei in wenigen Minuten kostenlos online veröffentlichen! Anmelden
Datei wird geladen, bitte warten...
Zitiervorschau

Tytuł oryginału: Apache 2 Pocket Reference: For Apache Programmers & Administrators Tłumaczenie: Grzegorz Werner ISBN: 978-83-246-5959-3 © Helion S.A. 2010 Authorized translation of the English edition of Apache 2 Pocket Reference; ISBN 9780596518882 © 2008 Ford & Mason Ltd. This translation is published and sold by permission of O’Reilly Media, Inc., the owner of all rights to publish and sell the same. All rights reserved. No part of this book may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying, recording or by any information storage retrieval system, without permission from the Publisher. Wszelkie prawa zastrzeżone. Nieautoryzowane rozpowszechnianie całości lub fragmentu niniejszej publikacji w jakiejkolwiek postaci jest zabronione. Wykonywanie kopii metodą kserograficzną, fotograficzną, a także kopiowanie książki na nośniku filmowym, magnetycznym lub innym powoduje naruszenie praw autorskich niniejszej publikacji. Wszystkie znaki występujące w tekście są zastrzeżonymi znakami firmowymi bądź towarowymi ich właścicieli. Autor oraz Wydawnictwo HELION dołożyli wszelkich starań, by zawarte w tej książce informacje były kompletne i rzetelne. Nie biorą jednak żadnej odpowiedzialności ani za ich wykorzystanie, ani za związane z tym ewentualne naruszenie praw patentowych lub autorskich. Autor oraz Wydawnictwo HELION nie ponoszą również żadnej odpowiedzialności za ewentualne szkody wynikłe z wykorzystania informacji zawartych w książce. Wydawnictwo HELION ul. Kościuszki 1c, 44-100 GLIWICE tel. 032 231 22 19, 032 230 98 63 e-mail: [email protected] WWW: http://helion.pl (księgarnia internetowa, katalog książek) Drogi Czytelniku! Jeżeli chcesz ocenić tę książkę, zajrzyj pod adres http://helion.pl/user/opinie?apa2lk_ebook Możesz tam wpisać swoje uwagi, spostrzeżenia, recenzję. Printed in Poland.

• Poleć książkę na Facebook.com

• Księgarnia internetowa

• Kup w wersji papierowej

• Lubię to! » Nasza społeczność

• Oceń książkę

Spis treści

Przedmowa . ..................................................................................7 1. Wprowadzenie . .......................................................................... 10 Przegląd architektoniczny Jak uzyskać Apache’a? Uruchamianie i zatrzymywanie Apache’a Pliki konfiguracyjne

10 13 14 17

2. Środowisko serwera . ..................................................................28 Główny serwer i hosty wirtualne Konfiguracja sieci Zarządzanie procesami Ogólne dyrektywy konfiguracyjne Szkielet DBD Szkielet LDAP

28 32 37 42 50 53

3. Odwzorowywanie adresów URL . .................................................58 Wstępna konfiguracja środowiska Podstawowa translacja adresów URL Aliasy i przekierowania Żądania katalogów Przekształcanie adresów URL z wykorzystaniem modułu mod_rewrite Dokumenty z negocjacją treści

58 61 62 65 66 72

3

Katalogi użytkowników Poprawianie błędnie wpisanych adresów URL Mapy obrazkowe Masowy hosting wirtualny

73 74 75 78

4. Kontrola dostępu . ...................................................................... 80 Kontrola dostępu niezwiązana z kontami użytkowników 80 Uwierzytelnianie 82 Dostawcy usług uwierzytelniania 86 Autoryzacja 91 Uwierzytelnianie i autoryzacja LDAP 95

5. Metadane dokumentu . .............................................................100 Standardowe atrybuty dokumentu Automatyczne określanie typu Wygasanie dokumentów Manipulowanie nagłówkami HTTP Metapliki CERN Śledzenie użytkowników Zmienne środowiskowe

100 105 106 107 110 111 112

6. Procedury obsługi . .................................................................... 114 Konfiguracja procedur obsługi Pliki statyczne Automatycznie generowane indeksy katalogów Skrypty CGI API rozszerzeń serwera internetowego WebDAV Strony statusu generowane przez serwer Dostosowane komunikaty o błędach

4

|

Spis treści

115 116 116 122 124 126 127 128

7. Filtry ................................................................................................. 130 Proste konfiguracje filtrów Dynamiczna konfiguracja filtrów Filtry zewnętrzne Dyrektywy modułu mod_deflate Server-Side Includes (SSI) Zastępowanie danych w treści odpowiedzi

130 132 135 137 139 143

8. Buforowanie ....................................................................................144 Proste buforowanie zorientowane na pliki Buforowanie inteligentne Buforowanie danych w pamięci Buforowanie danych na dysku

9.

144 145 148 150

Pośredniczenie . ......................................................................... 152 Podstawowa konfiguracja pośredniczenia Łańcuchy pośredniczenia Zwykły serwer pośredniczący Odwrotny serwer pośredniczący Równoważenie obciążenia

10.

11.

152 157 159 160 165

Obsługa SSL/TLS .

166

Opcje zabezpieczonego serwera Certyfikaty Buforowanie sesji Kontrola dostępu oparta na SSL Dyrektywy związane z pośredniczeniem

166 169 172 174 178

Rejestrowanie informacji . ........................................................182 Rejestrowanie błędów 182 Rejestrowanie żądań 184 Rejestrowanie skryptów 187 Rejestrowanie ruchu SSL 188 Rejestrowanie śledcze 189 Spis treści

|

5

A Programy i moduły ....................................................................190 Narzędzia pomocnicze Moduły

190 191

B Zmienne środowiskowe CGI .................................................... 195 Standardowe zmienne CGI Dodatkowe zmienne SSL

195 197

C Formaty czasu strftime() . ......................................................... 201 D Kody stanu HTTP . ......................................................................203 E Pola nagłówka HTTP . ................................................................205 Skorowidz . ................................................................................209

6

|

Spis treści

Apache 2 Leksykon kieszonkowy

Przedmowa Apache to zaawansowany serwer WWW o modularnej architekturze, która zapewnia mu dużą wydajność i przenośność. Dzięki niezwykłej elastyczności jeden serwer może obsługiwać wiele witryn, zwanych wirtualnymi hostami, oraz działać jako pośrednik. Apache zawiera standardowe moduły do buforowania stron i obsługi połączeń SSL/TLS, różne mechanizmy uwierzytelniania i autoryzacji oraz system filtrowania. Istnieje wiele modułów dodatkowych, które rozszerzają zestaw funkcji Apache’a, na przykład o systemy szablonów, osadzone interpretery języków skryptowych oraz interfejsy HTTP do systemów kontroli wersji, takich jak Subversion. W niniejszym leksykonie podsumowano opcje wiersza polecenia Apache’a oraz dyrektywy konfiguracyjne standardowych modułów. Opisano wersję 2.2.9 Apache’a, ale większość informacji dotyczy wszystkich wersji Apache’a 2. Aby uzyskać bardziej kompletne informacje, wykraczające poza ramy krótkiego przewodnika, należy zajrzeć do witryny z dokumentacją Apache’a (http://httpd.apache. org/docs/).

7

Konwencje W książce zastosowano następujące konwencje: stała szerokość liter

Oznacza dosłowny tekst. stała szerokość liter, kursywa

Oznacza parametry przeznaczone do zastąpienia rzeczywistymi wartościami. { A | B }

Oznacza alternatywę. [tekst]

Oznacza opcjonalny tekst. ...

Wskazuje, że poprzedni element może zostać powtórzony.

Przykładowy kod Niniejsza książka ma pomóc programistom w wykonywaniu ich zadań. Ogólnie rzecz biorąc, wolno używać opisanego tu kodu we własnych programach i dokumentacji. Nie trzeba prosić nas o zezwolenie, chyba że w grę wchodzi reprodukcja znacznej części kodu. Na przykład napisanie programu, który zawiera kilka fragmentów kodu z tej książki, nie wymaga zezwolenia. Sprzedawanie albo dystrybucja dysku CD-ROM z przykładami zaczerpniętymi z książek wydawnictwa O’Reilly wymaga zezwolenia. Odpowiedź na czyjeś pytanie przez odwołanie się do tej książki i przytoczenie przykładowego kodu nie wymaga zezwolenia. Dołączenie znacznej ilości przykładowego kodu z niniejszej książki do dokumentacji produktu wymaga zezwolenia.

8

|

Apache 2. Leksykon kieszonkowy

Podziękowania Chciałbym podziękować wszystkim recenzentom, zwłaszcza Chrisowi Pepperowi i mojej żonie Catherine Mason, za znakomitą robotę; kolegom z MessageLabs za wsparcie; personelowi O’Reilly — w szczególności redaktorowi Simonowi St. Laurentowi oraz Abby Fox za urzeczywistnienie moich pomysłów dotyczących składu książki; wreszcie wszystkim programistom Apache’a, uczestnikom projektu Apache HTTPD oraz niezliczonym osobom, które przyczyniły się do tego, że Apache stał się tym, czym jest, i nadal się rozwija.

Przedmowa

|

9

Rozdział 1. Wprowadzenie W tym rozdziale krótko opisano architekturę Apache’a, pobieranie oprogramowania, uruchamianie i zatrzymywanie serwera oraz podstawy pliku konfiguracyjnego.

Przegląd architektoniczny Apache zwykle działa jako usługa systemowa, tak zwany demon, z procesem lub wątkiem macierzystym, który nadzoruje procesy lub wątki potomne przetwarzające żądania klientów. Pominąwszy pewne rdzenne mechanizmy, większość funkcji jest realizowana przez moduły, które mogą być statycznie połączone z serwerem albo wczytywane dynamicznie podczas rozruchu. Systemy operacyjne różnią się pod względem implementacji funkcji takich jak łączność sieciowa i wieloprzetwarzanie. W wersji 2.0 Apache’a wprowadzono moduły MPM (MultiProcessing Module), które obsługują łączność sieciową i szeregowanie w sposób dostosowany do konkretnych systemów operacyjnych i wzorców użycia. Są one wymienione w tabeli 1.1. Moduły MPM używają natywnych mechanizmów systemu operacyjnego i zapewniają szeregowanie z wykorzystaniem procesów, wątków albo ich kombinacji. Apache w danym momencie używa tylko jednego modułu MPM, który musi być statycznie skompilowany z serwerem. Moduły MPM, inne moduły oraz rdzeń serwera WWW wykorzystują środowisko uruchomieniowe Apache Portable Runtime (APR), które zapewnia spójny, niezależny od platformy interfejs do bazowego systemu operacyjnego. APR zawiera wywołania API zapewniające dostęp do baz danych SQL i serwerów LDAP; są one używane w modułach mod_dbd i mod_ldap, które udostępniają standardowe mechanizmy wykorzystywane przez inne moduły.

10

|

Apache 2. Leksykon kieszonkowy

Tabela 1.1. Moduły MPM Moduł

Opis

beos event mpm_netware mpm_winnt

Wielowątkowy moduł MPM dla systemu operacyjnego BeOS. Eksperymentalny wariant modułu MPM worker. Wątkowy moduł MPM dla systemu Novell Netware. Dwuprocesowy, wielowątkowy moduł MPM dla systemu Windows. Hybrydowy wieloprocesowy, wielowątkowy moduł MPM dla systemu O/S2. Tradycyjny bezwątkowy moduł MPM ze wstępnym rozwidlaniem procesu. Hybrydowy wieloprocesowy, wielowątkowy moduł MPM.

mpmt_os2 prefork worker

Przegląd operacyjny Podczas rozruchu Apache przechodzi fazę inicjalizacyjną, zanim wejdzie w stan operacyjny. Podczas tej fazy Apache odczytuje i weryfikuje pliki konfiguracyjne, otwiera połączenia sieciowe i pliki dziennika, pozyskuje zasoby systemowe i tworzy pulę procesów potomnych lub wątków, które będą obsługiwać żądania. Apache jest zwykle uruchamiany z przywilejami użytkownika root, ale zrzeka się ich przed wejściem w stan operacyjny. Po wejściu w stan operacyjny procesy potomne lub wątki Apache’a zaczynają obsługiwać przychodzące żądania. Żądania są przetwarzanie w kilku etapach, a na każdym z nich dostępne są punkty wejścia, dzięki którym moduły mogą wziąć udział w przetwarzaniu. Dla każdego punktu wejścia Apache kolejno wywołuje zarejestrowane funkcje, dopóki jedna z nich nie zasygnalizuje, że przetwarzanie dobiegło końca albo że wystąpił błąd. Moduły rejestrują procedury obsługi dla faz, w których muszą wpłynąć na przetwarzanie żądania. Ogólnie rzecz biorąc, moduł rejestruje procedury obsługi tylko dla jednej lub dwóch faz.

Rozdział 1. Wprowadzenie

|

11

Kolejność faz jest następująca: Analiza składniowa żądania Adres URL żądania jest odwzorowywany na przestrzeń nazw systemu plików. Kontrola bezpieczeństwa Kontrola dostępu, uwierzytelnianie i autoryzacja. Przygotowanie żądania Adres URL żądania i odwzorowana ścieżka do pliku są dopasowywane do konfiguracji, aby ustalić odpowiednią procedurę obsługi treści oraz filtry i ustawić inne metadane. Generowanie treści Wykonanie wybranej procedury obsługi z ewentualnymi filtrami. Rejestrowanie żądania Zapisywanie żądania w dzienniku. Obraz ten komplikuje nieco to, że moduły mogą wykonywać kolejne żądania, aby zwrócić dokument inny od pierwotnie żądanego albo sprawdzić, jaka byłaby odpowiedź, gdyby zażądano innego zasobu.

Bieżące wersje Apache’a Kiedy powstawała ta książka (latem 2008 roku), w powszechnym użytku były trzy podstawowe wersje Apache’a: 1.3, 2.0 i 2.2. Apache 1.3 został wydany w czerwcu 1998 roku i przez wiele lat był najpopularniejszym serwerem WWW. W 2000 roku rozpoczęto prace nad nową architekturą Apache’a; pierwsze wydanie produkcyjne nowej wersji, Apache 2.0, zostało udostępnione w kwietniu 2002 roku. Jednocześnie wprowadzono nowy

12

|

Apache 2. Leksykon kieszonkowy

sposób numerowania wersji: wersje poboczne oznaczone numerami nieparzystymi, takie jak 2.1 lub 2.3, to wersje rozwojowe; wersje poboczne oznaczone numerami parzystymi, takie jak 2.0 lub 2.4, to wersje stabilne. Pierwsze wydanie wersji 2.2 pojawiło się w 2005 roku, a najnowsze udostępniono w lipcu 2008 roku. W witrynie WWW Apache’a znajduje się dokumentacja zmian wprowadzonych w poszczególnych wersjach oraz notatki dotyczące aktualizacji.

Jak uzyskać Apache’a? Serwer Apache jest dostępny w wersjach dla większości współczesnych platform komputerowych — większość dystrybucji Linuksa i BSD oferuje go jako standardowy pakiet, jest on również dołączony do systemu Mac OS X. Wersję dla systemu Microsoft Windows, a także pakiety źródłowe i inne pakiety binarne, można pobrać z witryny Apache’a i serwerów lustrzanych. Warto zapoznać się ze specyfiką używanej dystrybucji, ponieważ twórcy pakietów zmieniają pewne szczegóły, aby dostosować się do konwencji obowiązujących na docelowej platformie. Można również dość łatwo skompilować Apache’a z kodu źródłowego, co ma tę zaletę, że zapewnia pełną kontrolę nad budową serwera, statycznie dołączanymi modułami itd. Dystrybucja źródłowa zawiera szczegółowe instrukcje dotyczące procesu kompilacji. Dystrybucja źródłowa domyślnie instaluje serwer w podkatalogach katalogu /usr/local/apache2, które są wymienione w tabeli 1.2. Twórcy większości innych dystrybucji zmieniają ten układ. Dystrybucje Apache’a zawierają kilka modułów i programów narzędziowych; są one wymienione w dodatku A.

Rozdział 1. Wprowadzenie

|

13

Tabela 1.2. Układ standardowych katalogów Apache’a Katalog

Zawartość

bin

Pliki programów (pliki programów administracyjnych są często umieszczane w katalogu sbin). Pliki używane przez program narzędziowy aspx. Skrypty CGI. Pliki konfiguracyjne (często przechowywane w hierarchii katalogów /etc). Komunikaty o błędach HTTP w wielu językach. Dokumenty HTML. Pliki ikon. Pliki nagłówkowe C wymagane do kompilacji zewnętrznych modułów. Pliki dziennika i pliki stanu, na przykład plik PID; pliki stanu są często przechowywane w katalogu run. Strony podręcznika systemowego (często przechowywane w systemowych katalogach man). Lokalna kopia podręcznika Apache’a. Dołączane moduły.

build cgi-bin conf error htdocs icons include logs man manual modules

Uruchamianie i zatrzymywanie Apache’a Większość dystrybucyjnych pakietów Apache’a konfiguruje serwer tak, aby był uruchamiany podczas startu systemu i zatrzymywany podczas jego zamykania. W systemach uniksowych Apache zwykle działa jako demon. Do Apache’a dołączony jest skrypt powłoki, apachectl, który automatyzuje proces uruchamiania i zatrzymywania demona. Skrypt ten jest zwykle wywoływany przez systemowy skrypt rozruchowy. Apache reaguje na następujące sygnały wysłane do procesu macierzystego (którego identyfikator jest zapisany w pliku PID): TERM

14

|

Zatrzymuje serwer, nakazując procesowi macierzystemu usunięcie wszystkich procesów potomnych i zakończenie działania. Apache 2. Leksykon kieszonkowy

HUP

USR1

Ponownie uruchamia serwer, nakazując procesowi macierzystemu usunięcie wszystkich procesów potomnych, ponowne odczytanie plików konfiguracyjnych i uruchomienie nowych procesów potomnych. Podczas restartu statystyki serwera są zerowane. Inicjuje łagodny restart. Procesy potomne kończą działanie po przetworzeniu bieżącego żądania albo natychmiast, jeśli obecnie nie obsługują żadnego żądania. Proces macierzysty ponownie odczytuje pliki konfiguracyjne i zaczyna uruchamiać nowe procesy potomne, aby utrzymać odpowiednią liczbę procesów serwera. Podczas łagodnego restartu statystyki serwera nie są zerowane.

WINCH

Inicjuje łagodne zatrzymanie. Procesy potomne kończą działanie po przetworzeniu bieżącego żądania albo natychmiast, jeśli nie obsługują żadnego innego żądania. Proces macierzysty usuwa plik PID i przestaje nasłuchiwać żądań we wszystkich portach, ale kontynuuje monitorowanie, aż pozostałe procesy potomne zakończą działanie albo upłynie limit czasu.

Jeśli Apache w systemie Windows został zainstalowany jako usługa, można uruchamiać i zatrzymywać go za pomocą poleceń NET START i NET STOP albo programu Apache Service Monitor.

Opcje wiersza polecenia W przypadku ręcznego uruchamiania Apache’a program serwera przyjmuje następujące opcje wiersza polecenia: -C dyrektywa

Przetwarza dyrektywę przed odczytaniem plików konfiguracyjnych.

Rozdział 1. Wprowadzenie

|

15

-c dyrektywa

Przetwarza dyrektywę po odczytaniu plików konfiguracyjnych. -d katalog

Ustawia początkową wartość dyrektywy ServerRoot. -D parametr

Definiuje parametr, którego można używać w sekcjach . Niektóre opcje rozruchowe przywołuje się przez ustawianie parametrów (DEBUG, FOREGROUND, NO_DETACH, ONE_PROCESS). -E nazwa_pliku

Określa plik dziennika błędów na czas rozruchu serwera. -e poziom

Określa poziom rejestrowania zdarzeń na czas rozruchu serwera. -f plik

Określa główny plik konfiguracyjny (domyślnie conf/httpd.conf). -h

Wyświetla krótkie podsumowanie dostępnych opcji wiersza polecenia. -k polecenie

Wykonuje jedno z następujących poleceń: start, restart, graceful, stop lub graceful-stop. Ponadto, tylko w systemie Windows: install, uninstall. -L

Wyświetla listę dostępnych dyrektyw konfiguracyjnych (udostępnianych przez wkompilowane moduły) i kończy działanie programu.

-l

Wyświetla listę wkompilowanych modułów i kończy działanie programu.

16

|

Apache 2. Leksykon kieszonkowy

-M

Wyświetla listę wkompilowanych oraz współdzielonych modułów i kończy działanie programu (odpowiednik -D DUMP_MODULES).

-n nazwa

Tylko w Windows: nazwa usługi Apache’a. -S

Pokazuje ustawienia wirtualnego hosta (odpowiednik -D DUMP_VHOSTS).

-t

Testuje składnię plików konfiguracyjnych, sprawdza, czy istnieją główne katalogi dokumentów, i kończy działanie programu. -v

Wyświetla numer wersji oraz datę kompilacji i kończy działanie programu.

-V

Pokazuje ustawienia kompilacji i kończy działanie programu. -w

Tylko w Windows: pozostawia otwarte okno konsoli po uruchomieniu Apache’a.

-X

Uruchamia serwer w jednoprocesowym trybie diagnostycznym (odpowiednik -D DEBUG).

Pliki konfiguracyjne Każdy aspekt działania Apache’a jest kontrolowany przez dyrektywy zawarte w plikach konfiguracyjnych. Kiedy Apache uruchamia się, najpierw odczytuje główny plik konfiguracyjny z lokalizacji

Rozdział 1. Wprowadzenie

|

17

domyślnej albo z lokalizacji określonej przez opcję -f wiersza polecenia. Dodatkowe pliki konfiguracyjne mogą zostać dołączone za pomocą dyrektywy Include. Pliki konfiguracyjne to zwykłe pliki tekstowe, które zawierają dyrektywy, puste wiersze i komentarze. Początkowe znaki odstępu w wierszu są ignorowane, podobnie jak puste wiersze. Wiersze zaczynające się od znaku hash (#) są uważane za komentarze.

Format dyrektyw konfiguracyjnych Dyrektywy konfiguracyjne Apache’a są opisywane w standardowym formacie pokazanym poniżej.

DirectorySlash mod_dir (B)

SVDH (Indexes) ON

DirectorySlash { ON | OFF }

Zgodność: 2.0.51 i nowsze wersje Jeśli jest ustawiona na ON, żądania katalogu, które nie są zakończone znakiem ukośnika, zostaną przekierowane pod ten sam adres URL z dołączonym ukośnikiem, aby automatyczne indeksy katalogów i względne adresy URL działały poprawnie. Górny wiersz zawiera po lewej stronie nazwę dyrektywy, a po prawej listę kontekstów, w których można używać dyrektywy. Konteksty oznaczono skrótami opisanymi w tabeli 1.3. Jeśli dyrektywa może być używana w pliku konfiguracyjnym katalogu i jest kontrolowana przez kategorię dyrektywy AllowOverride, to słowo kluczowe kategorii jest wymienione w nawiasie po skrótach kontekstu.

18

|

Apache 2. Leksykon kieszonkowy

Tabela 1.3. Skróty kontekstu Kontekst

Opis

S

Dyrektywy można używać w kontekście globalnym, tzn. w pliku konfiguracyjnym serwera poza sekcjami wirtualnego hosta albo kontenera systemu plików. Dyrektywy można używać w sekcjach wirtualnego hosta. Dyrektywy można używać w sekcjach kontenera systemu plików (, , i warianty *Match). Dyrektywy można używać w plikach konfiguracyjnych dotyczących poszczególnych katalogów (domyślnie o nazwie .htaccess). Wskazuje, że dyrektywy można używać więcej niż raz w danym kontekście.

V D H *

Drugi wiersz podaje nazwę modułu Apache’a, który implementuje dyrektywę wymienioną po lewej stronie (lista modułów dołączonych do dystrybucji Apache’a znajduje się w dodatku A). Status modułu znajduje się w nawiasie i jest oznaczony skrótami z tabeli 1.4. Moduł może być oznaczony jako „MPM” (w takim przypadku zostaną odnotowane moduły MPM implementujące dyrektywę) albo jako „rdzenny”, co oznacza, że dyrektywa jest implementowana przez rdzenny moduł Apache’a. Domyślna wartość dyrektywy jest podana po prawej stronie. Tabela 1.4. Kody statusu modułów Status

Opis

B

Moduł podstawowy — dołączony do dystrybucji Apache’a i domyślnie wkompilowany. Moduł rozszerzenia — dołączony do dystrybucji Apache’a, ale domyślnie niewkompilowany. Moduł eksperymentalny — dołączony do dystrybucji Apache’a, ale domyślnie niewkompilowany.

E X

Rozdział 1. Wprowadzenie

|

19

Następny wiersz określa składnię dyrektywy, po czym następują informacje o zgodności (jeśli mają zastosowanie). Wielkość liter w dyrektywach nie jest rozróżniana, podobnie jak w większości argumentów, które nie odnoszą się do obiektów wrażliwych na wielkość liter, takich jak nazwy plików.

Podstawowe dyrektywy w pliku konfiguracyjnym Te dyrektywy określają położenie plików konfiguracyjnych, nazwy dodatkowych plików wczytywanych podczas rozruchu serwera, nazwy plików konfiguracyjnych, dotyczących poszczególnych katalogów, oraz dyrektywy, które można stosować w tych plikach. Dyrektywy konfiguracyjne Apache’a są opisywane w standardowym formacie pokazanym poniżej.

ServerRoot rdzenny

S zależnie od ustawień kompilacyjnych

ServerRoot katalog

Główny katalog serwera. Może zostać zmieniony za pomocą opcji -d wiersza polecenia. Ścieżki względne w innych dyrektywach, takich jak Include i LockFile, są interpretowane jako odnoszące się do tego katalogu. Pakiety binarne często mają inne ustawienia domyślne niż w standardowym układzie katalogów Apache’a.

Include rdzenny

SVD*

Include { ścieżka_do_pliku | katalog }

Zgodność: dopasowywanie symboli wieloznacznych dostępne w wersji 2.0.41 i nowszych Odczytuje i przetwarza zawartość określonego pliku konfiguracyjnego, który jest logicznie wstawiany w miejscu dyrektywy. Nazwa

20

|

Apache 2. Leksykon kieszonkowy

pliku może zawierać symbole wieloznaczne w stylu powłoki; w takim przypadku zostaną dołączone wszystkie pasujące pliki w kolejności leksykograficznej. W razie podania katalogu zostaną dołączone wszystkie pliki znajdujące się w tym katalogu i wszystkich jego podkatalogach, co nie jest zalecane, ponieważ może doprowadzić do wczytania niepożądanych plików.

AccessFileName rdzenny

SV* .htaccess

AccessFileName nazwa_pliku ...

Określa nazwę pliku stosowanego do konfigurowania poszczególnych katalogów. Choć nazwa dyrektywy oraz jej wartość domyślna sugerują co innego, w pliku tym można stosować nie tylko dyrektywy kontroli dostępu. Kategorie dozwolonych dyrektyw są określone przez dyrektywę AllowOverride.

AllowOverride rdzenny

D All

AllowOverride kategoria ...

Dyrektywa AllowOverride jest dozwolona tylko w sekcjach , które nie używają wyrażenia regularnego. Określa ona, czy z katalogów należących do danej sekcji będą odczytywane pliki konfiguracyjne, a jeśli tak, to które kategorie dyrektyw wymienione w tabeli 1.5 będą dozwolone w tych plikach. Jeśli plik konfiguracyjny katalogu będzie zawierać niedozwolone dyrektywy, zostanie wygenerowany wewnętrzny błąd serwera. Dyrektywa AllowOverride zastępuje ustawienia zdefiniowane dla katalogów wyższego poziomu. Słowa kluczowe All i None są interpretowane tak samo jak inne, co pozwala na pewne dziwne, ale poprawne kombinacje.

Rozdział 1. Wprowadzenie

|

21

Tabela 1.5. Kategorie dyrektyw w plikach konfiguracyjnych dotyczących poszczególnych katalogów Kategoria

Opis

None

Pliki konfiguracyjne dotyczące poszczególnych katalogów w ogóle nie są odczytywane. W plikach konfiguracyjnych dotyczących poszczególnych katalogów można używać wszystkich dyrektyw. Dyrektywy związane z uwierzytelnianiem i autoryzacją. Dyrektywy kontrolujące atrybuty dokumentów. Dyrektywy związane z indeksowaniem katalogów. Dyrektywy kontroli dostępu. Opcje katalogów.

All AuthConfig FileInfo Indexes Limit Options

Sekcje warunkowe Sekcje warunkowe zawierają zbiory dyrektyw, które Apache powinien zignorować podczas analizy składniowej pliku konfiguracyjnego, jeśli nie jest spełniony warunek określony w dyrektywie rozpoczynającej sekcję. Sekcje warunkowe można zagnieżdżać.

rdzenny

SVDH*

...

Dyrektywy zawarte w sekcji są odczytywane tylko wtedy, gdy określony parametr jest zdefiniowany za pomocą opcji -d wiersza polecenia — albo kiedy nie jest zdefiniowany, jeśli poprzedzono go znakiem wykrzyknika (!).

22

|

Apache 2. Leksykon kieszonkowy

rdzenny

SVDH*

...

Dyrektywy zawarte w sekcji są odczytywane tylko wtedy, gdy określony moduł jest aktywny — albo kiedy nie jest aktywny, jeśli poprzedzono go znakiem wykrzyknika (!). Moduły można określać za pomocą identyfikatora lub nazwy, łącznie z końcową literą .c, która jest wyświetlana przez opcję -1 wiersza polecenia. Możliwość użycia identyfikatorów modułów wprowadzono w wersji 2.0. Dyrektywy tej można użyć do odróżnienia wersji 1.3 od nowszych wersji, ponieważ w serwerach 2.0 moduł rdzenny nosi nazwę core.c, a w serwerach 1.3 nosił nazwę http_core.c.

mod_version (E)

SVDH*

...

Zgodność: 2.0.56 i nowsze wersje Dyrektywy zawarte w sekcji są odczytywane tylko wtedy, gdy wersja Apache’a spełnia określone kryteria. Jeśli numery poprawki i wersji pobocznej zostaną pominięte, będą potraktowane tak, jakby były ustawione na zero. Operatorem porównania może być jeden z następujących symboli: =, = (== to synonim =). Obsługiwane są również wyrażenia regularne; można użyć operatora ~ i określić wersję za pomocą łańcucha albo użyć operatora = i określić wersję za pomocą /wyrażenia_regularnego/. Wszystkie operatory mogą być poprzedzone znakiem wykrzyknika (!), który odwraca ich znaczenie. Rozdział 1. Wprowadzenie

|

23

Sekcje kontenerowe Sekcje kontenerowe pozwalają ograniczyć zasięg dyrektyw do katalogu, nazwy pliku, adresu URL albo metody żądania. Dyrektywy , , oraz rozpoczynają kontenery systemu plików, a dyrektywy i rozpoczynają kontenery przestrzeni WWW. Dyrektywy i rozpoczynają sekcje kontenerowe ograniczone do określonej metody żądania. Dyrektywy kontenerowe systemu plików i przestrzeni WWW inne niż *Match przyjmują argument w postaci wieloznacznego wzorca w stylu powłoki. Mają one alternatywną postać, w której pierwszy argument jest tyldą (~), a drugi jest interpretowany jako wyrażenie regularne. Postać ta jest równoważna odpowiedniej dyrektywie *Match, która powinna być preferowana, ponieważ tyldę można łatwo przeoczyć. Wzorce wieloznaczne w stylu powłoki mogą zawierać metaznaki i wyrażenia w nawiasach kwadratowych: ? dopasowuje pojedynczy znak, * dopasowuje dowolną liczbę znaków, a [wyrażenie] dopasowuje dowolny ze znaków albo zakresów znaków określonych w nawiasie. Podczas przetwarzania żądania dyrektywy zawarte w sekcjach systemu plików i przestrzeni WWW są stosowane w następującej sekwencji: 1. Sekcje bez wyrażeń regularnych oraz pliki konfiguracyjne dotyczące poszczególnych katalogów, od najkrótszej do najdłuższej ścieżki do pliku. Pliki konfiguracyjne dotyczące poszczególnych katalogów mają pierwszeństwo przed sekcjami . 2. Sekcje . 3. Sekcje i . 4. Sekcje i . 24

|

Apache 2. Leksykon kieszonkowy

Dyrektywy w sekcjach i oraz pliki konfiguracyjne katalogów obowiązują również w podkatalogach, chyba że zostaną później przesłonięte. Sekcje kontenerowe dotyczące wirtualnych hostów są stosowane po sekcjach dotyczących głównego serwera.

rdzenny

SV*

...

Kontener na dyrektywy, które dotyczą tylko katalogów pasujących do określonego wzorca (i ich podkatalogów).

rdzenny

SV*

...

Dyrektywy zawarte w tej sekcji dotyczą tylko katalogów (i ich podkatalogów), które pasują do określonego wyrażenia regularnego.

rdzenny

SVDH*

...

Dyrektywy zawarte w tej sekcji dotyczą tylko plików, które pasują do określonego wzorca.

Rozdział 1. Wprowadzenie

|

25

rdzenny

SVDH*

...

Dyrektywy zawarte w tej sekcji dotyczą tylko plików, które pasują do określonego wyrażenia regularnego.

rdzenny

SV*

...

Dyrektywy zawarte w tej sekcji dotyczą tylko adresów URL, które pasują do określonego wzorca.

rdzenny

SV*

...

Dyrektywy zawarte w tej sekcji dotyczą tylko adresów URL, które pasują do określonego wyrażenia regularnego.

rdzenny

SVDH*

...

Dyrektywy zawarte w tej sekcji dotyczą tylko pasujących metod.

26

|

Apache 2. Leksykon kieszonkowy

rdzenny

SVDH*

...

Dyrektywy zawarte w tej sekcji dotyczą tylko niepasujących metod.

Rozdział 1. Wprowadzenie

|

27

Rozdział 2. Środowisko serwera W tym rozdziale omówiono konfigurowanie środowiska serwera, w tym określanie ustawień wirtualnych hostów, sieci i szeregowania procesów. Opisano także nowe moduły szkieletowe, mod_dbd i mod_ldap. Zapewniają one interfejs do bazy danych SQL oraz wywołań LDAP środowiska APR, dzięki czemu moduły, które korzystają z bazy danych albo serwera LDAP, nie muszą zawierać przeznaczonego do tego kodu.

Główny serwer i hosty wirtualne Dyrektywa Listen nakazuje Apache’owi nasłuchiwać pod wieloma adresami IP w jednym lub wielu portach. Jeśli nie są zdefiniowane żadne hosty wirtualne, wszystkie żądania dotyczą głównego serwera. Hosty wirtualne definiuje się w sekcjach , które są uwzględniane tylko wtedy, gdy Apache nasłuchuje pod adresem IP i w porcie określonym przez początkową dyrektywę . W razie braku dyrektywy NameVirtualHost wszystkie hosty wirtualne są odróżniane za pomocą adresów IP. Dyrektyw NameVirtualHost używa się do wyznaczenia adresów IP (z opcjonalnymi numerami portów), które będą akceptować żądania dotyczące hostów wirtualnych opartych na nazwach — można używać nazw hostów zamiast adresów IP. Aby ustalić, którego hosta wirtualnego dotyczy żądanie, Apache porównuje wartość nagłówka Host w żądaniach przychodzących pod dany adres IP i do danego portu z nazwą serwera lub aliasami zdefiniowanymi w tych sekcjach hostów wirtualnych, w których adres i port określony w dyrektywie dokładnie odpowiada wartościom dyrektywy NameVirtualHost.

28

|

Apache 2. Leksykon kieszonkowy

Należy zauważyć, że hosty wirtualne oparte na nazwach nie działają w przypadku połączeń HTTPS, ponieważ do nawiązania bezpiecznego połączenia potrzebna jest nazwa hosta, której nie można pobrać z nagłówków HTTP, dopóki połączenie nie zostanie nawiązane.

VirtualHost rdzenny

S*

...

Kontener na dyrektywy, które dotyczą tylko określonego hosta wirtualnego. Parametr adres może być adresem IP albo w pełni kwalifikowaną nazwą domenową hosta wirtualnego; może też mieć wartość _default_, która dotyczy każdego adresu IP niewymienionego w innej sekcji hosta wirtualnego. Parametr port umożliwia określenie numeru portu. Zarówno adres, jak i port można ustawić na *, aby dopasować dowolny adres lub port. W przypadku hostów wirtualnych opartych na nazwach, jeśli nie ma żadnej sekcji dopasowującej nazwę lub alias serwera (Server ´Name albo ServerAlias) ani sekcji z wartością _default_, zostanie użyta sekcja zdefiniowana jako pierwsza.

NameVirtualHost rdzenny

S*

NameVirtualHost adres[:port]

Określa adres IP dla kolejnych sekcji hostów wirtualnych opartych na nazwach.

Rozdział 2. Środowisko serwera

|

29

ServerAdmin rdzenny

SV

ServerAdmin { adres-email | URL }

Adres e-mail lub URL dołączany do komunikatów o błędach generowanych przez Apache’a.

ServerAlias rdzenny

V*

ServerAlias fqdn ...

Alternatywne nazwy hosta używane w przypadku hostów wirtualnych opartych na nazwach.

ServerName rdzenny

SV

ServerName [schemat://]nazwa[:port]

Nazwa hosta i port używany do tworzenia adresów URL dla przekierowań. Jeśli te wartości nie są określone, nazwa hosta jest ustalana automatycznie na podstawie wyszukiwania adresu IP w DNS, a port pozostaje taki sam jak w pierwotnym żądaniu. Zob. też UseCanonicalName.

ServerPath rdzenny

V

ServerPath ścieżka

Ścieżka URL dla klientów HTTP 1.0, które nie wysyłają nagłówka Host. Żądania zaczynające się od tej ścieżki będą dotyczyły bieżącego hosta wirtualnego.

30

|

Apache 2. Leksykon kieszonkowy

ServerSignature rdzenny

SVDH OFF

ServerSignature { ON | OFF | Email }

Steruje tworzeniem wiersza stopki z adresem serwera w dokumentach generowanych przez serwer, takich jak komunikaty o błędach i listingi katalogów. Jeśli jest ustawiona na Email, adres e-mail określony za pomocą dyrektywy ServerAdmin zostanie dołączony do dokumentu jako łącze mailto:.

ServerTokens rdzenny

S Full

ServerTokens poziom

Określa poziom szczegółów zwracanych w nagłówkach odpowiedzi serwera. Prod[uctOnly]

Tylko nazwa produktu, na przykład Apache. Major

Nazwa produktu i główny numer wersji, na przykład Apache/2.

Minor

Nazwa produktu oraz główny i poboczny numer wersji, na przykład Apache/2.2. Min[imal]

Nazwa produktu i pełny numer wersji, na przykład Apache/ ´2.2.9. OS

Nazwa produktu, pełny numer wersji oraz nazwa systemu operacyjnego, na przykład Apache/2.2.9 (Debian).

Rozdział 2. Środowisko serwera

|

31

Full

Nazwa produktu, pełny numer wersji, nazwa systemu operacyjnego oraz informacje o wkompilowanych modułach, na przykład Apache/2.2.9 (Debian) mod_ssl/2.2.9 OpenSSL/ ´0.9.8g.

UseCanonicalName rdzenny

SVD OFF

UseCanonicalName { ON | OFF | DNS }

Jeśli jest ustawiona na ON, Apache używa nazwy serwera oraz portu określonego za pomocą dyrektywy ServerName, kiedy konstruuje autoreferencyjne adresy URL oraz ustawia zmienne środowiskowe SERVER_NAME i SERVER_PORT. Jeśli jest ustawiona na OFF, Apache używa nazwy serwera pobranej z nagłówka Host (jeśli została określona) oraz numeru portu, z którym klient nawiązał połączenie. Jeśli jest ustawiona na DNS, Apache wykonuje odwrotne wyszukiwanie DNS adresu IP, z którym klient nawiązał połączenie, aby ustalić nazwę serwera, a następnie używa numeru portu, z którym klient nawiązał połączenie.

UseCanonicalPhysicalPort rdzenny

SVD OFF

UseCanonicalPhysicalPort { ON | OFF }

Jeśli jest ustawiona na ON, serwer nigdy nie uwzględnia portu fizycznego (tzn. portu, w którym odebrano żądanie) podczas konstruowania autoreferencyjnych adresów URL.

Konfiguracja sieci Apache nasłuchuje żądań w portach sieciowych określonych za pomocą dyrektywy Listen. Istnieje kilka parametrów, które można zmienić, aby zoptymalizować wydajność połączenia sieciowego. 32

|

Apache 2. Leksykon kieszonkowy

AcceptFilter rdzenny

S*

AcceptFilter protokół filtr

Włącza optymalizacje wywołania accept() specyficzne dla systemu operacyjnego.

AcceptMutex MPM

S default

AcceptMutex { default | metoda }

Zgodność: event, prefork, worker Metoda używana do serializacji żądań w gniazdach sieciowych. Dostępne metody oraz ich względna wydajność zależą od platformy i są wymienione w tabeli 2.1. Tabela 2.1. Metody w dyrektywie AcceptMutex Metoda

Opis

default

Używa ustawienia domyślnego wybranego podczas kompilacji. Używa systemu flock, aby zablokować plik zdefiniowany za pomocą dyrektywy LockFile. Używa systemu fcntl, aby zablokować plik zdefiniowany za pomocą dyrektywy LockFile. Implementuje muteks za pomocą semaforów zgodnych ze standardem POSIX. Używa muteksów POSIX zdefiniowanych w specyfikacji POSIX Threads (PThreads). Implementuje muteks za pomocą semaforów w stylu System V.

flock fcntl posixsem pthread sysvsem

Rozdział 2. Środowisko serwera

|

33

EnableSendfile rdzenny

SVDH ON

EnableSendfile { ON | OFF }

Zgodność: 2.0.44 i nowsze wersje Określa, czy do transmisji zawartości pliku ma być używane wywołanie systemowe sendfile(). Funkcji tej można używać, kiedy serwer nie musi badać danych w pliku, ale w niektórych okolicznościach lepiej ją wyłączyć.

HostnameLookups rdzenny

SVD OFF

HostnameLookups { ON | OFF | Double }

Określa, czy serwer ma wykonywać wyszukiwania DNS w celu odwzorowania nazw hostów na użytek rejestrowania zdarzeń oraz przekazywania nazw do skryptów CGI i SSI. Jeśli jest ustawiona na double, po każdym udanym odwrotnym wyszukiwaniu DNS wykonywane jest wyszukiwanie zwykłe, aby sprawdzić, czy adres IP pasuje do nazwy hosta. Bez względu na ustawienie tej dyrektywy, kontrola dostępu oparta na nazwie hosta zawsze używa podwójnego wyszukiwania DNS.

KeepAlive rdzenny

SV ON

KeepAlive { ON | OFF }

Włącza trwałe połączenia. Dzięki tej funkcji klient może używać nawiązanego połączenia do zgłaszania kolejnych żądań, co pozwala uniknąć kosztów związanych z tworzeniem oddzielnych połączeń.

34

|

Apache 2. Leksykon kieszonkowy

KeepAliveTimeout rdzenny

SV 15

KeepAliveTimeout sekundy

Limit czasu dla zgłaszania kolejnych żądań przez połączenie trwałe.

MaxKeepAliveRequests rdzenny

S 100

MaxKeepAliveRequests liczba

Maksymalna liczba żądań, które klient może zgłosić przez trwałe połączenie. Zero oznacza brak limitu.

Listen MPM

S*

Listen [adres-IP:]numer-portu [protokół]

Zgodność: wszystkie moduły MPM (wymagane od wersji 2.0) Określa port i adres, pod którym serwer oczekuje na połączenia. Argument protokół jest nowością w wersji 2.1.5 i ma domyślną wartość http dla portu 80 oraz https dla portu 443.

ListenBacklog MPM

S 511

ListenBacklog liczba

Zgodność: wszystkie moduły MPM Maksymalna liczba wpisów w kolejce połączeń obsługiwanej przez system operacyjny. Jeśli połączenia przychodzą szybciej, niż Apache może je przetworzyć, kolejka się przepełnia. System operacyjny odrzuca dalsze żądania, dopóki kolejka jest pełna.

Rozdział 2. Środowisko serwera

|

35

ReceiveBufferSize MPM

S 0

ReceiveBufferSize liczba-bajtów

Zgodność: wszystkie moduły MPM Określa rozmiar bufora odbiorczego TCP; zero oznacza, że należy użyć domyślnego ustawienia systemu operacyjnego.

SendBufferSize S MPM domyślne ustawienie systemu operacyjnego SendBufferSize liczba-bajtów

Zgodność: beos, mpm_netware, mpm_winnt, mpmt_os2, prefork, worker Określa rozmiar bufora nadawczego TCP; zero oznacza, że należy użyć domyślnego ustawienia systemu operacyjnego.

Timeout rdzenny

S 300 sekund, tzn. 5 minut

Timeout sekundy

Limit czasu używany w trzech sytuacjach: między zaakceptowaniem połączenia a odebraniem żądania, między przyjmowanymi pakietami w przypadku żądań POST lub PUT oraz między pakietami potwierdzenia podczas wysyłania odpowiedzi.

TraceEnable rdzenny TraceEnable { ON | OFF | Extended }

Zgodność: 2.0.55 i nowsze wersje

36

|

Apache 2. Leksykon kieszonkowy

S ON

Domyślnie żądania HTTP TRACE są dozwolone; jeśli ta dyrektywa jest ustawiona na OFF, serwer zwraca klientowi komunikat 405 (metoda niedozwolona). Wartość Extended służy do celów testowych; więcej informacji można znaleźć w dokumentacji Apache’a.

Win32DisableAcceptEx MPM

S

Win32DisableAcceptEx

Zgodność: mpm_winnt w wersji 2.0.49 i nowszych Wyłącza użycie wywołania WinSock API AcceptEx() do akceptowania połączeń sieciowych i zamiast niego używa accept(). Może się to przydać, jeśli jakieś produkty sieciowe firm trzecich zakłócają działanie funkcji AcceptEx().

Zarządzanie procesami Apache obsługuje żądania z wykorzystaniem procesów potomnych, wątków albo ich kombinacji. Każdy moduł MPM implementuje nieco inny model, który wykorzystuje mocne strony systemu operacyjnego. Jednak we wszystkich modelach istnieje jeden proces lub wątek, który monitoruje procesy albo wątki przeznaczone do obsługi żądań, zwiększając lub zmniejszając ich pulę w zależności od bieżącego obciążenia. Dyrektywy opisane w tym podrozdziale zapewniają kontrolę nad maksymalnym i minimalnym rozmiarem puli oraz nad innymi aspektami zarządzania procesami.

GracefulShutDownTimeout MPM

S 0

GracefulShutDownTimeout sekundy

Zgodność: event, prefork, worker

Rozdział 2. Środowisko serwera

|

37

Liczba sekund, przez które serwer powinien kontynuować działanie i przetwarzanie istniejących połączeń po otrzymaniu sygnału „łagodnego zatrzymania”. Jeśli ten parametr jest ustawiony na zero, serwer zaczeka na zakończenie wszystkich pozostałych żądań.

MaxClients MPM

S 256

MaxClients liczba

Zgodność: beos, event, prefork, worker Maksymalna liczba procesów potomnych, które mogą być uruchomione, a zatem maksymalna liczba żądań, które mogą być przetwarzane jednocześnie.

MaxMemFree MPM

SVDH* 0

MaxMemFree kilobajty

Zgodność: beos, event, mpm_netware, mpm_winnt, prefork, worker Maksymalna ilość wolnej pamięci (w kilobajtach), którą alokator może przetrzymywać bez wywoływania funkcji free(); zero oznacza nieograniczoną ilość.

MaxRequestsPerChild rdzenny

S 0

MaxRequestsPerChild liczba

Zgodność: event, mpm_netware, mpm_winnt, mpmt_os2, prefork, worker Maksymalna liczba połączeń, które może przetworzyć potomny proces serwera, zanim zakończy działanie. Procesy potomne mogą również kończyć działanie w przypadku spadku obciążenia. Zero 38

|

Apache 2. Leksykon kieszonkowy

oznacza nieograniczoną liczbę żądań. Ustawienie tego parametru może złagodzić skutki wycieku pamięci w serwerach, zwłaszcza w przypadku użycia mod_perl albo innych zasobochłonnych modułów, ponieważ zapobiega zużyciu całej pamięci przez proces, który wymknął się spod kontroli.

MaxRequestsPerThread MPM

S 0

MaxRequestsPerThread liczba

Zgodność: beos Maksymalna liczba żądań, które obsłuży pojedynczy wątek serwera przed zakończeniem pracy; zero oznacza brak limitu.

MaxSpareServers MPM

S 10

MaxSpareServers number

Zgodność: prefork Maksymalna liczba bezczynnych procesów potomnych. Jeśli obciążenie serwera spadnie, proces macierzysty nakaże bezczynnym procesom zakończyć działanie.

MaxSpareThreads MPM

S w zależności od modułu

MaxSpareThreads liczba

Zgodność: beos, event, mpm_netware, mpmt_os2, worker Maksymalna liczba bezczynnych wątków. Wartości domyślne: beos — 50, mpm_netware — 100; mpmt_os2 — 10; event oraz worker — 250.

Rozdział 2. Środowisko serwera

|

39

MaxThreads MPM

S 2048

MaxThreads liczba

Zgodność: mpm_netware Dozwolona liczba wątków.

MinSpareServers MPM

S 5

MinSpareServers liczba

Zgodność: prefork Minimalna liczba bezczynnych procesów potomnych, które powinny być obecne. Jeśli ich liczba spadnie poniżej tego poziomu, proces macierzysty utworzy nowe, aby dysponować pulą procesów gotowych do przyjmowania połączeń.

MinSpareThreads MPM

S w zależności od modułu

MinSpareThreads liczba

Zgodność: BeOS, event, mpm_netware, mpmt_os2, worker Minimalna liczba bezczynnych wątków. Wartości domyślne: beos — 1; mpm_netware — 10; mpmt_os2 — 5; event i worker — 75.

ServerLimit MPM ServerLimit liczba

Zgodność: event, prefork, worker

40

|

Apache 2. Leksykon kieszonkowy

S

Górny limit konfigurowalnej liczby procesów. Wartość domyślna to 256 w przypadku modułu prefork, a 16 w przypadku modułów event i worker; limity te można zwiększyć powyżej 200 000 dla modułu prefork i powyżej 20 000 dla modułów event i worker bez rekompilowania serwera.

StartServers MPM

S 5

StartServers liczba

Zgodność: event, mpmt_os2, prefork, worker Liczba procesów potomnych tworzonych podczas rozruchu serwera.

StartThreads MPM

S

StartThreads number

Zgodność: beos, mpm_netware Liczba wątków tworzonych podczas rozruchu serwera. Wartość domyślna to 10 w przypadku modułu beos i 75 w przypadku modułu mpm_netware.

ThreadLimit MPM

S

ThreadLimit liczba

Zgodność: mpm_winnt, worker Górny limit konfigurowalnej liczby wątków. Wartość domyślna to 1920 w przypadku modułu mpm_winnt i 64 w przypadku modułu worker; limity te można zwiększyć powyżej 15 000 dla modułu mpm_winnt i powyżej 20 000 dla modułu worker bez rekompilowania serwera. Rozdział 2. Środowisko serwera

|

41

ThreadsPerChild MPM

S 50

ThreadsPerChild liczba

Zgodność: mpm_winnt, worker Liczba wątków uruchamianych przez wątkowe wersje Apache’a, na przykład w systemie Windows. Wartość ta ogranicza liczbę połączeń, które mogą być przetwarzane jednocześnie.

ThreadStackSize MPM

S w zależności od platformy

ThreadStackSize liczba

Zgodność: event, mpm_netware, mpm_winnt, worker Określa rozmiar stosu dla wątków, które obsługują połączenia klienckie i wywołują moduły pomagające w przetwarzaniu żądań. Można zwiększyć tę wartość, jeśli Apache załamuje się ze względu na przepełnienie stosu wątków, albo zmniejszyć, aby umożliwić uruchomienie większej liczby wątków.

Ogólne dyrektywy konfiguracyjne Funkcje opcjonalne EnableExceptionHook rdzenny EnableExceptionHook { ON | OFF }

Zgodność: prefork, worker w wersji 2.0.49 i nowszych

42

|

Apache 2. Leksykon kieszonkowy

S OFF

Włącza punkt wejścia, który pozwala zewnętrznemu modułowi podjąć jakąś akcję, gdy proces potomny się załamie. Dyrektywa ta jest dostępna tylko wtedy, gdy Apache zostanie skompilowany z włączoną opcją --enable-exception-hook.

EnableMMAP rdzenny

SVDH (FileInfo) ON

EnableMMAP { ON | OFF }

Określa, czy w celu szybszego dostarczania stron mają być używane mechanizmy odwzorowywania pamięci oferowane przez system operacyjny.

Options rdzenny

SVDH (Options) All

Options [+|-]funkcja ...

Steruje zaawansowanymi funkcjami, które są włączane w określonym kontekście. Opcje zdefiniowane w najbardziej restrykcyjnym kontekście są uwzględniane w całości, chyba że wszystkie są poprzedzone znakiem plusa lub minusa; w takim przypadku funkcje poprzedzone plusem są włączone, minusem — wyłączone, a pozostałe — odziedziczone po kontekście nadrzędnym. None

Nie są włączone żadne funkcje dodatkowe. All

Włączone są wszystkie opcje z wyjątkiem MultiViews. ExecCGI

Wykonywanie skryptów CGI.

FollowSymLinks

Określa, czy Apache ma śledzić dowiązania symboliczne (ignorowana w sekcji ).

Rozdział 2. Środowisko serwera

|

43

Includes

Wykonywanie poleceń Server-Side Includes (SSI).

IncludesNOEXEC

Wyłącza polecenie SSI #exec oraz możliwość używania w poleceniu #include nazw plików odnoszących się do skryptów CGI.

Indexes

Określa, czy dla adresów URL, które zostają odwzorowane na katalog bez pliku indeksu, mają być generowane listingi katalogów. MultiViews

Włącza negocjację treści. SymLinksIfOwnerMatch

Dowiązania symboliczne są śledzone tylko wtedy, gdy właściciel dowiązania jest właścicielem docelowego pliku (ignorowana w sekcji = *

FilterTrace mod_filter (B)

SVD

FilterTrace filtr liczba

Określa poziom wyjściowych danych diagnostycznych dla określonego filtra. Domyślnie nie są generowane żadne informacje diagnostyczne.

Filtry zewnętrzne Moduł mod_ext_filter pozwala definiować zewnętrzne, uniksowe programy filtrujące jako filtry Apache’a. Tego rodzaju filtry są zwykle wolniejsze niż zaimplementowane jako moduły Apache’a, ale bywają przydatne podczas pisania prototypów.

ExtFilterDefine mod_ext_filter (B)

S*

ExtFilterDefine filtr parametr ...

Definiuje charakterystykę filtra zewnętrznego; filtr określa nazwę filtra używaną w dyrektywie SetOutputFilter. Określenie wiersza polecenia jest obowiązkowe: Rozdział 7. Filtry

| 135

cmd=wiersz-polecenia

Wiersz polecenia, który należy wykonać; jeśli zawiera spacje, argument powinien być ujęty w cudzysłów.

disableenv=zmn

Filtr nie działa, kiedy ustawiona jest zmienna środowiskowa zmn.

enableenv=zmn

Filtr działa tylko wtedy, kiedy ustawiona jest zmienna środowiskowa zmn.

ftype=typ-filtra

Wskazuje typ filtra. Typ filtra określa się za pomocą następujących liczb: 10 (resource), 20 (content_set), 30 (protocol), 40 (transcode), 50 (connection) lub 60 (network).

intype=typ-MIME

Typ MIME dokumentów, które powinny być filtrowane — jeśli jest określony, filtrowanie będzie wyłączone dla dokumentów innego typu.

mode={input|output}

Wskazuje, czy filtr jest wejściowy, czy wyjściowy. Ustawienie domyślne to output (wyjściowy).

outtype=typ-MIME

Typ MIME danych wyjściowych filtra; domyślnie przyjmuje się, że filtr nie zmienia typu MIME danych.

PreservesContentLength

Wskazuje, że długość treści filtrowanego dokumentu nie ulega zmianie. Domyślnie przyjmuje się, że filtr zmieni długość dokumentu.

ExtFilterOptions mod_ext_filter (B)

D* DebugLevel=0 NoLogStderr

ExtFilterOptions opcja ...

Określa opcje zewnętrznego modułu filtrującego: 136 |

Apache 2. Leksykon kieszonkowy

DebugLevel=liczba-całkowita

Poziom komunikatów diagnostycznych generowanych przez program filtrujący, które powinny być zapisywane w dzienniku błędów serwera. LogStderr

Włącza rejestrowanie komunikatów wypisywanych przez zewnętrzny program filtrujący na standardowym wyjściu błędu. NoLogStderr

Wyłącza rejestrowanie komunikatów wypisywanych przez zewnętrzny program filtrujący na standardowym wyjściu błędu. Komunikaty diagnostyczne są rejestrowane tylko wtedy, gdy dyrektywa LogLevel jest ustawiona na debug.

Dyrektywy modułu mod_deflate Moduł mod_deflate implementuje wyjściowy filtr DEFLATE i wejściowy filtr INFLATE z wykorzystaniem biblioteki kompresji danych zlib; filtry umożliwiają kompresowanie i dekompresowanie danych „w locie”.

DeflateBufferSize mod_deflate (E)

SV 8096

DeflateBufferSize liczba-bajtów

Zgodność: 2.0 i nowsze wersje Określa rozmiar bufora używanego do kompresji.

DeflateCompressionLevel mod_deflate (E)

SV ustawiana przez bibliotekę zlib

DeflateCompressionLevel poziom

Rozdział 7. Filtry

| 137

Poziom kompresji zlib w skali od jednego (najniższy) do dziewięciu (najwyższy). Wyższe poziomy zużywają więcej czasu procesora. Wartość domyślna jest ustawiana przez bibliotekę zlib.

DeflateFilterNote mod_deflate (E)

SV

DeflateFilterNote [Ratio | Input | Output ] nazwa-uwagi

Rejestruje uwagę, którą można następnie dołączyć do niestandardowego formatu dziennika; opcjonalny pierwszy argument wskazuje, czy uwaga powinna zawierać współczynnik kompresji w postaci procentowej (domyślnie), czy też jako liczbę bajtów w wejściowym lub wyjściowym strumieniu filtra.

DeflateMemLevel mod_deflate (E)

SV 9

DeflateMemLevel poziom

Wpływa na równowagę miejsca i czasu zużywanego przez funkcję kompresji. Poziom 1. zużywa najmniej pamięci, ale jest najwolniejszy i ogranicza poziom kompresji; poziom 9. zużywa najwięcej pamięci, ale jest najszybszy.

DeflateWindowSize mod_deflate (E)

SV 15

DeflateWindowSize liczba

Steruje rozmiarem okna kompresji używanego przez bibliotekę zlib. Wartość dyrektywy może wynosić od 1 do 15; jej zmniejszenie zwykle ogranicza współczynnik kompresji.

138 |

Apache 2. Leksykon kieszonkowy

Server-Side Includes (SSI) Moduł mod_include implementuje filtr wyjściowy INCLUDES, który interpretuje dyrektywy SSI osadzone w komentarzach HTML filtrowanego dokumentu. W wersjach starszych niż Apache 2.0 dyrektywy SSI były interpretowane przez procedurę obsługi o nazwie server-parsed; serwer nadal rozpoznaje tę nazwę i aktywuje filtr INCLUDES. Aby przetwarzanie SSI było włączone, w katalogu z plikami SSI musi być aktywna opcja Includes. Opcja IncludesNOEXEC wyłącza polecenie exec oraz możliwość dołączania plików, które spowodowałyby wykonanie skryptu CGI. Rozpoznawane są następujące dyrektywy SSI:

Wypisuje wartość zmiennej CGI lub SSI określonej przez atrybut zmn, zakodowaną zgodnie z atrybutem kodowanie (listę zmiennych można znaleźć w dodatku B). Kodowaniem domyślnym jest url (kodowanie URL), które można zmienić na entity (kodowanie encji) albo none.

Rozdział 7. Filtry

| 139



Wypisuje czas ostatniej modyfikacji określonego pliku.

Dołącza określony plik.

Ustawia wartość określonej zmiennej.

Definiuje bloki warunkowe. Obsługiwane są następujące operatory porównania: =, !=,