Konfiguracja serwera Apache

by on Sie.24, 2011, under Hosting

Apache jest to nic innego jak serwer HTTP, który stanowi jedno z najczęściej spotykanych środowisk oferowanych przez firmy hostingowe.

Apache instalujemy w Debianie wydając polecenie apt-get install apache2. Po instalacji warto zainteresować się plikiem konfiguracyjnym w lokalizacji /etc/apache2/apache2.conf

Oto typowa zawartość tego pliku:

ServerName NazwaSerwera
Timeout 30
<IfModule mpm_prefork_module>
StartServers 20
MinSpareServers 15
MaxSpareServers 30
MaxClients 100
MaxRequestsPerChild 1000
</IfModule>
<IfModule mpm_worker_module>
StartServers 10
MaxClients 100
MinSpareThreads 20
MaxSpareThreads 50
ThreadsPerChild 20
MaxRequestsPerChild 1000
</IfModule>
ServerSignature Off

Multi-Processing Module (MPM) ma za zadanie izolować requesty do serwera HTTP w ten sposób, aby nie miały one wzajemnie na siebie wpływu.  Defaultowa zawartość pliku konfiguracyjnego jest całkiem w porządku, ale jeśli zamierzamy wykorzystywać serwer do celów testowych, a nie produkcyjnych to zachęcam do wprowadzenia modyfikacji.

Przede wszystkim parametr MaxClients powinien być tak ustawiony, aby wytrzymał ilość spodziewanych przez nas jednoczesnych żądań do serwera HTTP, ale nie może być zbyt wysoko ustawiony ponieważ przy dużym obciążeniu serwera zabraknie nam RAM do obsługi wszystkich procesów.

Dyrektywa StartServers ustawia liczbę procesów potomnych tworzonych w czasie uruchamiania serwera Apache. Ponieważ liczba procesów jest dynamicznie kontrolowana w zależności od obciążenia, z reguły nie ma powodu do zmiany tego parametru, natomiast ja polecam ustawienie tego parametru na możliwie najmniejszy jeśli serwer nie będzie wykorzystywany w celach produkcyjnych.

Dyrektywa MaxSpareServers ustawia maksymalną liczbę bezczynnych procesów potomnych. Są to procesy, które nie  przetwarzają requestów – są uśpione. Wstawianie tutaj dużej wartości liczbowej nie będzie najlepszym pomysłem.

Dyrektywa MinSpareServers ustawia minimalną liczbę bezczynnych procesów potomnych, które nie przetwarzają requestów do serwera HTTP. Jeżeli odpalonych jest mniej procesów niż pozwala na to wartość ustawiona przy MinSpareServers to proces macierzysty tworzy nowe procesy potomne z maksymalną prędkością jednego procesu na sekundę.

Dyrektywa MaxRequestsPerChild określia limit procesów, które może uruchomić proces child. Jeżeli MaxRequestsPerChild zostanie przekroczone to child zostanie ubity, a gdy ustawimy ten parametr na wartość zero to proces będzie wykonywał się nieprzerwanie – apache go nie ubije.

MaxSpareThreads określa maksymalną liczbę wątków, które pozostają w stanie bezczynności. To MPM monitoruje liczbę bezczynnych wątków per child. Jeśli jest zbyt wiele uruchomionych wątków to Apache ubije wątki i childa. Dla sekcji worker domyślnie MaxSpareThreads wynosi 250. Jeśli jest zbyt wiele wątków pozostaje bezczynne to wątki są ubijane. a następnie child  – aż liczba bezczynnych wątków jest mniejsza od wartości liczbowej przy MaxSpareThreads.

MinSpareThreads określa liczbę wątków które mogą być uruchomione podczas wystąpienia nagłych żądań do serwera HTTP. Parametr monitoruje liczbę bezczynnych wątków per child. Jeśli liczba bezczynnych wątków jest mniejsza od zadeklarowanej wartości to Apache zacznie tworzyć nowe wątki, w tym childy.

ThreadsPerChild określa liczbę wątków utworzonych przez każdy proces potomny. Dziecko tworzy te wątki na początku i nie tworzy ich więcej, niż zadeklarowana wartość.

Timeout określa ilość sekund po których dostaniemy informacje, że serwer Apache nie odpowiada.

Za pomocą ServerSignature możemy włączyć lub wyłączyć wyświetlanie stopki z informacją o serwerze i zainstalowanym oprogramowaniu. Taka sygnatura pojawia się m.in. przy stronie błędu 404. Sugeruję wyłączyć wyświetlanie takich
informacji, aby potencjalny intruz nie wiedział jaką wersję serwera HTTP mamy.

Jaką konfigurację przyjmiecie uzależnione jest od tego jaki ruch spodziewacie się przyjmować na serwerze. Metodą prób i błędów uzyskacie swoją idealną i optymalną konfigurację.


Comments are closed.

Wyszukiwarka