Apache Konfiguracja, Wszystko o Linuxie


KONFIGURACJA SERWERA WWW (APACHE)

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
</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

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.

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

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

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

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.
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.

ReadmeName
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.

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.

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.
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.

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
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 :

<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 opcje:

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
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).

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>

<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 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>

6



Wyszukiwarka

Podobne podstrony:
httpApache, Wszystko o Linuxie
Apache Konfiguracja
Konfiguracja serwera Apache, SSL w systemie GNU Linux
Instalka i konfig driverów ATI w linuxie
Konfigurowanie i kontrolowanie sieci w LInuxie
instalacja i konfiguracja apache 2 2 z php 5 x pod windows xp eioba
instalacja i konfiguracja apache 2 2 z php 5 x pod windows xp eioba
02 Linux Konfiguracja serwera WWW APACHE
Konfiguracja serwera Apache, SSL w systemie GNU Linux
Instalacja i konfiguracja Apache SSL
pai 01 konfiguracja apache
Chemia wyklad I i II (konfiguracja wiÄ…zania Pauling hybrydyzacja wiazania pi i sigma)
pieniadze nie sa wszystkim
dostalem wszystko
AVR na Linuxie

więcej podobnych podstron