KONFIGURACJA
SERWERA WWW (APACHE)
Wraz z dystrybucją Linuksa otrzymujemy najpopularniejszy od lat, darmowy pakiet
oprogramowania Apache. Nazwa "APACHE" powstała od słowa path (łata), gdyż
serwer ten powstał na podstawie łat do ogólnie dostępnego serwera WWW - NCSA. Apache rozprowadzany na licencji public domain daje możliwość dostępu do kodu źródłowego serwera. Siłą napędową rozwoju serwera jest Apache Group - zespół programistów ochotników, którzy wraz z użytkownikami rozwijają program, jako Apache Project, dając każdemu szansę napisania nowych łat do programu . Główna baza programu znajduje się pod adresem : http://www.apache.org
1) Instalacja serwera
Serwer Apache możemy zainstalować na dwa sposoby :
Instalacja z RPM Pakiet RPM z serwerem można znaleźć na jednej z płyt CD, z których instalowany
był system. Pliki z pakietu RPM są instalowane w następujących katalogach : /etc/httpd/conf - katalog ten zawiera wszystkie pliki
konfiguracyjne
Kompilacja źródeł W pierwszej kolejności należy uruchomić skrypt ./configure wraz z opcją --prefix, dzięki której można przekazywać do skryptu różne parametry, np. położenie wraz z nazwą katalogu, w którym zostanie zainstalowany Apache : ./configure -prefix=/katalog/instalacyjny Uruchomienie tego skryptu spowoduje powstanie w katalogu /src/
plików Configuration i Makefile.
2) Uruchamianie i zatrzymywanie serwera Proces uruchamiania serwera httpd może być wykonywany ręcznie lub automatycznie. Uruchamianie Apacha z linii poleceń pozwala na zmianę domyślnie ustawionych parametrów, takich jak położenie plików konfiguracyjnych. Składnia polecenia httpd jest następująca : httpd [-d katalog] [-f pliki] [-C dyrektywa] [-v] [-V] [-h] [-l] [-L] [-S] [-t] gdzie : -d - określa położenie katalogu ServerRoot (położenie
głównego katalogu z zainstalowanym serwerem) Jeśli chcemy, aby nasz serwer uruchamiał się automatycznie podczas startu systemu należy umieścić specjalny skrypt httpd w katalogu /etc/rc.d/init.d/ . Dzięki opcjom tego skryptu można kontrolować działanie serwera : start - system używa tej opcji do uruchomienia usługi podczas start
systemu.Opcja ta jest również dostępna dla użytkownika ROOT
Konfiguracja pracy serwera polega na uaktywnianiu pewnych dyrektyw, które w zasadzie są poleceniami ustawiającymi konkretną opcję. Dyrektywy konfiguracyjne mają zazwyczaj taką samą składnię : dyrektywa opcja opcja ... W jednej linii można umieścić tylko jedną dyrektywę. Niektóre dyrektywy zwane sekcjami mają budowę typu : <dyrektywa opcja> Głównym i najważniejszym plikiem konfiguracyjnym serwera jest plik httpd.conf. Najważniejsze dyrektywy konfiguracyjne to :
ResourceConfig /dev/null W pierwszych wersjach serwera dyrektywy konfiguracyjne były umieszczane dodatkowo w dwóch plikach : srm.conf i acces.conf . Dyrektywy te nakazują serwerowi zignorowanie tych plików, gdyż cała konfiguracja serwera zawarta jest w jednym pliku : httpd.conf .
ServerType Dzięki tej dyrektywie można ustawić dwa typy pracy naszego serwera : standalone,
inetd .
ServerRoot Dyrektywa ta określa najwyższy katalog drzewa katalogów, względem którego określane będą lokalizacje plików konfiguracyjnych i dzienników.
Port Wskazujemy port, na którym nasz serwer będzie prowadził nasłuchiwania.
Listen Możemy dokonać powiązania z określonym portem (lub adresem IP), na którym serwer będzie prowadził nasłuchiwanie.
User Dyrektywa ta wskazuje na użytkownika i grupę, których własnością będzie proces httpd
.
ServerAdmin Opcja ta powinna wskazywać na adres internetowy administratora serwera.
ServerName Opcją tą ustalamy nazwę serwera zwracaną klientowi, jeśli rożni się ona od nazwy podanej w zadaniu . Nazwa ta musi być zgodna z nazwą podaną na serwerze DNS.
StartServers Dyrektywą tą określamy liczbę serwerów uruchamianych podczas startu Apache.
MaxClients Jest to maksymalna liczba klientów, którzy mogą być obsłużeni w tym samym czasie.
MinSpareServers Dyrektywy te regulują liczbę zapasowych procesów potomnych serwera - aby serwer
mógł dynamicznie dostosować się do obciążenia.
Timeout Opcją tą określamy limit czasu przeznaczony na obsługę pojedyńczego żądania.
KeepAlive Dyrektywą tą możemy zezwolić na obsługę wielu zadań w ramach jednego połączenia.
MaxKeepAliveRequests Określamy maksymalną liczbę zadań w ramach jednego połączenia.
KeepAliveTimeout Określamy czas oczekiwania na kolejne zadanie w ramach tego samego połączenia.
MaxRequestsPerChild Dyrektywą tą możemy określić maksymalna liczbę żądań obsługiwanych w cyklu życia procesu potomnego.
UseCanonicalName Włączenie tej opcji nakazuje serwerowi, by w przypadku odwołań wskazujących na
siebie tworzył adres URL na podstawie wartości z ServerName i Port.
DocumentRoot Dyrektywa ta powinna zawierać ścieżkę do katalogu zawierającego katalog główny
serwisu WWW, skąd będą pobierane dokumenty do wysłania klientowi.
UserDir Dyrektywa ta określa podkatalog katalogu macierzystego użytkownika w przypadku odwołania do adresu zawierającego ciąg ~użytkownik, w którym może on umieszczać publiczne dokumenty HTML .
DirectoryIndex W dyrektywie tej znajdują się nazwa pliku lub plików zawierających indeks katalogu, czyli pliki, które zostaną wysłane użytkownikowi w odpowiedzi na żądanie dostępu do adresu.
IndexIgnore Umożliwia określenie nazwy plików, które będą ignorowane podczas indeksowania katalogu.
FancyIndexing Dyrektywa ta umożliwia włączenie dodatkowych opcji indeksowania katalogów.
AddIconByType Opcją tą informujemy serwer, które ikony będą reprezentowały pliki o określonych
typach lub rozszerzeniach.
DefaultIcon Opcja ta określa domyślną ikonę dla plików, którym nie przypisano jej jawnie poprzez ustawieni opcji w AddIconByType i AddIcon.
LoadModule Aby móc używać modułów skompilowanych jako DSO, należy je załadować, a następnie dodać do serwera. Kolejność ładowania modułów jest istotna. Najważniejsze moduły to : core - zawiera podstawowe funkcje zawsze dostępne w dystrybucji (kontrolują również inne moduły) mod_access - kontrola dostępu do plików w zależności od adresu IP lub nazwy komputera klienta. Użycie tego modułu pozwala na dokładną kontrolę użytkowników np.:administrator może zezwolić na wykonywanie skryptów CGI tylko pracownikom firmy mod_actions - odpowiada za wykonywanie skryptów CGI w zależności od typu danych lub sposobu pobrania mod_alias - pozwala mapować (udostępniać) część systemu plików w katalogu głównym Apache-a, umożliwia też przekierowywanie adresów URL. Część plików może znajdować się poza katalogiem lub nawet na innym komputerze w sieci mod_asis - deklaracja plików, które mogą być wysyłane bez nagłówków HTTP (pliki *.asis) mod_auth - moduł odpowiedzialny za uwierzytelnianie użytkowników na podstawie zdefiniowanych plików tekstowych mod_auth_anon - pozwala anonimowym użytkownikom na dostęp do danych, podlegających weryfikacji dostępu mod_auth_db - uwierzytelnianie za pomocą plików DB mod_auth_dbm - uwierzytelnianie za pomocą plików DBM mod_autoindex - automatyczne tworzenie indeksów dla katalogów,
które nie mają mod_cern_meta - emulacja plików CERN HTTPD pozwala dodawać dodatkowe nagłówki do wszystkich plików mod_cgi - prawdopodobnie najpopularniejszy moduł. Pozwala wykonywać skrypty CGI po stronie serwera i zwracać wyniki klientowi mod_digest - uwierzytelnianie za pomocą algorytmu MD5 mod_dir - podstawowe operacje na katalogach. Zwykle używany do uzupełniania adresu np.: http://serwer.pl/plik zostanie zastąpiony poprawnym wywołaniem http://serwer.pl/plik/ mod_env - moduł odpowiedzialny za przekazywanie zmiennych środowiskowych do skryptów CGI/SSI mod_example - demonstracja możliwości interfejsu programowego - Apache API mod_expires - dodaje znacznik Expires (strona wygasa, traci ważność) do stron WWW przesyłanych klientowi - ważne dla często zmienianych serwisów, które powinny być zawsze aktualne mod_headers - pozwala na dowolną modyfikację nagłówków HTTP mod_imap - wsparcie dla map plików graficznych (.map) używane po stronie serwera WWW mod_include - pozwala włączyć zawartość plików lub wyniki działania skryptu do zwykłych plików HTML i zwracać ich zawartość klientowi mod_info - odpowiedzialny za informację o ustawieniach serwera Apache mod_log_agent - zapisywanie w logach nazw i wersji przeglądarek internetowych klientów mod_log_config - konfigurowalne logowanie zdarzeń - pliki log zapisywane są w formacie Common Logfile Format mod_log_referer - logowanie odwołań do plików umieszczonych na serwerze mod_mime - określenie typu pliku na podstawie rozszerzenia mod_mime_magic - określenie typu pliku na podstawie kilku bajtów jego zawartości mod_mmap_static - pozwala określić pewne niezmienne pliki, które zostaną umieszczone w pamięci serwera Apache w celu szybszego dostępu mod_negotiation - odpowiedzialny za uzgadnianie najlepszej reprezentacji danych w przeglądarce klienta. Wprowadzony ze względu na zgodność z HTTP/1.1 mod_proxy - Apache staje się serwerem proxy dla stron WWW, przyspiesza dostęp do często używanych danych, gdy serwer WWW jest wykorzystywany do zapamiętywania danych mod_rewrite - moduł o ogromnych możliwościach. Pozwala modyfikować adresy URL w "locie" za pomocą wyrażeń regularnych mod_setenvif - pozwala modyfikować zmienne środowiskowe na podstawie wywołania mod_so - moduł eksperymentalny. Powoduje ładowanie dodatkowych modułów podczas działania serwera mod_speling - moduł odpowiedzialny za poprawianie błędów w adresach URL mod_status - wyświetla bieżący stan serwera Apache mod_userdir - ustawienia dotyczące katalogów domowych użytkowników mod_unique_id - generuje unikalny identyfikator dla każdego żądania mod_usertrack - śledzenie zachowań użytkowników za pomocą Cookies (tzw. ciasteczka), szczególnie przydatne dla np. stałych klientów w sklepach internetowych lub do określania preferencji użytkownika mod_vhost_alias - moduł wykorzystywany przy konfiguracji serwerów wirtualnych
ReadmeName Dyrektywy te określają nazwy plików zawierających stopkę i nagłówek dołączony na końcu i początku indeksu katalogu.
ScriptAlias Opcja ta określa, w którym katalogu będą znajdować się skrypty serwera (zawartość katalogu traktowana jest, jako aplikacje).
AddHandler cgi-script .cgi Opcja zezwalająca na używanie skryptów CGI.
AddHandler server-parsed .shtml Opcja zezwalająca na używanie poleceń SSI w dokumentach HTML.
AddHandler send-as-is asis Zezwalamy serwerowi na przesyłanie dokumentów w postaci niezmodyfikowanej.
AddHandler imap-file map Zezwalamy na używanie map graficznych, interpretowanych po stronie serwera.
AddHandler type-map var Zezwalamy na wykorzystywanie map typów.
TypesConfig Dyrektywa ta służy do wskazywania lokalizacji plików: mime types.
DefaultType Wskazujemy domyślny typ MIME używany w przypadku niemożności jego określenia.
AddType Pozwala na dodanie nowego typy MIME bez konieczności modyfikowania pliku mime types.
AddLanguage Dyrektywa ta pozwala na obsługę wielu wersji językowych dokumentów, co pozwoli na dostarczenie przeglądarce dokumentu w żądanym przez nią języku.
LanguagePriority Określa priorytet wersji językowej w przypadku braku rozstrzygnięcia podczas negocjacji zawartości. Lista powinna zawierać kody języków w kolejności malejących priorytetów.
AddEncoding Dyrektywa ta daje możliwość przeglądarkom na rozpakowywanie danych w locie.
AccessFileName Opcją tą wskazujemy na plik odpowiedzialny za ustawienie kontroli dostępu do katalogu.
ProxyRequests Dyrektywą tą ustawiamy nasz serwer, jako serwer pośredniczący.
Alias /alias/ "/prawdziwa nazwa/" Dyrektywa ta umożliwia nam zdefiniowanie dowolnej liczby aliasów dla katalogów.
ErrorLog Określenie położenia pliku dziennika błędów.
LogLevel Dyrektywa ta ustala ilość informacji rejestrowanych w pliku error_log.
CustomLog Określamy położenie pliku dziennika transakcji : rejestrowanie informacji o typie przeglądarki i adresie źródłowym odwołania.
LogFormat Dzięki tej opcji możemy ustalić wzorce formatów dla dyrektywy CustomLog.
HostnameLookups Dzięki tej dyrektywie możemy nakazać serwerowi, aby rejestrował nazwy klientów (on) lub tylko ich adresy (off).
PidFile Dyrektywa ta zawiera nazwę pliku, do którego serwer podczas startu zapisze swój PID.
ScoreBoardFile Określa plik do zapisywania wewnętrznych informacji o procesach potomnych serwera.
ErrorDocument Ta dyrektyw może zawierać komunikaty o błędach serwera. Jako opcja może być również podany adres strony, która wyświetli informacje o błędzie.
BrowserMatch "Mozilla/2" nokeepalive Opcje te ustawiają blokadę podtrzymywania połączenia w przypadku komunikacji z
przeglądarką Netscape 2.x (implementacja ta zawiera błędy).
BrowserMatch "RealPlayer 4\.0" force-response-1.0 Powyższe dyrektywy wymuszają wysyłanie odpowiedzi w protokole HTTP/1.1 opatrzonych
Dla każdego katalogu i jego podgatalogów, do którego Apache ma dostęp można określić zestaw dostępnych w nim praw, usług i funkcji. Służy do tego sekcja : <Directory /
katalog_do_którego_będą_odnosić_się_ustawienia> składająca się z następujących dyrektyw : Options - dyrektywa ta może przyjmować następujące opcjie: None - żadna z dostępnych opcji nie zostanie włączona w tym
katalogu
AllowOverride - dyrektywa ta określa, które parametry konfiguracji głównej można zmieniać dla podkatalogów za pomocą plików .htaccess. Dyrektywa AllowOverride składa się z następujących opcji : Options - plik .htaccess może
zmieniać opcje nie wymienione w dyrektywie Options dla danego
katalogu order - określa, jakie prawa
dostępu można nadać katalogowi
allow from all lub deny from all - określa, kogo obowiązują dane prawa.
Serwery wirtualne są jedną z bardziej popularnych usług dostarczanych przez serwer Apache. Dzięki odpowiedniej konfiguracji kilku dyrektyw można stworzyć praktycznie nieograniczoną liczbę serwerów WWW, znajdujących się na tym samym fizycznym serwerze, posiadających własne unikalne nazwy i przechowujących swoje dane w odrębnych katalogach . Serwer Apache dostarcza dwóch sposobów tworzenia hostów wirtualnych. Możemy posiadać tylko jeden adres IP z wieloma rekordami CNAME umieszczonymi na serwerze DNS, które będą wskazywały właśnie na ten adres lub druga możliwość, to stworzenie tylu serwerów, ile mamy dostępnych adresów (jeden serwer przyporządkowany jednemu interfejsowi).
Serwery wirtualne identyfikowane nazwami domenowymi Konfiguracja serwera identyfikowanego nazwami domenowymi umożliwia uruchomienie wielu
hostów wirtualnych na tym samym fizycznym serwerze, któremu przyporządkowany jest tylko
jeden adres IP (jeden adres IP wiele serwerów WWW).
Przed głównymi blokami konfigurującymi hosty wirtualne należy dodać dyrektywę : NameVirtualHost IP_naszego_serwera dzięki której określimy, który adres IP ma być skojarzony z więcej niż jedną
nazwą.
<VirtualHost IP_naszego_serwera > <VirtualHost IP_naszego_serwera >
W blokach konfiguracyjnych pojawia się dyrektywa SerwerAlias . zamiast
Wewnątrz bloku <VirtualHost> </VirtualHost> możemy podawać dowolne dyrektywy konfiguracyjne, które zostały omówione w poprzednich rozdziałach oprócz dyrektyw : ServerType, StartServers, MaxSpareServers, MinSpareServers, MaxRequestsPerChild, BindAddress, Listen, PidFile, TypesConfig, ServerRoot . Jeśli planujemy uruchomienie na naszym serwerze większej ilości hostów wirtualnych, dobrym rozwiązaniem jest umieszczenie wszystkich komunikatów w jednym pliku dziennika błędów, zamiast w osobnych plikach. Dzięki temu rozwiązaniu unikniemy wyczerpania się systemowego limitu liczby deskryptorów plików (zwykle 64 dla jednego procesu), co mogłoby spowodować brak wpisów w dziennikach lub długi czas oczekiwania na odpowiedź serwera po pojawieniu się żądania HTTP.
Serwery wirtualne identyfikowane adresami IP Konfiguracja tego typu serwerów jest dobrym rozwiązaniem, jeśli posiadamy dużą pulę adresów publicznych. Wówczas każdemu interfejsowi w naszym systemie możemy przypisać jeden adres IP. Konfiguracja tego typu serwerów jest adekwatna do konfiguracji serwerów identyfikowanych nazwami domenowymi, z wyjątkiem braku dyrektywy NameVirtualHost. Jeśli skonfigurowaliśmy poprawnie interfejsy sieciowe, to uruchomienie hostów wirtualnych ogranicza się do dodania w pliku httpd.conf kilku prostych dyrektyw w postaci :
<VirtualHost adres_IP_dla pierwszego_hosta_1 >
Podobne bloki należy dodać dla każdego uruchamianego serwera, nie zapominając o zmianie ścieżek dostępu do ich katalogów.
Przykładowy plik konfiguracyjny : httpd.conf GRUPA MEDIA INFORMACYJNE & ADAM NAWARA |