E:\Moje dokumenty\HELION\Linux Unleashed\Indeks\51.DOC 771
Rozdzia³ 51. ¨ Konfigurowanie węzła WWW 771
Tim Parker
W tym rozdziale:
u Oprogramowanie serwera WWW
u Apache
Nie ma chyba nikogo, kto nie słyszałby jeszcze o stronach WWW (ang. World Wide Web). Jest to najpopularniejszy aspekt Internetu. Właśnie z powodu popularności WWW coraz więcej użytkowników sieci decyduje się na założenie własnych serwerów WWW i utworzenie swoich stron głównych. Obecnie dostępnych jest coraz więcej wyrafinowanych pakietów oprogramowania działających jako serwery WWW dla różnych systemów operacyjnych. Linux, oparty na systemie UNIX, również zawiera oprogramowanie potrzebne do założenia własnego serwera WWW.
Do skonfigurowania węzła WWW nie jest potrzebne żadne wymyślne oprogramowanie – wystarczy trochę czasu i odpowiednie dane konfiguracyjne. O tym właśnie traktuje ten rozdział. Przyjrzymy się bliżej zagadnieniu konfiguracji serwera WWW w systemie linuxowym, przeznaczonego dla przyjaciół, użytkowników sieci lokalnej czy też dla całego Internetu.
Jednym z najważniejszych powodów popularności stron WWW, oprócz możliwości multimedialnych, są hiperłącza. Pozwalają one przenosić się jednym kliknięciem z jednego dokumentu do drugiego, z serwera na serwer, od grafiki do filmów i tak dalej. Instrukcje powodujące odpowiednie przejścia są zapisane w kodzie stron WWW.
Strony WWW obsługiwane są przez dwie warstwy oprogramowania: oprogramowanie klienta WWW (nazywane często przeglądarką WWW) i oprogramowanie serwera. Bardzo popularne są programy klientów WWW takie jak Netscape czy Mosaic, ale dostępne są również inne pakiety, niektóre przeznaczone do pracy wyłącznie pod kontrolą Linuxa czy X Window.
Dla systemu Linux dostępne są trzy główne wersje serwera WWW, pochodzące odpowiednio z organizacji NCSA, CERN i Plexus. Najłatwiejszy w użyciu jest system opracowany przez NCSA; organizacja ta opracowała również przeglądarkę Mosaic. Jest on niewielki i szybki, może działać jako program rezydentny, może też być uruchamiany przez proces inetd; poza tym zapewnia dość wysoki poziom bezpieczeństwa. W tym rozdziale omówimy proces konfiguracji pakietu pochodzącego właśnie z NCSA, choć z łatwością użyć można również dwóch pozostałych pakietów (dostosowując odpowiednio dane konfiguracyjne). W wielu węzłach FTP i BBS dostępny jest również dość popularny serwer WWW o nazwie Apache – zajmiemy się nim w następnym podrozdziale, po omówieniu bardziej tradycyjnych serwerów WWW.
Oprogramowanie serwera WWW w trzech wymienionych wcześniej wersjach dostępne jest poprzez anonimowe FTP lub strony WWW pod następującymi adresami:
CERN: ftp://ftp.w3.org/pub/httpd (FTP)
NCSA: ftp.ncsa.uiuc.edu/Web/httpd/Wnix/ncsa_httpd
http://hoohoo.ncsa.uiuc.edu (WWW)
Plexus:http://www.sandelman.ocunix.on.ca/server/doc/plexus.html
Oprogramowanie pochodzące z NCSA dostępne jest zarówno w postaci kodu źródłowego, jak i w wersji skompilowanej. Użycie wersji skompilowanej jest znacznie prostsze, ponieważ nie trzeba konfigurować i kompilować kodu źródłowego. Pliki wykonywalne przeważnie dostępne są w postaci zarchiwizowanej programem tar i skompresowanej, więc należy je rozpakować. Często spotykane są również gotowe do użycia wersje dostarczane na płytach CD-ROM. Jeśli posiadasz skompresowaną wersję programu serwera WWW, powinieneś, trzymając się wskazówek zawartych w pliku README lub podobnym, rozpakować pliki do odpowiednich katalogów.
Jeśli oprogramowanie w postaci kodu źródłowego lub skompilowane otrzymałeś z węzła FTP czy BBS, prawdopodobnie będziesz je musiał najpierw rozpakować (za pomocą programów tar i unzip – powinieneś jednak sprawdzić to w dołączonych plikach README, w przeciwnym przypadku może okazać się, że robisz to niepotrzebnie). Zwykle należy utworzyć osobny katalog dla oprogramowania WWW, przejść do niego i rozpakować otrzymane pliki, na przykład wydając polecenie
zcat httpd_X.X_XXX.tar.Z | tar xvf –
W nazwie tych plików często znajduje się, oprócz numeru wersji, nazwa platformy, dla której przeznaczone jest oprogramowanie – na przykład httpd_1.5_linux.tar.Z. Jako argument polecenia zcat powinieneś podać pełną nazwę otrzymanego pliku. Instrukcje dotyczące instalacji czasem dostarczane są w postaci osobnego pliku tar, na przykład Install.tar.Z, który powinieneś również zdobyć i rozpakować poleceniem
zcat Install.tar.Z
Podczas wydawania powyższego polecenia katalogiem bieżącym powinien być katalog docelowy – inaczej będziesz musiał przenosić ręcznie sporą liczbę plików. Pliki z oprogramowaniem serwera WWW można umieścić w dowolnym miejscu, ale dobrym pomysłem jest utworzenie dla nich odrębnego katalogu, na przykład /usr/web czy /var/web, dzięki czemu łatwiej będzie kontrolować prawa dostępu do tych plików.
Po zdekompresowaniu odpowiednich plików i umieszczeniu bibliotek we właściwych katalogach, warto przyjrzeć się podkatalogom utworzonym automatycznie. Wśród nich powinny znaleźć się następujące podkatalogi:
cgi-bin standardowy interfejs pomiędzy stronami WWW a programami i skryptami;
conf pliki konfiguracyjne;
icons ikony przeznaczone do użycia na stronach głównych;
src kod źródłowy i (czasem) pliki wykonywalne;
support aplikacje wspierające obsługę WWW.
Jeśli nie musisz modyfikować i rekompilować kodu źródłowego dostosowując go do potrzeb Linuxa (ponieważ posiadasz linuxową wersję programu), możesz pominąć szczegółowe omówienie konfiguracji znajdujące się w dalszej części tego podrozdziału. Z drugiej strony warto jednak wiedzieć, co znajduje się w kodzie źródłowym, ponieważ dzięki temu można lepiej zrozumieć współdziałanie systemu i oprogramowania serwera. Jeśli posiadasz ogólną wersję kodu źródłowego serwera WWW opracowanego przez NCSA, nie dostosowaną do Twojego systemu, musisz przed kompilacją skonfigurować kod źródłowy.
Rozpocznij od wprowadzenia do pliku src/Makefile informacji o systemie. Powinieneś sprawdzić wartości kilku zmiennych:
AUX_CFLAGS pozwala podać dodatkowe opcje kompilatora – usuń komentarz z wiersza definiującego wersję dla Linuxa (zwykle odpowiednie wiersze są opatrzone komentarzem umożliwiającym ich identyfikację);
CC pozwala na podanie nazwy kompilatora języka C (zwykle cc lub gcc);
EXTRA_LIBS pozwala na dołączenie dodatkowych bibliotek (które nie są wymagane w systemie Linux);
FLAGS pozwala podać dodatkowe opcje dla konsolidatora (większość wersji linuxowych nie wymaga żadnych dodatkowych opcji).
Należy również przyjrzeć się wartości zmiennej CFLAGS, zawierającej listę znaczników kompilatora. Niektóre z nich mogą być już ustawione. Oto dostępne wartości:
-DSECURE_LOGS zabezpiecza przed zakłócaniem procesu rejestrowania danych, prowadzonego przez serwer WWW, przez skrypty CGI;
-DMAXIMUM_DNS pozwala na użycie bezpieczniejszego systemu tłumaczenia nazw (kosztem wydajności);
-DMINIMAL_DNS nie zezwala na zwrotne tłumaczenie nazw, co poprawia wydajność;
-DNO_PASS zabezpiecza przed uruchamianiem wielu procesów potomnych;
-DPEM_AUTH uaktywnia schematy autoryzacji PEM/PGP
-DXBITHACK pozwala na sprawdzanie, czy plik HTML jest wykonywalny;
-O2 załącza optymalizację.
Najprawdopodobniej nie będziesz musiał modyfikować wartości zmiennej CFLAGS, ale powinieneś być świadomy jej przeznaczenia. Po sprawdzeniu i ewentualnym poprawieniu danych zapisanych w pliku src/Makefile należy skompilować kod źródłowy, wydając polecenie:
make linux
Jeśli jego wykonanie spowoduje wyświetlenie komunikatów o błędach, powinieneś jeszcze raz dokładnie sprawdzić dane w pliku konfiguracyjnym. Najczęściej przyczyną problemów jest źle zdefiniowana platforma (lub wybranie kilku platform jednocześnie).
Po zainstalowaniu kodu źródłowego w odpowiednich katalogach i skompilowaniu go dla Linuxa należy skonfigurować system. Proces ten powinieneś rozpocząć od pliku httpd.conf-dist. Skopiuj go do pliku o nazwie httpd.conf – jest to nazwa pliku konfiguracyjnego programu httpd. Zanim zaczniesz go modyfikować, powinieneś zdecydować, czy chcesz uruchamiać program httpd jako program rezydentny, czy też ma on być uruchamiany przez proces inetd. Jeśli przewidujesz częste użycie tego programu, powinieneś wybrać pierwszą wersję. W przeciwnym przypadku obie możliwości są równie dobre.
W pliku httpd.conf zdefiniowanych jest kilka wartości, które wymagają sprawdzenia lub wprowadzenia jakichś danych. Każda z definicji zmiennych ma składnię:
zmienna wartość
Pomiędzy nazwą zmiennej a wartością nie pojawia się znak równości ani żaden inny specjalny symbol. Oto kilka przykładowych wierszy:
FancyIndexing onHeaderName HeaderReadmeName README
Ścieżki dostępu do plików i katalogów zwykle podawane są nie jako pełne ścieżki dostępu, ale względem katalogu serwera WWW. Poniżej podajemy zmienne, których wartości należy dostosować do wymagań systemu.
AccessConfig Lokalizacja pliku konfiguracyjnego access.conf – domyślnie jest to conf/access.conf. W tym miejscu można użyć zarówno pełnej, jak i względnej ścieżki dostępu.
AgentLog Nazwa pliku, w którym rejestrowane będą dane o typie i wersji przeglądarki WWW używanej do połączenia się z serwerem. Domyślna wartość to logs/agent_log.
ErrorLog Nazwa pliku, do którego zapisywane będą dane o błędach. Domyślną wartością jest logs/error_log.
Group Identyfikator grupy będącej właścicielem procesu serwera (używany tylko, jeśli serwer działa jako program rezydentny). Może to być zarówno nazwa, jak i identyfikator numeryczny grupy, z tym, że należy poprzedzić go symbolem #. Domyślna wartością jest #-1.
MaxServers Maksymalna dozwolona liczba procesów potomnych.
PidFile Nazwa pliku, w którym przechowywane będą identyfikatory procesów wszystkich kopii programu httpd. Domyślna wartość to logs/httpd.pid. Wartość ta jest używana tylko wtedy, gdy serwer działa jako program rezydentny.
Port Numer portu, pod którym należy oczekiwać na połączenia programów klientów WWW. Domyślnie jest to port 80. Jeśli nie chcesz, by serwer WWW był ogólnodostępny, zmień tę wartość.
ResourceConfig Ścieżka dostępu do pliku srm.conf, zwykle conf/srm.conf.
ServerAdmin Adres e-mailowy administratora.
ServerName Pełna nazwa domenowa serwera.
ServerRoot Ścieżka dostępu do katalogu, powyżej którego użytkownicy nie będą mogli się dostać (zwykle jest to katalog główny serwera WWW lub katalog /usr/local/etc/httpd).
ServerType Typ serwera: standalone (samodzielny program rezydentny) lub inetd (uruchamiany przez proces inetd).
StartServers Liczba procesów serwera, które uruchamiane są przy uruchamianiu programu rezydentnego.
TimeOut Czas (w sekundach), przez jaki należy czekać na odpowiedź klienta przed przerwaniem połączenia (domyślnie zmienna ta ma wartość 1800 i należy ją zmniejszyć).
TransferLog Ścieżka dostępu do pliku, w którym rejestrowane będą dane o dostępie do plików. Domyślną wartością jest logs/access_ log.
TypesConfig Ścieżka dostępu do pliku konfiguracyjnego MIME. Domyślnie jest to conf/mime.conf.
User Identyfikator użytkownika będącego właścicielem procesu serwera WWW (używany tylko wtedy, gdy serwer działa jako program rezydentny). Można tu podać identyfikator tekstowy lub liczbowy, ale poprzedzony symbolem #. Domyślna wartość to #-1.
Należy również sprawdzić dane o zasobach serwera, zapisane w pliku srm.conf. Oto lista zmiennych, których wartości mogą wymagać modyfikacji.
AccessFileName Zawiera nazwę pliku z danymi o prawach dostępu (domyślnie .htaccess).
AddDescription Pozwala wprowadzić opis typu pliku, na przykład AddDescription PostScript file *.ps. Dozwolone jest wprowadzenie większej liczby takich wpisów.
AddEncoding Pozwala podać, że określony typ plików jest w jakiś sposób zakodowany, na przykład AddEncoding compress Z. Podobnie...
Wolf-1