Architektura Apache

Co to jest?

Apache (www.apache.org) to najpopularniejszy dziś serwer HTTP, rozwijany w ramach projektu open-source. Wywodzi się on z pierwszego serwera HTTP autorstwa Tima Bernersa-Lee. Dziś jest uznawany za doskonały przykład i wzorzec dla implementacji innych serwerów HTTP. Swoją popularność zawdzięcza w dużej mierze obecności w dystrybucyjnej wersji systemu Linux, jednak dostępne są też bezpłatne wydania serwera Apache dla rozmaitych platform operacyjnych. Apache posługuje się pojedynczym plikiem konfiguracyjnym o nazwie „httpd.conf”. Do uruchomienia i zatrzymywania Apache używamy poleceń:

  • service apache start – powoduje uruchomienie serwera HTTP Apache
  • service apache restart – powoduje zatrzymanie i ponowne uruchomienie serwera HTTP Apache
  • service apache stop – powoduje zatrzymanie serwera HTTP Apache

 Architektura serwera Apache

Serwer Apache posiada architekturę wieloprocesową i wielomodułową. Na poziomie systemu operacyjnego serwer Apache jest reprezentowany przez jeden proces nadrzędny, tzw. parent process, i wiele procesów podrzędnych, tzw. child processes. Zadaniem procesu nadrzędnego jest prowadzenie nieprzerwanego nasłuchu sieciowego w oczekiwaniu na żądania nadchodzące od klientów HTTP. Gdy proces nadrzędny otrzymuje żądanie HTTP, wtedy uruchamia proces potomny i zleca mu obsługę tego żądania, a sam powraca do nasłuchu. Proces potomny przetwarza żądanie
HTTP i wysyła odpowiedź HTTP do klienta HTTP. Po przesłaniu odpowiedzi HTTP proces potomny kończy pracę. Liczba równocześnie pracujących procesów potomnych wynika z liczby równocześnie obsługiwanych żądań HTTP. Przy braku żądań liczba procesów potomnych może wynosić zero.

Często administratorzy korygują taki domyślny model zarządzania procesami serwera Apache i za pomocą stosownych parametrów konfiguracyjnych sprawiają, że w pamięci operacyjnej zawsze znajduje się niewielka pula bezczynnych procesów potomnych, gotowych przyjąć nowe żądania. Pula ta jest tworzona w chwili uruchomienia serwera Apache, a gdy wolne procesy potomne są konsumowane przez nowe żądania, dochodzi do automatycznego uruchamiania dalszych zapasowych procesów. Gdy proces potomny kończy obsługę żądania HTTP, wtedy może nie kończyć pracy lecz powrócić do puli procesów bezczynnych.

Każdy proces Apache ma budowę modułową. Składa się z modułu interfejsu HTTP,
odpowiadającego za obsługę komunikacji sieciowej oraz z wielu modułów rozszerzających. Każdy moduł rozszerzający odpowiada za realizację fragmentu funkcjonalności serwera. Moduły posiadają niepowtarzalne nazwy, rozpoczynające się od słowa „mod_”. Przykładowo, moduł „mod_access” odpowiada za zapisy historii żądań HTTP w pliku dziennika serwera Apache.

Architektura serwera Apache może być rozszerzana przez programistów. W oparciu o opublikowaną specyfikację interfejsów istnieje możliwość implementacji własnych modułów rozszerzających i ich dołączania do serwera. Administrator serwera Apache ma też możliwość usuwania modułów, z których funkcji nie chce korzystać.

Zadanie:

  1. Napisz 3 przykładów (s:200) czego NIE mógłbyś  robić gdyby nie istniały by strony WWW.
  2. Znajdź i opisz (s:200) jakie są inne serwery WWW.

Źródło: http://wazniak.mimuw.edu.pl/images/8/81/AWWW-1st3.6-w12.tresc-1.0czb.pdf