AKADEMIA GÓRNICZO-HUTNICZA
Wydział Elektrotechniki, Automatyki, Informatyki i
Elektroniki
KATEDRA INFORMATYKI
Referat z przedmiotu "Administracja systemami komp."
httpd - instalacja, konfiguracja, moduły, suEXEC,
PHP4, CGI, serwisy wirtualne
IV Informatyka
rok akad 2000/2001
Semestr letni
Prowadzący:
mgr.inż. Bogusław Juza
Skład zespołu:
Aleksandra Duda
Maciej Borowiec
Szymon Brandys
Spis treści:
1 Instalacja i przygotowanie do pracy serwera Apache ......................................................4
1.1 Kompilacja ze zródeł ..............................................................................................4
1.1.1 Instalacja automatyczna ..................................................................................4
1.1.2 Instalacja półautomatyczna..............................................................................4
1.1.3 Struktura pliku Configuration:.........................................................................4
1.1.4 Dyrektywy zarządzające modułami: ................................................................5
1.1.5 Ustawienia i reguły konfiguracji......................................................................5
1.2 Uruchamianie i zatrzymywanie programu Apache ..................................................7
1.3 Opcje wywołania programu Apache........................................................................8
1.4 Pierwsza witryna WWW.........................................................................................8
2 Konfiguracja serwera Apache.........................................................................................9
2.1 Dyrektywy blokowe................................................................................................9
2.2 Pozostałe dyrektywy.............................................................................................11
2.2.1 Dyrektywy o charakterze administracyjnym:.................................................12
2.2.2 Dyrektywy dotyczące zarządzania procesami potomnymi .............................17
2.3 Procedury obsługi typów plików...........................................................................18
2.3.1 Dyrektywy służące do zarządzania procedurami obsługi: ..............................18
3 Serwery wirtualne.........................................................................................................19
3.1 Serwery wirtualne identyfikowane nazwami .........................................................20
3.2 Serwery wirtualne identyfikowane adresami IP.....................................................21
3.3 Serwery wirtualne identyfikowane nazwami domenowymi i adresami IP..............22
3.4 Serwery wirtualne identyfikowane numerami portów............................................22
3.5 Kilka kopii serwera Apache działające w systemie................................................23
4 Zmiana konfiguracji serwera w trakcie pracy................................................................25
4.1 Ponowne uruchamianie serwera............................................................................25
4.2 lokalne pliki konfiguracyjne (.htaccess) ................................................................25
5 Interfejs CGI.................................................................................................................26
5.1 Skrypt w katalogu cgi-bin.....................................................................................28
5.2 Skrypt w głównym katalogu dokumentów.............................................................28
5.3 Dyrektywy zarządzające obsługą skryptów:..........................................................28
5.4 Dyrektywy służące do ograniczenia zasobów dla skryptów:..................................29
5.5 Pobieranie danych w skryptach CGI .....................................................................30
6 Program suEXEC i jego zastosowanie..........................................................................30
6.1 Instalacja programu suEXEC................................................................................31
6.2 Działanie programu suEXEC................................................................................32
7 Moduły programu Apache............................................................................................33
7.1 Dynamic Shared Object (DSO).............................................................................33
7.2 Implementacja ......................................................................................................34
7.3 Przykład użycia: ...................................................................................................34
7.3.1 Umieszczanie całego kodu Apache w bibliotece DSO:..................................34
7.3.2 Kompilacja i instalacja modułu Apache pochodzącego z dystrybucji w pliku
DSO 35
7.3.3 Kompilacja i instalacja własnego modułu Apache w pliku DSO....................35
Referat z przedmiotu "Administracja systemami komp." Aleksandra Duda
Maciej Borowiec
Szymon Brandys
Strona 2 z 44
7.3.4 Kompilacja i instalacja własnego modułu Apache w pliku DSO poza drzewem
Apache 36
7.4 Zalety i wady DSO...............................................................................................36
8 PHP4............................................................................................................................37
8.1 Instalacja ..............................................................................................................37
8.1.1 Instalacja jako DSO.......................................................................................37
8.1.2 Instalacja jako moduł statyczny.....................................................................38
9 Apache jako serwer pośredniczący (proxy)...................................................................39
9.1 Dyrektywy sterujące serwerem pośredniczącym...................................................40
9.2 Buforowanie stron.................................................................................................42
10 Materiały..................................................................................................................44
Referat z przedmiotu "Administracja systemami komp." Aleksandra Duda
Maciej Borowiec
Szymon Brandys
Strona 3 z 44
1 Instalacja i przygotowanie do pracy serwera Apache
1.1 KOMPILACJA ZE yRÓDEA
Pierwszym krokiem jest pobranie i rozpakowanie kodu zródłowego Apache
(lista serwerów z kodem Apache jest dostępna pod : http://www.apache.org).
Pliki z kodem są spakowane do postaci .tar.gz lub tar.Z.
1.1.1 Instalacja automatyczna
Możliwość automatyzacji procesu kompilacji i konfiguracji Apache pojawiła
się od wersji 1.3. Obecnie zadanie to jest realizowane przez skrypt configure i
związany z nim plik Makefile.tmpl (oba umieszczone w głównym katalogu
instalacyjnym).
Polecenia uruchamiające automatyczną kompilację Apache:
% ./configure
% cd src
% make
1.1.2 Instalacja półautomatyczna
Jeśli mamy zródła w wersji beta, należy przede wszystkim utworzyć kopię
pliku .../src/Configuration.tmpl o nazwie Configuration. Plik ten należy
następnie wyedytować w celu ustalenia odpowiedniej konfiguracji programu.
Informacje z plików Configuration i Makefile.tmpl są następnie przetwarzane
przez skrypt configure, czego wynikiem jest właściwy plik Makefile dla
Apache.
W większości przypadków modyfikacje pliku Configuration sprowadzają się
do zaznaczenia w nim modułów, które mają zostać włączone do
kompilowanego kodu. Określenia modułów można również dokonać za
pomocą parametrów przekazywanych w wierszu poleceń.
1.1.3 Struktura pliku Configuration:
Plik Configuration może zawierać następujące elementy:
Komentarze rozpoczynające się znakiem #. Większość komentarzy
poprzedza wiersze zawierające polecenia włączenia modułów.
Reguły konfiguracyjne, rozpoczynające się słowem Rule
Polecenia umieszczane w pliku Makefile, nie zawierające prefiksu
Polecenia włączania modułów, rozpoczynające się słowem AddModule,
określające moduły, które mają zostać włączone do kodu wynikowego i
uaktywnione
Referat z przedmiotu "Administracja systemami komp." Aleksandra Duda
Maciej Borowiec
Szymon Brandys
Strona 4 z 44
Polecenia opcjonalnego włączenia modułów, rozpoczynające się
ciągiem %Module, określające moduły dołączone, lecz nieaktywne do
czasu wydania odpowiedniej dyrektywy.
Moduły są samodzielnymi blokami kodu zródłowego, obsługującymi
poszczególne funkcje programu Apache. Aby włączyć dany moduł do
kompilowanego kodu, wystarczy usunąć znak komentarza w odpowiedniej
linii pliku Configuration
Tworząc skrypty konfiguracyjne serwera można wykorzystywać dyrektywę
IfModule, pozwalającą uwzględnić obecność lub nieobecność modułu.
Przykładowo, aby uwzględnić obecność (lub brak) modułu odpowiadającego
za pliki logów można zastosować następującą konstrukcję:
LogFormat klient& .
1.1.4 Dyrektywy zarządzające modułami:
ClearModuleList dyrektywa ta usuwa wszystkie pozycje z listy
aktywnych modułów. Od momentu jej wydania Apache nie
będzie korzystał z żadnych modułów aż do chwili wydania
dyrektywy AddModule.
AddModule m1 m2 .. dyrektywa ta uaktywnia moduły
wyszczególnione na liście. Moduły muszą zostać włączone do
kodu wynikowego podczas kompilacji za pomocą instrukcji
AddModule w pliku Configuration.
1.1.5 Ustawienia i reguły konfiguracji
Jeśli zachodzi konieczność ustalenia dodatkowych opcji kompilatora,
bibliotek czy plików włączanych, można tego dokonać przez zdefiniowanie
zmiennych:
EXTRA_CFLAGS=
EXTRA_LDFLAGS=
EXTRA_LIBS=
EXTRA_INCLUDES=
Referat z przedmiotu "Administracja systemami komp." Aleksandra Duda
Maciej Borowiec
Szymon Brandys
Strona 5 z 44
Skrypt Configure stara się samodzielnie ustalić dane o używanym systemie
operacyjnym i kompilatorze, toteż uaktywnianie i nadawanie wartości
zmiennym
#CC=
#OPTIM=02
#RANLIB=
jest w normalnych okolicznościach zbędne.
Umieszczane w pliku Configuration reguły pozwalają zaradzić kilku bardziej
niecodziennym problemom związanym z konfiguracją. Ogólna składnia
reguły wygląda następująco:
Rule NAZWA=wartość
Dopuszczalne wartości to:
Yes żądana operacja jest wykonywana zgodnie z treścią reguły
Default skrypt stara się samodzielnie dobrać najlepsze
rozwiązanie.
A oto lista podstawowych reguł, których można użyć:
STATUS w przypadku użycia wartości yes skrypt Configure sprawdza, czy
moduł raportowania stanu serwera jest włączony. Jeśli tak, generowane
będą pełne informacje o stanie serwera. W przeciwnym przypadku reguła jest
ignorowana.
SOCKS4 SOCKS jest protokołem przesyłania pakietów przez firewalle, w
którym informacje przetwarzane są częściowo po stronie klienta (więcej
informacji na stronie: ftp://ftp.nec.com/pub/security/socks.csts).
Uaktywnienie tej reguły pozwala serwerowi Apache realizować wychodzące
połączenia SOCKS, co znajduje zastosowanie jedynie w przypadku użycia go
jako serwera pośredniczącego. W przypadku ustawienia tej wartości na yes
należy pamiętać o dopisaniu do zmiennej EXTRA_LIBS ścieżki do bibliotek
SOCKS (lub skrypt configure przyjmie dla niej domyślną wartość : -
L/usr/local/lib lsocks). Domyślna wartość tej reguły to no.
SOCKS5 reguły tej należy użyć zamiast SOCKS4 w przypadku, gdy chcemy
korzystać z plików SOCKS 5.
IRIXNIS w przypadku instalacji Apache w środowisku IRIX firmy Silicon
Graphics należy tej regule nadać wartość yes w przypadku użycia usług NIS.
Domyślna wartość to no
IRIXN32 jeśli Apache instalowany jest w środowisku IRIX użycie wartości
yes nakazuje wykorzystanie bibliotek n32 zamiast o32. Domyślna wartość to
yes
Referat z przedmiotu "Administracja systemami komp." Aleksandra Duda
Maciej Borowiec
Szymon Brandys
Strona 6 z 44
PARANOID w trakcie wykonywania skryptu Configure istnieje możliwość
wywołania przez moduły poleceń powłoki systemu. Ustalenie tej regule
wartości yes nakazuje drukowanie instrukcji wykonywanych przez moduły.
Domyślna wartość to no.
Oprócz powyższych istnieje grupa reguł, które skrypt konfiguracyjny stara
się ustalić samodzielnie. Mogą być one w razie potrzeby predefiniowane przez
użytkownika. W obecnej chwili grupa ta zawiera jedynie jedną regułę:
WANTHSREGEX interpretacja wyrażeń regularnych odbywa się w Apache
zgodnie z konwencją POSIX. Apache zawiera własny pakiet do analizy
wyrażeń regularnych, jednak w razie potrzeby może wykorzystać
mechanizmy systemu operacyjnego. W takiej sytuacji należy tej regule nadać
wartość no, lub zablokować ją znakiem komentarza. Domyślna wartość
reguły wynosi no (może ona zostać zmieniona przez system operacyjny).
Po zakończeniu edycji pliku Configuration należy wydać następujące
polecenia:
% ./Configure
% make
1.2 URUCHAMIANIE I ZATRZYMYWANIE PROGRAMU APACHE
Aby uruchomić serwer należy po prostu uruchomić program httpd. Program
ten wczyta plik httpd.conf, który powinien być umieszczony w miejscu
wkompilowanym w kod (domyślnie /usr/local/apache/conf/httpd.conf).
Jeśli ten plik znajduje się w innym miejscu, należy wywołać program httpd z
jego ścieżką jako parametrem:
/usr/local/apache/httpd f sciezka_do_httpd.conf
Jeśli coś się nie udało, na ekranie pojawi się komunikat o błędzie. W
przeciwnym przypadku serwer został uruchomiony i pracuje. W momencie
uruchomienia program serwera tworzy kilka procesów potomnych. Jeśli
Apache został uruchomiony przez roota, główny proces pozostanie jego
własnością, natomiast procesy potomne będą należały do użytkownika
podanego w pliku httpd.conf.
Aby serwer mógł działać po restarcie systemu, należy dodać odpowiednie
wpisy do plików startowych systemu (zazwyczaj rc.local lub plik w katalogu
rc.N ). Te wpisy spowodują uruchomienie Apache przez roota.
Referat z przedmiotu "Administracja systemami komp." Aleksandra Duda
Maciej Borowiec
Szymon Brandys
Strona 7 z 44
Aby zatrzymać serwer, należy zatrzymać proces główny. PID procesu
głównego jest zapisywany do pliku httpd.pid w katalogu z logami (chyba, że
serwer zostanie inaczej skonfigurowany). Nie ma sensu zatrzymywać
procesów potomnych, gdyż zostaną one od nowa utworzone przez proces
główny.
Zazwyczaj komenda służąca do zatrzymania serwera będzie wyglądała
następująco:
kill TERM `cat /usr/local/apache/logs/httpd.pid`
1.3 OPCJE WYWOAANIA PROGRAMU APACHE
Uruchamiając program serwera (httpd) można użyć następujących opcji:
-D identyfikator definiuje identyfikatory używane w
dyrektywach
-d katalog określa położenie głównego katalogu serwera
(ServerRoot)
-f nazwa-pliku określa położenie pliku konfiguracji serwera
-C dyrektywa wykonuje zadaną dyrektywę przed rozpoczęciem
przetwarzania pliku konfiguracji serwera
-c dyrektywa wykonuje zadaną dyrektywę po zakończeniu
przetwarzania pliku konfiguracji serwera
-v wyświetla numer wersji serwera
-V Wyświetla ustawienia kompilacji
-h wyświetla wykaz dostępnych dyrektyw
-l wyświetla listę modułów wchodzących w skład kodu
programu
-S wyświetla ustawienia pobrane z pliku konfiguracji (obecnie
wyłącznie opis bloków )
-X uruchamia pojedynczą kopię serwera. Opcja ta
przeznaczona jest wyłącznie do celów diagnostycznych i nie
powinna być używana w innych okolicznościach . Może ona
spowodować znaczne spowolnienie obsługi żądań.
1.4 PIERWSZA WITRYNA WWW
Z punktu widzenia Apache witryna WWW to po prostu katalog położony
gdzieś w systemie plików serwera. Katalog ten powinien zawierać co najmniej
trzy podkatalogi:
conf tu znajduje się plik konfiguracji serwera, instruujący
Apache w jaki sposób ma sobie radzić z różnymi rodzajami
kierowanych do niego żądań.
Referat z przedmiotu "Administracja systemami komp." Aleksandra Duda
Maciej Borowiec
Szymon Brandys
Strona 8 z 44
htdocs tu znajdują się dokumenty, pliki graficzne i inne dane,
przekazywane klientom zgłaszającym żądania
logs ten podkatalog zawiera pliki logów, rejestrujących przebieg
działalności serwera.
Aby utworzyć witrynę, należy stworzyć katalog odpowiadający jej nazwie, a w
nim podkatalogi wymagane przez program Apache do pracy. Następnym
krokiem jest edycja plików konfiguracyjnych serwera.
W katalogu ServerRoot/conf znajdują się następujące pliki: srm.conf-dist,
access.conf-dist i httpd.conf-dist. W praktyce zalecane jest przechowywanie
wszystkich informacji w pliku httpd.conf-dist oraz pozbycie się pozostałych
(zostały wprowadzone jedynie dla zachowania zgodności ze standardem
NCSA). W wersjach wcześniejszych niż 1.3 należało oprócz usunięcia plików
wyczyścić odwołania do nich, natomiast począwszy od wersji 1.3 Apache
zadowala się stwierdzeniem, ze dany plik nie istnieje.
2 Konfiguracja serwera Apache
2.1 DYREKTYWY BLOKOWE
Apache udostępnia cały szereg tzw. dyrektyw blokowych, które pozwalają
ograniczyć zasięg działania zawartych w nich innych dyrektyw do
określonych serwerów wirtualnych, katalogów czy też plików. Dyrektywy
blokowe są niezwykle istotne w praktyce, gdyż to one umożliwiają
administratorowi uruchomienie większej liczby niezależnych serwerów WWW
poprzez pojedyncze wywołanie programu Apache. Tworzenie serwerów
wirtualnych zostanie omówione pózniej.
użycie: konfiguracja główna
składnia:
...
dyrektywa ta pozwala określić nazwę domenową lub adres IP (I ewentualnie
numer portu) przypisany do danego serwera wirtualnego. Domyślnie
wykorzystywany jest port 80 lub port określony za pomocą dyrektywy Port.
Użycie w miejscu argumentu serwer ciągu _default_ powoduje, że zawartość
bloku będzie się odnosiła do wszystkich serwerów nie uwzględnionych w
innych blokach . Zazwyczaj serwer jest nazwą domenową lub
adresem IP naszego hosta.
Referat z przedmiotu "Administracja systemami komp." Aleksandra Duda
Maciej Borowiec
Szymon Brandys
Strona 9 z 44
Wewnątrz dyrektywy blokowej można używać niemal
wszystkich dyrektyw, za wyjątkiem następujących: ServerType, StartServers,
MaxSpareServers, MinSpareServers, MaxRequestsPerChild, BindAddress,
Listen, PidFile, TypesConfig, ServerRoot, NameVirtualHost. Dyrektywy User i
Group mogą zostać użyte wewnątrz bloku jeśli używany jest
program suEXEC.
i
użycie: konfiguracja główna, serwery wirtualne
składnia:
...
Dyrektywa ta pozwala na ograniczenie zasięgu działania bloku dyrektyw do
wybranego katalogu lub grupy katalogów. Należy tu podkreślić, że
specyfikacja katalogu traktowana jest jako bezwzględna, tj. dyrektywa
obejmie swoim działaniem nie system plików Apache, ale cały
system plików, poczynając od katalogu głównego. Nazwa katalogu może
zawierać symbole wieloznaczne ? i * , a także nawiasy kwadratowe ([]),
służące do definiowania grup znaków. Umieszczenie znaku tyldy (~) na
początku nazwy katalogu pozwala na użycie w niej kompletnych wyrażeń
regularnych.
Dyrektywa działa tak samo, jak .
i
użycie: konfiguracja główna, serwery wirtualne, pliki .htaccess.
składnia:
...
Dyrektywa ta pozwala ograniczyć działanie bloku dyrektyw do plików o
nazwie zadanej parametrem plik. Nazwa ta określana jest względem katalogu
DocumentRoot i może zawierać symbole wieloznaczne oraz wyrażenia
regularne poprzedzone znakiem ~. Dyrektywa używana jest
wraz z wyrażeniami regularnymi nie poprzedzonymi znakiem tyldy.
i
użycie: konfiguracja główna, serwery wirtualne
składnia:
...
Użycie tej dyrektywy pozwala na ograniczenie zasięgu działania bloku
dyrektyw do zadanych adresów URL. Podobnie jak poprzednio, adresy mogą
zawierać symbole wieloznaczne oraz wyrażenia regularne poprzedzone
Referat z przedmiotu "Administracja systemami komp." Aleksandra Duda
Maciej Borowiec
Szymon Brandys
Strona 10 z 44
znakiem tyldy. W Apache od wersji 1.3 znaki ? i * nie są zgodne ze
znakiem / .
Działanie dyrektywy może zostać zmienione przez dyrektywę
, a ta z kolei przez nadrzędną do niej dyrektywę .
składnia:
...
Dyrektywa ta pozwala na warunkowe uaktywnienie bloku dyrektyw w
przypadku uruchomienia programu Apache z opcją D nazwa. Pozwala to na
zamknięcie kilku wariantów konfiguracji w pojedynczym pliku httpd.conf.
składnia:
...
Dyrektywa ta pozwala na warunkowe uaktywnienie bloku dyrektyw w
zależności od tego czy moduł o danej nazwie został dołączony do programu
Apache. Poprzedzenie nazwy modułu znakiem ! powoduje uaktywnienie
dyrektyw w przypadku, gdy moduł nie został dołączony. Bloki ograniczone
dyrektywami mogą być zagnieżdżane.
2.2 POZOSTAAE DYREKTYWY
User identyfikator-uzytkownika
Użycie: konfiguracja główna, serwery wirtualne
Wartość domyślna: #-1
Dyrektywa ta ustala identyfikator użytkownika przypisywany serwerowi
Apache. Jej użycie wymaga uprzedniego uruchomienia głównego procesu
serwera, należącego do użytkownika root. Identyfikator użytkownika to:
Nazwa identyfikująca użytkownika przez nazwę jego konta
lub
#numer identyfikujący użytkownika przez jego numer w
systemie.
Tak identyfikowany użytkownik nie powinien mieć żadnych praw dostępu do
plików innych niż te, które chcemy udostępnić na WWW. Użytkownik ten nie
może również mieć prawa do wykonywania jakichkolwiek programów, które
nie są przeznaczone do uruchamiania w odpowiedzi na żądania obsługiwane
przez program httpd. Zaleca się utworzenie użytkownika i grupy
dedykowanych wyłącznie dla potrzeb serwera WWW.
Group identyfikator-grupy
Referat z przedmiotu "Administracja systemami komp." Aleksandra Duda
Maciej Borowiec
Szymon Brandys
Strona 11 z 44
Użycie: konfiguracja główna, serwery wirtualne
Wartość domyślna: #-1
Dyrektywa ta określa identyfikator grupy przypisywany serwerowi Apache.
Jej użycie musi być poprzedzone uruchomieniem głównego procesu serwera,
należącego do użytkownika root. Identyfikator grupy to:
Nazwa identyfikująca grupę poprzez jej nazwę lub
#numer identyfikujący grupę poprzez podanie jej numeru
Również i w tym przypadku zaleca się utworzenie oddzielnej grupy wyłącznie
na potrzeby serwera.
2.2.1 Dyrektywy o charakterze administracyjnym:
ServerName nazwa-domenowa
Użycie: konfiguracja główna, serwery wirtualne
Dyrektywa ta definiuje nazwę domenową serwera
DocumentRoot sciezka-dostepu
Użycie: konfiguracja główna, serwery wirtualne
Wartość domyślna: /usr/local/apache/htdocs
Dyrektywa ta określa nazwę katalogu, zawierającego pliki udostępniane
przez serwer WWW. O ile w pliku konfiguracji serwera nie użyto dyrektywy
Alias, ścieżka wyodrębniona z odebranego przez serwer adresu URL jest
dołączana do sciezki-dostępu podanej w dyrektywie, a powstała nazwa
identyfikuje położenie żądanego dokumentu.
TransferLog określa położenie pliku logów udanych transakcji
ErrorLog określa położenie pliku logów błędów
UseCanonicalName on|off
Użycie: konfiguracja główna, serwery wirtualne, katalogi, pliki .htaccess
Dyrektywa ta steruje sposobem tworzenia przez Apache adresów
wskazujących na siebie , co ma miejsce np. w przypadku przeadresowania
odwołania do adresu http://www.aaa.bb.com/jakiskatalog do poprawnej
formy http://www.aaa.bb.com/jakiskatalog/ (różnica tkwi w końcowym
znaku / ). W przypadku włączenia tej dyrektywy do przeadresowania
zostanie użyta nazwa serwera i numer portu zadane dyrektywami
ServerName i Port. Jej wyłączenie spowoduje użycie nazw określonych w
oryginalnym żądaniu.
Dyrektywa ta przydaje się w przypadku, gdy komputery użytkowników
należą do tej samej domeny, co serwer. W takim przypadku użytkownik może
odwoływać się do serwera za pomocą nazwy skróconej (np. www ), zamiast
wpisywać nazwę pełną (np. www.aaa.bb.cc). Jeśli dyrektywa
UseCanonicalName jest aktywna, podanie przez użytkownika adresu bez
końcowego znaku / (np. http://www/katalog) spowoduje przeadresowanie
Referat z przedmiotu "Administracja systemami komp." Aleksandra Duda
Maciej Borowiec
Szymon Brandys
Strona 12 z 44
żądania do adresu URL http://www.aaa.bb.cc/katalog/, podczas gdy przy
wyłączonej dyrektywie żądanie trafiłoby pod adres http://www/katalog/
ServerAdmin adres_e-mail
Użycie: konfiguracja główna, serwery wirtualne
Dyrektywa ta pozwala zdefiniować adres poczty elektronicznej, umieszczany
automatycznie przez Apache na stronach generowanych w przypadku
wystąpienia błędu.
ListenBacklog liczba
Wartość domyślna: 511
Użycie: konfiguracja główna
Dyrektywa ta określa maksymalną długość kolejki połączeń oczekujących na
obsłużenie. W normalnych warunkach operacja ta jest zbyteczna, jednak
może okazać się zbawienna w przypadku dokonania na serwer ataku metodą
SYN flooding, polegającą na inicjalizowaniu dużej liczby połączeń bez ich
finalizowania. W niektórych systemach takie nie do końca zrealizowane
połączenia są kolejkowane, co może doprowadzić do wyczerpania zasobów i
zdławienia systemu.
Dodatkowe informacje na temat dyrektywy ListenBacklog można znalezć w
opisie parametru backlog w man pod hasłem listen(2)
ServerType inetd|standalone
Wartość domyślna: standalone
Użycie: konfiguracja główna
Dyrektywa ta określa sposób zarządzania przez Apache procesami
potomnymi.
" Inetd użycie tej wartości zabrania serwerowi Apache
uruchamiania całej grupy procesów potomnych oczekujących na
nadejście żądania obsługi. W zamian za to odebranie każdego
żądania powoduje uruchomienie pojedynczej kopii, która po
obsłużeniu żądania jest likwidowana. Metoda ta jest wolniejsza,
jednak redukuje konsumpcję zasobów systemu w okresach biegu
jałowego . Użycie serwera Apache w trybie inetd wymaga
odpowiedniego skonfigurowania demona systemowego inetd za
pomocą pliku /etc/inetd.conf. Wiersz definiujący ustawienia dla
Apache powinien mieć postać:
http stream tcp nowait root /usr/local/bin/httpd httpd d katalog
" Standalone użycie tej wartości nakazuje serwerowi utworzenie
zbioru procesów potomnych oczekujących na nadchodzące
żądania.
ServerSignature off|on|email
Referat z przedmiotu "Administracja systemami komp." Aleksandra Duda
Maciej Borowiec
Szymon Brandys
Strona 13 z 44
Użycie: katalogi, plik .htaccess
Wartość domyślna: off
Dyrektywa ta umożliwia zidentyfikowanie serwera, który faktycznie obsłużył
dane żądanie (co ma znaczenie np. w przypadku użycia serwerów
pośredniczących). Jej włączenie (ServerSignature on) powoduje
automatyczne dołączenia do generowanych przez serwer dokumentów stopki
(sygnatury), zawierającej numer wersji programu serwera i nazwę serwera
wirtualnego zdefiniowaną w dyrektywie ServerName. Użycie formy
ServerSignature email dodaje do stopki łącze mailto: zawierające adres
określony dyrektywą ServerAdmin.
ServerTokens min[imal]|OS|full
Użycie: konfiguracja główna
Wartość domyślna: full
Dyrektywa ta ustala zakres informacji, jakimi przedstawia się serwer
Apache:
Min[imal] serwer zwraca tylko swoją nazwę i numer wersji
OS servwer zwraca swoją nazwę i numer wersji oraz nazwę
macierzystego systemu operacyjnego
Full serwer zwraca dane oisane powyżej oraz informacje o
wchodzących w skład jego kodu modułach
ServerAlias nazwa1 nazwa2 ...
Użycie: serwery wirtualne
Dyrektywa ServerAlias pozwala na zdefiniowanie listy alisaów, czyli
synonimów nazw identyfikujących dany serwer wirtualny. Protokół
HTTP/1.1 umożliwia odwołanie się do serwera poprzez nazwę za pomocą
pola Host: nagłówka HTTp. Podana w nagłówku nazwa powinna odowiadać
którejś z nazw zdefiniowanych w dyrektywach ServerName, ServerAlias lub
VirtualHost.
ServerPath sciezka
Użycie: serwery wirtualne
Protokół HTTP/1.1 umożliwia związanei z tym samym adresem IP kilku nazw
domenowych serwerów. W takiej sytuacji klient identyfikuje odpowiedni
serwer poprzez przesłanie w nagłówku żądania poal Host: nazwa-serwera.
Chociaż migracja do protokołu HTTP została już prawie zakończona, niektóre
przeglądarki będą zapewne jeszcze przez jakiś czas używały protokołu
HTTP/`.0 nie przesyłając pól Host. Z tego też względu stworzono dyrektywę
ServerPath, pozwalającą na dostęp do witryny przez podanie ścieżki
ServerRoot katalog
Użycie: konfiguracja główna
Wartość domyślna: /usr/local/etc/htppd
Referat z przedmiotu "Administracja systemami komp." Aleksandra Duda
Maciej Borowiec
Szymon Brandys
Strona 14 z 44
Dyrektywa ta określa położenie podkatalogów conf. i logs, zawierających pliki
konfiguracyjne oraz pliki logów. Jest ona wymagana w przypadku
uruchomienia programu Apache z opcją f, natomiast użycie opcji d
pozwala na jej pominięcie.
PidFile plik
Użycie: konfiguracja główna
Wartość domyślan: logs/httpd.pid
Jednym z ważniejszych parametrów opisujących pracujący program jest
przypisany mu identyfikator procesu (PID). Serwer Apache zapisuje tę
wartość w pliku, którego położenie określa właśnie dyrektywa PidFile.
Domyślnie plik ten nosi nazwę httpd.pid i jest umieszczany w podkatalogu
.../logs. Wartość odczytaną z tego pliku można wykorzystać do zatrzymania
procesu poleceniem kill.
ScoreBoardFile plik
Użycie: konfiguracja główna
Wartość domyślna: logs/apache_status
Dyrektywa ta jest w niektórych systemach wymagana do poprawnego
utworzenia pliku tymczasowego, wykorzystywanego przez serwer do
zarządzania procesami potomnymi. Najprostszą metodą przekonania się, czy
w danym systemie plik taki jest wymagany, jest uruchomienie programu
Apache i sprawdzenie, czy w wyniku tego został utworzony plik o nazwie
zadanej w dyrektywie. Jeśli okaże się, że plik taki jest niezbędny, należy
podjąć kroki w celu zapewnienia, by nie był on równocześnie używany przez
więcej niż jedne proces główny serwera Apache.
CoreDumpDirectory katalog
Wartość domyślna:
Użycie: konfiguracja główna
Dyrektywa ta określa położenie katalogu, w którym w razie awarii Apache
zapisze plik core. Domyślnie plik ten powinien być zapisywany w katalogu
określonym dyrektywą ServerRoot, jednak przypisane mu prawa dostępu nie
umożliwiają zapisywania tam danych przez proces serwera uruchomiony
przez zwykłego użytkownika .
SendBufferSize liczba
Użycie: konfiguracja główna
Wartość domyślna: ustalana przez system operacyjny
Dyrektywa ta pozwala powiększyć wielkość bufora transmisji używanego
przez procedury obsługi protokołu TCP/IP ponad domyślną wartość
określaną przez system operacyjny.
LockFile plik
Użycie: konfiguracja główna
Referat z przedmiotu "Administracja systemami komp." Aleksandra Duda
Maciej Borowiec
Szymon Brandys
Strona 15 z 44
Wartość domyślna: logs/accept.lock
Jeśli Apache zostanie skompilowany z opcją
USE_FCNTL_SERIALIZED_ACCEPT lub
USE_FLOCK_SERIALIZED_ACCEPT, przed uruchomieniem musi on zapisać
na dysku lokalnym plik blokady. Operacja ta może okazać się niemożliwa w
przypadku umieszczenia katalogu logs w woluminie NFS. Nie jest również
wskazane umieszczanie pliku blokady w katalogu dostępnym dla wszystkich
do zapisu, gdyż jego przypadkowe utworzenie zablokuje możliwość
uruchomienia serwera.
KeepAlive liczba
Użycie: konfiguracja główna
Wartość domyślna: 5
Jeśli dany użytkownik raz odwołał się do witryny, istnieją spore szanse, że za
chwilę uczyni to ponownie. Minimalizację niepożądanych opóznień można
uzyskać poprzez podtrzymanie otwartego połączenia, jednak liczbę odwołań
w trakcie tak wydłużonego połączenia warto ograniczyć, aby zapobiec
nadmiernej konsumpcji zasobów serwera. Ustalenie dopuszczalnej liczby
odwołań realizowane jest za pomocą dyrektywy KeepAlive.
KeepAliveTimeout czas-w-sekundach
Użycie: konfiguracja główna
Wartość domyślna: 15
Dyrektywa ta pozwala na ograniczenie czasu oczekiwania na kolejne żądanie
poprzez określenie limitu czasu, przez który połączenie będzie
podtrzymywane w stanie otwarcia. W chwili odebrania żądania uaktywniona
zostaje dyrektywa TimeOut.
TimeOut czas-w-sekundach
Użycie: Konfiguracja główna
Wartość domyślna: 300
Dyrektywa ta określa maksymalną długość czasu transmisji pojedynczego
bloku danych w trakcie transakcji. We wcześniejszych wersjach Apache
dyrektywa ta miała dość nieprzyjemne efekty uboczne, powodowała bowiem
błędy timeout w przypadku transmisji dużych plików łączami o niewielkiej
przepustowości. W związku z tym zmieniono jej działanie tak, by określała
nie maksymalną długość trwania całej transakcji, ale czas przeznaczony na
przesłanie pojedynczego bloku danych.
HostNameLookups on|off|double
Użycie: konfiguracja główna, serwery wirtualne, katalogi.
Uaktywnienie tej dyrektywy poprzez użycie argumentu on powoduje, że
każde odebrane żądanie poddawane jest operacji odwrotnego odwzorowania
adresu. Oznacza to, że wydzielony z żądania adres IP klienta jest
wykorzystywany do ustalenia jego nazwy domenowej, pobieranej z
Referat z przedmiotu "Administracja systemami komp." Aleksandra Duda
Maciej Borowiec
Szymon Brandys
Strona 16 z 44
odpowiedniego serwera DNS. Tak uzyskana nazwa domenowa jest następnie
rejestrowana w logach. Wyłączenie dyrektywy (off) powoduje użycie w tym
miejscu adresu IP klienta.
Począwszy od wersji 1.3 dyrektywa ta może również przyjmować wartość
double, co oznacza wykonanie dwukrotnego odwrotnego odwzorowania
adresu. Zgodność obu adresów oznacza pozytywny wynik testu.
Include plik
Użycie: konfiguracja główna
Dyrektywa ta powoduje wstawienie zawartości podanego pliku w miejsce jej
wystąpienia do pliku konfiguracji serwera.
2.2.2 Dyrektywy dotyczące zarządzania procesami
potomnymi
Serwer Apache uruchomiony bez opcji X tworzy w systemie pewną liczbę
procesów potomnych (serwerów roboczych), których zadaniem jest
obsługiwanie wszelkich nadchodzących żądań. Poniżej omawiamy dyrektywy
przeznaczone do zarządzania procesami potomnymi:
MaxClients liczba
Wartość domyślna: 150
Użycie: konfiguracja główna
Dyrektywa ta określa maksymalną liczbę obsługiwanych jednocześnie żądań.
W obecnej wersji Apache limituje ona tym samym liczbę możliwych do
równoczesnego uruchomienia procesów potomnych
MaxRequestsPerChild liczba
Wartość domyślna: 30
Użycie: konfiguracja główna
Dyrektywa ta określa maksymalną liczbę żądań, które może obsłużyć
pojedynczy serwer roboczy w czasie swojego życia . W przypadku ustawienia
wartości 0, czyli brak limitu procesy serwerów roboczych będą działały tak
długo, jak długo będzie działał proces macierzysty. Nałożenie limitu
minimalizuje skutki ewentualnych wycieków pamięci.
MaxSpareServers liczba
Wartość domyślna: 10
Użycie: konfiguracja główna
Dyrektywa ta pozwala ustalić maksymalną liczbę uruchomionych i
bezrobotnych serwerów roboczych. Liczba ta nie powinna być zbyt duża,
gdyż wiąże się to z niepotrzebną konsumpcją zasobów. Przy jej doborze
należy się kierować liczbą i rodzajem wykorzystywanych modułów oraz
innymi szczegółami konfiguracji serwera. Dodatkowe wskazówki można
uzyskać analizując stan wykorzystania pamięci.
Referat z przedmiotu "Administracja systemami komp." Aleksandra Duda
Maciej Borowiec
Szymon Brandys
Strona 17 z 44
MinSpareServers liczba
Wartość domyślna: 5
Użycie: konfiguracja główna
Dyrektywa ta określa minimalną liczbę wolnych serwerów roboczych. Jeśli
liczba bezrobotnych serwerów spadnie poniżej tej wartości, to proces główny
rozpoczyna uruchamianie procesów potomnych z rosnącą częstotliwością,
poczynając od jednego na sekundę, aż do osiągnięcia wartości
MAX_SPAWN_RATE. Domyślna wielkość tej ostatniej wynosi 32 i może zostać
zmieniona w czasie kompilacji. Po osiągnięciu wymaganej minimalnej liczby
wolnych serwerów wartość częstotliwości ustalana jest z powrotem na 1.
Minimalna liczba wolnych serwerów nie powinna być zbyt duża, gdyż
powoduje to zajęcie wolnych zasobów systemu.
StartServers liczba
Wartość domyślna: 5
Użycie: konfiguracja główna
Dyrektywa ta umożliwia określenie liczby serwerów roboczych
uruchamianych w chwili rozpoczęcia pracy procesu głównego.
2.3 PROCEDURY OBSAUGI TYPÓW PLIKÓW
Procedura obsługi (handler) jest reprezentacją w Apache akcji, która ma
zostać wykonana w momencie odwoływania się do danego pliku. Większość
plików jest po prostu udostępniana przez serwer, ale niektóre są traktowane
w specjalny sposób. Procedury obsługi w Apache nie zależą od typu pliku,
ale jest możliwe jednoczesne skojarzenie z danym plikiem typu i procedury
obsługi.
Poniżej przedstawiona jest lista predefiniowanych procedur obsługi:
Default-handler plik jest wysyłany przy użyciu default_handler().
Send-as-is plik jest wysyłany z nagłówkiem HTTP, w niezmienionej
postaci
Cgi-script plik jest traktowany jako skrypt CGI
Imap-file plik jest traktowany jako imagemap
Server-info podaje informacje dotyczące konfiguracji serwera
Server-parsed parsuje plik w poszukiwaniu SSI (Server-Side Includes)
Server-status podaje raport dotyczący statusu serwera
Type-map parsuje plik jako plik type map dla ustalenia zawartości.
2.3.1 Dyrektywy służące do zarządzania procedurami
obsługi:
AddHandler handler-name extension extension...
Użycie: konfiguracja główna, serwery wirtualne, , pliki .htaccess
Referat z przedmiotu "Administracja systemami komp." Aleksandra Duda
Maciej Borowiec
Szymon Brandys
Strona 18 z 44
Dyrektywa ta mapuje podane rozszerzenia nazwy plików na procedurę
obsługi handler-name. Mapowanie to nadpisuje wszystkie inne ewentualne
mapowania skojarzone z tym rozszerzeniem.
Na przykład, aby zaktywować obsługę CGI dla plików z rozszerzeniem .cgi
można użyć:
AddHandler cgi-script cgi
SetHandler handler-name
Użycie: pliki .htaccess,
Dyrektywa ta, umieszczona w pliku .htaccess lub w sekcji lub
powoduje, że wszystkie pliki w zasięgu jej działania będą
obsługiwane za pomocą danej procedury obsługi, niezależnie od ich
rozszerzenia.
Przykład: jeśli chcemy uzyskać raport o statusie serwera za każdym
odwołaniem do URL http://servername/status, możemy dodać do
access.conf następującą sekcję:
SetHandler server-status
RemoveHandler extension extension...
Użycie: , pliki .htaccess
Dyrektywa ta usuwa wszystkie procedury obsługi skojarzone z plikami o
podanych rozszerzeniach. Umożliwia to usunięcie w plikach .htaccess
procedur obsługi odziedziczonych z wyższych katalogów lub plików
konfiguracji głównej serwera.
3 Serwery wirtualne
Termin serwer wirtualny odnosi się do zarządzania kilkoma serwerami na
jednej maszynie, rozróżnianymi przez URL.
Obsługę kilku witryn identyfikowanych różnymi adresami URL można
zrealizować przez uruchomienie dwóch kopii serwera Apache. W praktyce
rozwiązanie to jest rzadko stosowane. Najczęstszą metodą jest wykorzystanie
kilku wirtualnych klonów serwera, obsługujących odwołania do różnych
adresów URL (zwykle związanych z tym samym adresem IP).
Referat z przedmiotu "Administracja systemami komp." Aleksandra Duda
Maciej Borowiec
Szymon Brandys
Strona 19 z 44
3.1 SERWERY WIRTUALNE IDENTYFIKOWANE NAZWAMI
Rozwiązanie wykorzystujące identyfikację serwerów wirtualnych poprzez
nazwy domenowe jest najbardziej polecane. Bazuje ono na dostępnej w
protokole HTTP/1.1 możliwości przesłania przez przeglądarkę nazwy
domenowej witryny (serwera). Oczywiście nazwy domenowe muszą być
zarejestrowane w systemie DNS. Załóżmy, że mamy dwie witryny:
www.witryna1.com i www.witryna2.com, którym odpowiada ten sam adres IP
192.168.123.2.
Przykładowa treść pliku konfiguracji serwera będzie w tym przypadku
następująca:
User webuser
Group webgroup
NameVirtualHost 192.168.123.2
ServerAdmin aaa@witryna1.com
ServerName www.witryna1.com
DocumentRoot /usr/www/site.virtual/htdocs/w1
ErrorLog /usr/www/site.virtual/Name-based/logs/error_log
TransferLog /usr/www/site.virtual/Name-
based/logs/transfer_log
ServerAdmin aaa@witryna2.com
ServerName www.witryna2.com
DocumentRoot /usr/www/site.virtual/htdocs/w2
ErrorLog /usr/www/site.virtual/Name-based/logs/error_log
TransferLog /usr/www/site.virtual/Name-
based/logs/transfer_log
Kluczowym elementem jest tu dyrektywa NameVirtualHost, informująca
serwer Apache, że żądania kierowane do danego adresu IP powinny być dalej
rozdzielane w zależności od nazwy domenowej witryny. Dyrektywa
ServerName ma znaczenie pomocnicze i służy do ustalenia nazwy serwera
przekayzwanej z powrotem do klienta. Gdybyśmy nie użyli dyrektywy
NameVirtualHost, Apache zgłosiłby komunikat o konflikcie między adresami
www.witryna1,com i www.witryna2.com, gdyż oba odnoszą się do tego
samego adresu IP.
Serwery wirtualne mogą wykorzystywać wspólne bądz oddzielne pliki logów.
Referat z przedmiotu "Administracja systemami komp." Aleksandra Duda
Maciej Borowiec
Szymon Brandys
Strona 20 z 44
Dyrektywa NameVirtualHost:
NameVirtualHost adres[:port] umożliwia zdefiniowanie adresu IP
wykorzystywanego przez serwery wirtualne identyfikowane za pomocą nazw.
Podany w niej adres IP musi odpowiadać adresowi umieszczonemu w
nagłówku sekcji , w skład której musi z kolei wchodzić
dyrektywa ServerName, zawierająca nazwę domenową serwera.
Efekt działania tego układu jest następujący: w chwili odebrania żądania
skierowanego do serwera o danej nazwie domenowej, Apache przegląda bloki
i odnajduje ten, w którym w dyrektywie ServerName występuje
żądana nazwa domenowa. W przypadku pominięcia dyrektywy
NameVirtualHost, lokalizowany jest blok odpowiadający
właściwemu adresowi IP, a nazwa domenowa podana w dyrektywa
ServerName używana jest do utworzenia odpowiedzi na żądanie. Mechanizm
ten pozwala między innymi na zablokowanie dostępu do serwerów
chronionych za pomocą firewalli poprzez podanie adresu IP serwera
dostępnego swobodnie i nazwy domenowej serwera chronionego.
3.2 SERWERY WIRTUALNE IDENTYFIKOWANE ADRESAMI IP
Mimo, iż ogromna większość przeglądarek używa protokołu HTTP/1.1, nadal
istnieją takie, które wykorzystują HTTP/1.0. W związku z tym większość
administratorów korzysta ze starszej wersji protokołu.
Aby skonfigurować serwer Apache dla potrzeb identyfikacji serwerów opartej
na adresach IP, musimy stworzyć plik konfiguracji serwera o następującej
treści:
User webuser
Group webgroup
ServerName localhost
ServerName www.witryna1.com
ServerAdmin aaa@witryna1.com
&
VirtualHost 192.168.123.3>
ServerName www.witryna2.com
ServerAdmin aaa@witryna2.com
&
Referat z przedmiotu "Administracja systemami komp." Aleksandra Duda
Maciej Borowiec
Szymon Brandys
Strona 21 z 44
Tak przygotowana konfiguracja pozwala bezproblemowo obsługiwać
odwołania do witryn http://www.witryna1.com i http://www.witryna2.com.
3.3 SERWERY WIRTUALNE IDENTYFIKOWANE NAZWAMI
DOMENOWYMI I ADRESAMI IP
Oba rozwiązania przedstawione powyżej mogą zostać połączone w jedno.
Wtedy bloki odpowiadające adresowi podanemu w dyrektywie
NameVirtualHost będą obsługiwały serwery identyfikowane nazwami.
Pozostałe bloki będą zajmowały się obsługą żądań skierowanych pod
odpowiednie adresy IP. Przykładowy plik konfiguracji będzie wyglądał
następująco:
User webuser
Group webgroup
NameVirtualHost 192.168.123.2
ServerName www.witryna1.com
DocumentRoot /usr/www/site.virtual/htdocs/w1
&
ServerName www.witryna2.com
DocumentRoot /usr/www/site.virtual/htdocs/w2
&
ServerName www.witryna3.com
DocumentRoot /usr/www/site.virtual/htdocs/w2
&
3.4 SERWERY WIRTUALNE IDENTYFIKOWANE NUMERAMI
PORTÓW
Technika identyfikacji serwerów wirtualnych oparta na numerach portów
pochodzi od metody bazującej na numerach IP. Główną zaletą tego
rozwiązania jest umożliwienie administratorowi uruchomienia większej liczby
witryn przy wykorzystaniu pojedynczego adresu IP i pojedynczej nazwy
Referat z przedmiotu "Administracja systemami komp." Aleksandra Duda
Maciej Borowiec
Szymon Brandys
Strona 22 z 44
domenowej. Innymi słowy, technika ta pozwala na obsługę wielu witryn bez
konieczności używania wielu adresów IP i bez angażowania techniki
identyfikacji za pomocą nazw co eliminuje konieczność użycia protokołu
HTTP/1.1. Wadą takiego rozwiązania jest niechętne nastawienie
użytkowników do adresów zawierający niecodzienny numer portu.
Przykładowy plik konfiguracyjny mógłby wyglądać następująco:
User webuser
Group webgroup
Listen 80
Listen 8080
ServerName www.serwer.com
DocumentRoot /usr/www/site.virtual/htdocs/w1
...
ServerName witryna2.serwer.com
DocumentRoot /usr/www/site.virtual/htdocs/w2
...
Dyrektywa Listen nakazuje programowi Apache prowadzenie nasłuchu
proów o numerach 80 i 8080. Po uruchomieniu całego systemu odwołania do
adresu http://www.serwer.com będą trafiały do domyślnego portu 80 i będą
przez serwer kierowane do witryny www.serwer.com. Aby uzyskać dostęp do
witryny2 należy wpisać adres: http://www.serwer.com:8080
3.5 KILKA KOPII SERWERA APACHE DZIAAAJCE W SYSTEMIE
Alternatywną metodą obsługiwania wielu witryn jest uruchomienie kilku
kopii serwera Apache, używających różnych adresów IP. Logicznie odpowiada
to uruchomieniu serwera na dwóch niezależnych maszynach. Rozwiązanie to
wykorzystywane jest sporadycznie, głównie w przypadku, gdy konfiguracje
uruchamianych witryn różnią się znacząco, np. wartościami ServerRoot,
User czy ServerType. Dyrektywy te mają zasięg globalny i nie stosują się
indywidualnie do poszczególnych serwerów wirtualnych, toteż uzyskanie
pożądanego efektu wymaga uruchomienia serwera w kilku niezależnych
egzemplarzach.
Referat z przedmiotu "Administracja systemami komp." Aleksandra Duda
Maciej Borowiec
Szymon Brandys
Strona 23 z 44
Załóżmy, że całą niezbędną konfigurację i dane zawiera katalog
.../site.twocopy, w którym znajdują się dwa podkatalogi: w1 oraz w2. Plik
konfiguracji serwera zawarty w katalogu w1 wygląda następująco:
User webuser
Group webgroup
ServerName www.witryna1.com
DocumentRoot /usr/www/site.twocopy/w1/htdocs
BindAddress www.witryna1.com
&
natomiast jego odpowiednik w katalogu w2 ma postać:
User webuser
Group webgroup
ServerName www.witryna2.com
DocumentRoot /usr/www/site.twocopy/w2/htdocs
Listen www.witryna2.com:80
Ponieważ tym razem mamy do czynienia w systemie z kilkoma niezależnymi
kopiami programu Apache, musimy skojarzyć odwołania do poszczególnych
adresów URL z kopiami, które je obsługują. Służą do tego następujące
dyrektywy:
BindAddress adres
Wartość domyślna: *
Użycie: konfiguracja główna
Dyrektywa ta nakazuje serwerowi Apache obsługę określonego, pojedynczego
adresu, a nie jak poprzednio wszystkich adresów zdefiniowanych w
systemie.
Port numer
Wartość domyślna: 80
Użycie: konfiguracja główna
Dyrektywa port umieszczona w głównym bloku danych konfiguracyjnych
serwera (poza obrębem bloków VirtualHost) określa w przypadku
nieobecności dyrektyw BindAddress i Listen numer portu, na którym serwer
ma prowadzić nasłuch. Dyrektywa ta została wprowadzona jedynie dla
zachowania zgodności ze starszymi wersjami. Obecnie należy używać jednej z
dwóch dyrektyw: BindAddress lub Listen.
Listen nazwa-hosta:numer-portu
Użycie: konfiguracja główna
Dyrektywa listen nakazuje serwerowi Apache prowadzenie nasłuchu dla
więcej niż jednego adresu lub portu. Przez domniemanie serwer odpowiada
na żądania pojawiające się pod wszystkimi zdefiniowanymi w systemie
Referat z przedmiotu "Administracja systemami komp." Aleksandra Duda
Maciej Borowiec
Szymon Brandys
Strona 24 z 44
adresami IP, ale tylko w jednym porcie, określonym dyrektywą Port.
Używając dyrektywy Listen możemy więc ograniczyć ilość adresów IP,
natomiast rozszerzyć listę portów. Plik konfiguracji serwera może zawierać
kilka dyrektyw Listen, natomiast tylko jedną dyrektywę BindAddress.
4 Zmiana konfiguracji serwera w trakcie pracy
4.1 PONOWNE URUCHAMIANIE SERWERA
W praktyce od czasu do czasu zachodzi konieczność zatrzymania serwera
Apache i jego ponownego uruchomienia po zmianie pliku konfiguracji
serwera. Dzieje się tak najczęściej w wyniku dodania nowego serwera
wirtualnego. Można to zrobić w sposób radykalny, zatrzymując proces httpd i
ponownie go uruchamiając, jednak metoda ta wprowadza istotne zakłócenia
do działania witryn obsługiwanych przez dany serwer. Ostatnio
wprowadzone modernizacje umożliwiają dokonanie restartu serwera bez
nagłego przerywania pracy wszystkich procesów roboczych. Istnieją trzy
metody ponownego uruchomienia serwera Apache:
Zatrzymanie i ponowne jego uruchomienie, w wyniku czego dokona
ponownego odczytania swoich plików konfiguracyjnych:
% kill PID
%httpd opcje
Ten sam efekt można osiągnąć wydając polecenie kill z opcją HUP:
% kill HUP
miękki restart serwera możemy wymusić za pomocą opcji USR1.
Jej użycie powoduje ponowne odczytanie zawartości plików
konfiguracyjnych serwera, pozwalając jednocześnie pracującym
procesom serwerów roboczych na zakończenie obsługiwanych
transakcji przed zastąpieniem ich nowymi. Metoda ta nie powoduje
zakłóceń w dostępie do witryn obsługiwanych przez serwer.
% kill USR1 PID
4.2 LOKALNE PLIKI KONFIGURACYJNE (.HTACCESS)
Referat z przedmiotu "Administracja systemami komp." Aleksandra Duda
Maciej Borowiec
Szymon Brandys
Strona 25 z 44
Alternatywnym rozwiązaniem problemu zmiany konfiguracji serwera w
trakcie pracy jest użycie pliku .htaccess. Plik ten, przechowywany w
odpowiednim podkatalogu .../htdocs jest rozszerzeniem pliku httpd.conf i
zawiera zmienne elementy konfiguracji serwera. W odróżnieniu od pliku
konfiguracji serwera, którego zawartość odczytywana jest raz, w momencie
startu serwera, zawartość pliku .htaccess jest odczytywana i analizowana
podczas każdego dostępu do zawartości witryny. Zaletą takiego rozwiązania
jest elastyczność, natomiast wadą zauważalny spadek wydajności.
Administrator może ograniczyć efekty działania dyrektyw zawartych w pliku
.htaccess przez użycie dyrektywy AllowOverride. Aby natomiast uniemożliwić
klientom witryny odczyt zawartości plików .htaccess, należy w pliku
konfiguracji dodać następującą sekcję:
order allow, deny
deny from all
Podstawową ideą użycia plików .htaccess jest umożliwienie administratorowi
serwera dynamicznego modyfikowania zestawu dyrektyw konfiguracyjnych
bez konieczności zatrzymywania i ponownego uruchamiania serwera.
Możliwość taka jest szczególnie przydatna w systemach wykorzystywanych
przez wielu użytkowników, którzy sami utrzymują własne strony WWW, ale
nie mają uprawnień do zarządzania serwerem ani modyfikowania jego plików
konfiguracyjnych.
Do ustawiania nazw plików zawierających dyrektywy sterujące dostępem do
wybranych katalogów służy następująca dyrektywa:
AccessFileName plik
Użycie: konfiguracja główna, serwery wirtualne
Zasięg tej dyrektywy jest globalny dla całego pliku httpd.conf lub serwera
wirtualnego.
5 Interfejs CGI
Interfejs CGI umożliwia przetwarzanie danych przesłanych od klienta w
formularzu na serwerze za pomocą odpowiedniego skryptu.
Formularz przeznaczony do obsłużenia za pomocą CGI powinien wyglądać
następująco:
Referat z przedmiotu "Administracja systemami komp." Aleksandra Duda
Maciej Borowiec
Szymon Brandys
Strona 26 z 44
Lub
Pierwsza specyfikacja ( /mycgi.cgi ) informuje serwer, że powinien użyć pliku
mycgi.cgi znajdującego się w katalogu .../htdocs. Druga że do obsłużenia
żądania należy użyć pliku znajdującego się w katalogu /usr/www/cgi-
bin/cgi.
Skrypty powinny być plikami wykonywalnymi z punktu widzenia systemu
operacyjnego. Aby sprawdzić, czy tak jest rzeczywiście, można spróbować
uruchomić skrypt z linii poleceń, logując się wcześniej na konto użytkownika
przypisanego serwerowi Apache. W razie niemożności wykonania skryptu
można poradzić sobie na dwa sposoby:
1. Umieszczając w pliku konfiguracji serwera dyrektywę ScriptAlias,
wskazującą bezpieczną lokalizację poza przestrzenią witryny.
Rozwiązanie takie wpływa korzystnie na bezpieczeństwo systemu,
uniemożliwia bowiem włamywaczom odczytywanie treści skryptów i ich
analizowanie pod kątem ewentualnych luk w systemie zabezpieczeń,.
2. Wykorzystując dyrektywę AddHandler lub SetHandler do zdefiniowania
nowego typu procedury obsługi o nazwie cgi-script, skojarzonego z
plikami skryptów CGI. W takiej sytuacji skrypty umieszcza się w
głównym katalogu dokumentów witryny (DocumentRoot)
Skrypt CGI (a dokładniej odpowiedz serwera wygenerowana przez ten skrypt)
składa się z nagłówka i treści. Nagłówkiem jest cały tekst skryptu do
pierwszego pustego wiersza (do pierwszego ciągu znaków ,
chociaż Apache toleruje też same ); pozostała część tworzy treść
skryptu. Poszczególne wiersze nagłówka zakończone są znakami lub
.
Pola nagłówka CGI mają następującą składnię:
Generic-field = field-name : [field-value] NL
Field-name = token
Field-value = *( field-content|LWSP)
Field-content=*(token|special|quoted-string)
Duże i małe litery w nazwie pola nie są rozróżniane, pusta zawartość pola
jest traktowana jako brak pola nagłówka.
Apache nie potrafi sam określić typu zawartości na podstawie samej nazwy
pliku dlatego skrypt musi wygenerować przynajmniej jedno pole nagłówka :
content-type. Pominięcie tego pola spowodowałoby pojawienie się
komunikatu o błędzie zamiast odpowiedzi serwera.
Referat z przedmiotu "Administracja systemami komp." Aleksandra Duda
Maciej Borowiec
Szymon Brandys
Strona 27 z 44
5.1 SKRYPT W KATALOGU CGI-BIN
Aby nadchodzące odwołania do skryptu wysyłać w odpowiednie miejsce (tj.
do katalogu .../cgi-bin) musimy zmodyfikować zawartość pliku httpd.conf
naszej witryny do następującej postaci:
User webuser
Group webgroup
ServerName www.witryna1.com
DocumentRoot /usr/www/site.cgi/htdocs
ScriptAlias /cgi-bin /usr/www/cgi-bin
Sam formularz, zawarty w pliku .html powinien na początku zawierać tekst:
Podobne podstrony:
httpd
httpd 8
system dla httpd
HTTPD J FORMS
httpd
HTTPD J HTTPD
httpd 1
httpd 4
więcej podobnych podstron