142 1 3MB
Polish Pages 220 Year 2010
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: =, !=,