Are you a developer? Try out the
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.
Zestaw ten jest jednym z najczęściej stosowanych serwerów WWW, pracujących nie tylko pod
kontrolą Linuksa, ale jest dostępny również dla systemu Windows. Dzięki obszernej dokumentacji na
swój temat, prostych zasadach konfiguracji, uniwersalności, obsłudze CGI (Common Gateway
Interface), PHP (Hypertext Preprocessor) i możliwości stworzenia wielu serwerów wirtualnych na
jednym lub wielu IP, serwer ten jest jednym z najpopularniejszych serwerów WWW wśród zwykłych
użytkowników, jak i wśród dużych firm zajmujących się świadczeniem usług internetowych.
Dla przeciętnego użytkownika serwer ten jest najczęściej przydatny do testowania wykonanych przez
siebie stron WWW, a głównie skryptów CGI i PHP, które są często podłączone do stron, jako liczniki,
księgi gości, wyszukiwarki czy programy przetwarzające różnorakie dane.
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 :
Are you a developer? Try out the
1) Instalacja serwera
2) Uruchamianie i zatrzymywanie serwera
3) Konfiguracja serwera
4) Serwery wirtualne
1) Instalacja serwera
Serwer Apache możemy zainstalować na dwa sposoby :
poprzez pakiet RPM
kompilując źródło z kodem serwera (metoda dla bardziej zaawansowanych
użytkowników)
Instalacja z RPM
Pakiet RPM z serwerem można znaleźć na jednej z płyt CD, z których instalowany był system.
Instalację można przeprowadzić programem rpm :
rpm -ivh apache.rpm
Pliki z pakietu RPM są instalowane w następujących katalogach :
/etc/httpd/conf - katalog ten zawiera wszystkie pliki konfiguracyjne
Are you a developer? Try out the
/etc/rc.d - RPM instaluje tutaj wszystkie potrzebne skrypty do automatycznego lub ręcznego
uruchamiania serwera
/home/httpd - w tym katalogu instalowane są wszystkie ikony, skrypty CGI i pliki HTML używane
przez serwer
/usr/bin - tu znajdują się pliki wykonywalne serwera wraz z wieloma narzędziami służącymi do obsługi
serwera
/var/log/http - w tym katalogu znajdują się pliki z dziennikami zdarzeń
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.
Teraz wydajemy polecenia
make
,
makeinstall
i nasze pliki serwera zostaną skompilowane i
zainstalowane.
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.
Are you a developer? Try out the
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)
-f
- określa położenie głównego pliku konfiguracyjnego, httpd.conf . Serwer podczas uruchamiania
czyta i wykonuje dyrektywy, znajdujące się właśnie w tym pliku
-v
- parametr ten powoduje wyświetlenie wersji Apache, nie uruchamiając serwera
-V
- parametr ten powoduje wyświetlenie wszystkich ustawień obowiązujących w chwili kompilacji
serwera
-h
- wyświetla informacje o sposobie użycia polecenia httpd
-l
- wyświetla listę modułów włączonych do kodu serwera w trakcie kompilacji
-L
- wyświetla listę dyrektyw konfiguracyjnych wraz z informacją, z którego modułu pochodzi dana
dyrektywa
-s
- opcja ta powoduje wyświetlenie ustawień serwerów wirtualnych pobranych z pliku
konfiguracyjnego
-t
- opcja ta powoduje przeanalizowanie wszystkich plików konfiguracyjnych serwera bez
uruchamiania Apacha
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 :
Are you a developer? Try out the
start - system używa tej opcji do uruchomienia usługi podczas start systemu.Opcja ta jest również
dostępna dla użytkownika ROOT
stop - opcja ta jest wykorzystywana do bezpiecznego zamknięcia usługi - powinno się jej używać
zamiast polecenia kill
reload - opcja ta powoduje ponowne odczytanie pliku konfiguracyjnego bez zamknięcia serwera
restart - rezultat wywołania skryptu z tą opcją jest taki, jak uruchomienie skryptu z opcją stop a
następnie z opcją start
status - rezultatem wywołania tej opcji jest wyświetlenie identyfikatora PID serwera i wszystkich jego
procesów potomnych
3) Konfiguracja serwera
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ę.
Dzięki dyrektywom można określać złożone opcje lub ustawić tylko konkretną wartość.
Niektóre dyrektywy zwane sekcjami mają budowę typu :
<dyrektywa opcja>
dyrektywa opcja opcja
dyrektywa opcja opcja
Are you a developer? Try out the
</dyrektywa>
Głównym i najważniejszym plikiem konfiguracyjnym serwera jest plik httpd.conf.
W pliku tym możemy umieścić wszystkie dyrektywy potrzebne do prawidłowego działania serwera.
Najważniejsze dyrektywy konfiguracyjne to :
ResourceConfig /dev/null
AccessConfig /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 .
Ustawienie typu serwera na standalone spowoduje, że nasz serwer będzie utrzymywany przez
system przez cały czas w gotowości do obsłużenia każdej prośby.
Opcja inetd spowoduje, że w reakcji na pojawiającą się prośbę zostanie uruchomiony oddzielny
serwer i po jej obsłużeniu zostanie wyłączony.
ServerRoot
Are you a developer? Try out the
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.
Domyślnie przyjmowanym portem jest port 80.
Listen
Możemy dokonać powiązania z określonym portem (lub adresem IP), na którym serwer będzie
prowadził nasłuchiwanie.
User
Group
Dyrektywa ta wskazuje na użytkownika i grupę, których własnością będzie proces httpd .
Przed ustawieniem tych opcji należy upewnić się, że podany użytkownik i grupa posiadają wpisy w
plikach passwd i group.
Należy być świadomym tego, że nasz serwer będzie pracował z prawami podanego użytkownika i
grupy co oznacza, że w przypadku włamania do systemu poprzez serwer lub jeden z programów CGI
włamywacze dostaną właśnie te prawa.
Are you a developer? Try out the
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.
Jeśli limit ten zostanie przekroczony, to obsługa nadmiarowych klientów będzie wstrzymana, co
umożliwia ochronę systemu przed załamaniem w wyniku przeciążenia serwera.
MinSpareServers
MaxSpareServers
Are you a developer? Try out the
Dyrektywy te regulują liczbę zapasowych procesów potomnych serwera - aby serwer mógł
dynamicznie dostosować się do obciążenia.
Oznacza to, że serwer utrzymuje potrzebną liczbę procesów do obsłużenia połączeń i kilka
dodatkowych do obsługi gwałtownego wzrostu obciążenia.
Osiąga się to przez okresowe sprawdzanie liczby serwerów, oczekujących na wywołanie, i jeśli liczba
ta jest mniejsza niż
MinSpareServers
, to dodaje zapasowe, a jeśli wolnych serwerów jest więcej niż
MaxSpareServers
, to część z nich jest likwidowana.
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
Are you a developer? Try out the
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
.
Jeśli opcja ta jest wyłączona, adresy URL tworzone są na podstawie nazwy hosta i numeru portu
pobranego z żądania.
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.
Zawartość tego katalogu używana jest domyślnie do obsługi wszelkich zadań.
UserDir
Are you a developer? Try out the
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
AddIcon
Opcją tą informujemy serwer, które ikony będą reprezentowały pliki o określonych typach lub
rozszerzeniach.
Are you a developer? Try out the
Ikony wyświetlane są gdy włączymy -
FancyIndexind
.
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
AddModule
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
Are you a developer? Try out the
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ą
standardowych plików index.*htm*
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
Are you a developer? Try out the
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
Are you a developer? Try out the
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
Are you a developer? Try out the
HeaderName
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.
Are you a developer? Try out the
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.
Jeśli serwer przechowuje głównie dokumenty tekstowe HTML, to najlepiej użyć wartości "text/plain",
jeśli natomiast udostępniane pliki są w większości binarne, to lepiej użyć "aplication/octet-stream", co
pozwoli zabezpieczyć przeglądarki przed próbami wyświetlania zawartości plików binarnych w postaci
tekstowej.
Are you a developer? Try out the
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.
Are you a developer? Try out the
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.
Zawartość katalogu określonego za pomocą tej dyrektywy traktowana jest, jak dokument, a nie
aplikacja.
ErrorLog
Określenie położenia pliku dziennika błędów.
LogLevel
Dyrektywa ta ustala ilość informacji rejestrowanych w pliku error_log.
Możliwe opcje tej dyrektywy to :
debug, info, notice, warn, error, critic, alert,
emerq
.
Are you a developer? Try out the
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.
Are you a developer? Try out the
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
BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response
Opcje te ustawiają blokadę podtrzymywania połączenia w przypadku komunikacji z przeglądarką
Netscape 2.x (implementacja ta zawiera błędy).
Druga dyrektywa przeznaczona jest dla programu Internet Explorer 4.0b2, który posiada błędy w
obsłudze podtrzymywania połączenia po otrzymaniu odpowiedzi 301,302.
BrowserMatch "RealPlayer 4\.0" force-response-1.0
BrowserMatch "Java/1\.0" force-response-1.0
BrowserMatch "JDK/1\.0" force-response-1.0
Powyższe dyrektywy wymuszają wysyłanie odpowiedzi w protokole HTTP/1.1 opatrzonych
nagłówkiem HTTP/1.0 na użytek przeglądarek niewłaściwie interpretujących dane w tym protokole.
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 :
Are you a developer? Try out the
<Directory / katalog_do_którego_będą_odnosić_się_ustawienia>
dyrektywy
</Directory>
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
All
- wszystkie dostępne opcje (poza MultiViews) są włączone w tym katalogu
Indexes
- w przypadku braku pliku podanego dyrektywą DirectoryIndex zostanie wyświetlona lista
plików w tym katalogu (w postaci strony HTML)
FollowSymLinks
- pozwala na dostęp do katalogu poprzez dowiązania symboliczne
ExecCgi
- daje możliwość wykonywania w tym katalogu skryptów CGI, nawet jeśli nie jest to katalog
określony dyrektywą
ScriptAlias
,
MultiView
- kiedy na serwerze nie ma pliku, o który prosi klient, serwer próbuje zgadnąć, który
dokument najbardziej pasuje do prośby klient
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
FileInfo
- plik .htaccess może zawierać dyrektywy modyfikujące typ informacji dokumentu
Are you a developer? Try out the
FileInfo
- plik
może zawierać dyrektywy modyfikujące typ informacji dokumentu
AutoConfig
- plik .htaccess może zawierać dyrektywy odpowiedzialne za autoryzację dostępu
Indexes
- plik .htaccess może zawierać dyrektywy sterujące indeksowaniem katalogów
Limit
- plik .htaccess może zawierać dyrektywy
allow
,
deny
i
order
,
order
- określa, jakie prawa dostępu można nadać katalogowi
allow
- dostęp do katalogu jest możliwy
deny
- dostęp do katalogu jest zabroniony
allow from all
lub
deny from all
- określa, kogo obowiązują dane prawa.
4) Serwery wirtualne
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).
Are you a developer? Try out the
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).
Aby było to możliwe należy umieścić na serwerze DNS dodatkowe nazwy dla naszego serwera za
pomocą rekordu CNAME. Wówczas gdy klient HTTP wyśle żądanie skierowane do serwera, wysyła
wraz z nim zmienną określającą nazwę serwera, do którego żądanie jest adresowane. To właśnie w
oparciu o tę zmienną serwer określa, do którego wirtualnego hosta ma przekazać żądanie.
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ą.
Dla każdej nazwy obsługiwanej przez ten serwer należy stworzyć osobny blok dyrektyw w postaci :
<VirtualHost IP_naszego_serwera >
ServerName nazwa_hosta_1.nasza_domena
SerwerAlias alias1, alias2
DocumentRoot /ścieżka_do_katalogu_hosta_1/
TransferLog /ścieżka_do_katalogu_hosta_1/logs/acces_log
ErrorLog / ścieżka_do_katalogu_hosta_1/logs/error_log
</VirtualHost>
Are you a developer? Try out the
<VirtualHost IP_naszego_serwera >
ServerName nazwa_hosta_2.nasza_domena
SerwerAlias alias1, alias2
DocumentRoot /ścieżka_do_katalogu_hosta_2/
TransferLog /ścieżka_do_katalogu_hosta_2/logs/acces_log
ErrorLog / ścieżka_do_katalogu_hosta_2/logs/error_log
</VirtualHost>
W blokach konfiguracyjnych pojawia się dyrektywa
SerwerAlias
.
Dyrektywą tą możemy określić aliasy dla nazwy naszego serwera wirtualnego, dzięki czemu
użytkownicy będą mogli używać skróconej nazwy hosta, np.:
zamiast
http://nazwa_hosta_1.nasza_domena/
można użyć nazwy
http://alias1/
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
Are you a developer? Try out the
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 >
ServerName www.nazwa_hosta_1.nasza.domena
DocumentRoot /ścieżka_do_katalogu_hosta_1/
TransferLog /ścieżka_do_katalogu_hosta_1/logs/acces_log
ErrorLog / ścieżka_do_katalogu_hosta_1/logs/error_log
</VirtualHost>
Are you a developer? Try out the
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 :