Historia wymaga pasterzy, nie rzeźników.

Zadanie to dotyczy prawie każdego administratora, po-
nieważ praktycznie w każdej organizacji jest uruchomiony Web serwer. Poprawna
konfiguracja serwera nie ogranicza się do otwarcia odpowiednich portów na zaporze
ogniowej, należy dokładnie przeanalizować parametry wydajnościowe oraz przede
wszystkim zagadnienia związane z jego bezpieczeństwem. Dalsza konfiguracja ser-
wera będzie prezentowana dla systemu Linux, dystrybucji Ubuntu 11.04.
5.1. Instalacja serwera Apache
W pierwszym kroku należy zainstalować Web serwer. W systemach z pakietami
typu deb oraz poprawnie skonfigurowaną aplikacją apt należy wykonać następującą
komendę:
# apt-get install apache2
Rysunek 5.1. Instalacja apache2
Weryfikację zainstalowanej wersji serwera można wykonać przy pomocy ko-
mendy:
# apt-cache search apache2
Rysunek 5.2. Weryfikacja zainstalowania pakietu apache2
lub
# dpkg --list | grep apache2
Rysunek 5.3. Weryfikacja zainstalowania pakietu apache2 - dpkg
Z zainstalowaniem serwera apache wiąże się utworzenie szeregu plików i ka-
talogów (które utworzone są automatycznie w procesie instalacji). W tabeli 5.1
przedstawione są podstawowe pliki oraz katalogi. Standardowe ustawienie serwera
apache powoduje, że po wykonaniu komend instalacyjnych serwer automatycznie
jest uruchamiany i umożliwiony jest dostęp do niego przez lokalny interfejs. Na
rysunku 5.4 przedstawiona jest strona startowa serwera apache2.
5.1. Instalacja serwera Apache
85
Rysunek 5.4. Strona startowa serwera apache2
Tablica 5.1. Pliki oraz katalogi powiązane z serwerem Apache
Nazwa Pliku/Katalogu
Opis
/etc/apach2
katalog zawierający pliki konfigu-
racyjne serwera
/usr/sbin/apache2
plik binarny serwera
/etc/apache2/apache2.conf
główny plik konfiguracyjny serwera
/etc/apache2/mods-available
dostępne moduły serwera
/etc/apache2/mods-enabled
włączone
moduły
serwera
jako
linki symboliczne do dostępnych
modułów
/etc/apache2/conf.d
katalog zawierający pliki konfigu-
racyjne serwera przeznaczony do
dodatkowej konfiguracji
/etc/apache2/sites-available
dostępne dodatkowe konfiguracje
systemu, początkowo zawierające
konfiguracje wirtualnych hostów
/etc/apache2/sites-enabled
włączone dodatkowe konfiguracje
systemu jako linki symboliczne
do plików zawartych w katalogu
sites-available
/var/run/apache2.pid
numer id procesu
/var/log/apache2
zapisy kontrolne serwera apache
(logi)
/var/www/
katalog stron html
/etc/apache2/envvar
zmienne środowiskowe serwera
86
5. Administracja serwerem WWW - Apache 5.2. Główny plik konfiguracyjny - apache2.conf
Podstawowa konfiguracja Web serwera sprowadza się do edycji zmiennych okre-
ślonych w pliku apache2.conf. W dalszej części zostaną omówione najbardziej istotne
parametry konfiguracyjne
5.2.1. ServerRoot
Jest to zmienna określająca katalog zawierający plik konfiguracyjne Web ser-
wera 5.5 . Standardowo jest to /etc/apache2. Jeżeli katalog ten zostanie zmieniony
wówczas należy przekopiować wszystkie plik i katalogi z katalogu domyślnego.
Rysunek 5.5. Zmienna ServerRoot
5.2.2. MPM - Moduł przetwarzania równoległego
Apache HTTP Server ma być wydajny i elastyczny, który może pracować na
bardzo wielu platformach w wielu różnych środowiskach. Apache zbudowany jest
modułowo. Konstrukcja ta umożliwia administratorowi wybór tych funkcji, które
zostaną włączone do serwera. Wybór ten należy dokonać poprzez wybranie modu-
łów apacha podczas jego kompilacji lub w czasie wykonywania. Jednym z modu-
łów jest moduł MPM (ang. Multi-Processing Modules), który jest odpowiedzialny
za równoległe przetwarzanie zapytań. W ramach tego głównego modułu można
wyróżnić jego trzy odmiany: prefork, worker, event. Prefork odwołuje się do
serwera WWW, który obsługuje żądania w sposób podobny do Apache 1.3. Jest
to najlepszy MPM służący do izolowania żądań do serwera, dzięki czemu każde
5.2. Główny plik konfiguracyjny - apache2.conf
87
realizowane żądanie nie wpływa jakiekolwiek inne. Worker realizuje serwera jako
proces multi-hybrydowy oraz wielowątkowy. Dzięki użyciu wątków do realizowania
żądań, serwer jest w stanie obsłużyć dużą liczbę żądań przy mniejszym zużyciu
zasobów systemowych niż w przypadku ich realizacji, bazując wyłącznie na pro-
cesach. Event ma na celu umożliwienie realizacji większej ilości żądań w sposób
jednoczesny. Wykonywane to jest przy pomocy wątków pomocniczych, które wyko-
nuję część obliczeń za wątki, które przekazały do nich zadanie. Taki podział zadań
pozwala na obsługę nowych żadań zwalniając główne wątki.
Każda z nich jest definiowana przy pomocy poniżej opisanych parametrów oraz
przedstawionych na rysunku 5.6:
— StartServers - parametr ustawia liczbę procesów potomnych tworzonych w
czasie uruchamiania; liczba procesów jest dynamicznie kontrolowana w zależ-
ności od obciążenia, z reguły nie ma powodów do zmiany tego parametru;
— MinSpareThreads - parametr wyznaczający minimalną liczbę bezczynnych