Serwer internetowy

Podstawowy obszar zastosowań Linuksa to ciągle jeszcze serwery. Zresztą nie bez powodu, ponieważ Linux zabiera mniej zasobów niż Windows i lepiej wpisuje się w środowiska heterogeniczne. Apache 2 i Samba 3 to nowe, znacznie ulepszone wersje popularnych serwerów. Opiszemy szczegółowo ich instalację i eksploatację. Opis poprowadzimy dwutorowo: najpierw zajmiemy się czynnościami podstawowymi i możliwościami serwera, a następnie funkcjami rozszerzonymi, które nie są potrzebne w każdym środowisku.

Podstawowy obszar zastosowań Linuksa to ciągle jeszcze serwery. Zresztą nie bez powodu, ponieważ Linux zabiera mniej zasobów niż Windows i lepiej wpisuje się w środowiska heterogeniczne. Apache 2 i Samba 3 to nowe, znacznie ulepszone wersje popularnych serwerów. Opiszemy szczegółowo ich instalację i eksploatację. Opis poprowadzimy dwutorowo: najpierw zajmiemy się czynnościami podstawowymi i możliwościami serwera, a następnie funkcjami rozszerzonymi, które nie są potrzebne w każdym środowisku.

Nie będziemy zajmować się trudną i nieprzejrzystą konfiguracją Sendmail. Skorzystamy ze znacznie prostszego, a zarazem nie mniej wydajnego serwera pocztowego, jakim jest XMail. Wyczerpująco przedstawimy też konfigurację SpamAssassin we współpracy z XMail, co pozwoli uchronić się od znacznej części niechcianej poczty.

1. Linux jako serwer WWW

SuSE Linux 9.0 umożliwia równoległą instalację starej i nowej generacji Apache na tym samym komputerze.

SuSE Linux 9.0 umożliwia równoległą instalację starej i nowej generacji Apache na tym samym komputerze.

Apache to ciągle jeden z najpopularniejszych serwerów internetowych, a w połączeniu z Linuksem - również jeden z najwydajniejszych. Mimo bogactwa funkcji jest łatwy w konfiguracji, a dodatkowe moduły pozwalają w prosty sposób zwiększyć jego funkcjonalność.

Najczęstsze zastosowanie komputerów z systemem operacyjnym Linux to praca w roli serwera internetowego. Jak wynika z regularnie prowadzonych badań firmy NetCraft, Apache cieszy się największymi względami użytkowników, uzyskując ponad sześćdziesięcioprocentowy udział w rynku. Niemniej jednak wiele systemów pracuje ciągle z nieco przestarzałą już wersją 1.3.x, chociaż wersja 2.0 jest już w pełni dopracowana i pracuje stabilnie.

A przecież druga generacja Apache oferuje wiele nowości, ułatwień i korzyści. Lepsza wydajność, mniejsze zapotrzebowanie na pamięć i nowe moduły z dodatkowymi funkcjami to mocne argumenty za przejściem na nową wersję lub rozpoczęciem przygody webmastera od razu właśnie od niej. Ta wersja będzie wkrótce koniecznością dla wszystkich, którzy chcą korzystać z protokołu IPv6.

2. Krótka charakterystyka Apache

Uaktualnienie online umożliwia pobranie najnowszej wersji serwera Apache z dystrybucji SuSE.

Uaktualnienie online umożliwia pobranie najnowszej wersji serwera Apache z dystrybucji SuSE.

W powszechnym rozumieniu Apache jest synonimem internetowego serwera WWW, czyli oprogramowania odpowiedzialnego za dostawę treści internetowych do przeglądarki użytkownika. To bardzo uproszczone pojmowanie. Już sama historia nazwy - "Apache" wywodzi się od a patchy server, czyli serwera złożonego z łat - wskazuje, że to raczej konstrukcja ramowa, która w pełni ujawnia swoje możliwości dopiero po wyposażeniu w dodatkowe moduły. Właśnie te moduły odbierają i analizują zapytania przychodzące z Internetu, pobierają potrzebne dane z twardego dysku lub z baz danych, a czasami używają nawet interpreterów języków programowania, żeby na koniec wysłać do użytkownika efekty swojej pracy, które często powstają w bardzo skomplikowany sposób.

Te same moduły były źródłem stałych kłopotów z Apache 1.3.x, gdzie kolejność ładowania modułów decyduje o tym, w jakiej kolejności zapytanie przechodzi przez łańcuch modułów. Niedoświadczonemu administratorowi łatwo mogło się zdarzyć, że moduł do kompresji danych wyjściowych znalazł się w pliku konfiguracyjnym przed interpreterem PHP, który oczywiście nic nie zrobi ze skompresowanymi danymi. W takich sytuacjach można całymi godzinami poszukiwać błędów.

Nic dziwnego, że w najnowszej generacji Apache poświęcono sporo pracy właśnie tym modułom. Teraz serwer sam decyduje, w jakiej kolejności moduły przetwarzają przychodzące zapytania i wychodzące strumienie danych. Znalazły się tu również rozszerzenia z funkcjami, które wcześniej można było zrealizować jedynie za pomocą zewnętrznych programów, a w niektórych przypadkach wcale.

Najważniejsze nowości w Apache 2.x to obsługa Secure Socket Layer (SSL) i Distributed Authoring and Versioning (DAV), a także kompresja przesyłanych treści i buforowanie w pamięci lub na twardym dysku. Dodatkowo dla obsługiwanych systemów operacyjnych można utworzyć wielowątkowe wersje serwera, które charakteryzują się większą wydajnością i mniejszym zapotrzebowaniem na pamięć.

3. Instalacja lub aktualizacja

Za pomocą prostego skryptu można przekształcić starą konfigurację Apache na nowy format Apache 2.x.

Za pomocą prostego skryptu można przekształcić starą konfigurację Apache na nowy format Apache 2.x.

Niezależnie od tego, czy chodzi o pierwszą instalację serwera Apache, czy też o uaktualnienie wersji z serii 1.3.x, najlepszy sposób postępowania to instalacja archiwum RPM producenta danej dystrybucji systemu. W SuSE Linux polega to na wyborze opcji Simple Webserver with Apache 2. Nie trzeba w tym celu usuwać wcześniejszego serwera Apache 1.3.x, ponieważ w przypadku SuSE Linux, obie wersje mogą zgodnie koegzystować w komputerze. Takie rozwiązanie ma nieocenione zalety, zwłaszcza w przypadku modernizacji Apache.

Pliki konfiguracyjne Apache 2.x w systemie SuSE Linux znajdują się w katalogu /etc/apache2. W przypadku aktualizacji warto zapisać znajdujące się tam ustawienia standardowe przed wprowadzeniem nowych ustawień. Wystarczy w tym celu krótka sekwencja w wierszu poleceń:

su -

cp -rp /etc/apache2 /etc/apache2.bak

Nawet jeżeli używając archiwum RPM, nie zainstalujesz najnowszej wersji serwera Apache, uaktualnienie przez Internet szybko poprawi ten drobny defekt.

4. Problemy podczas aktualizacji

Pojawienie się standardowej strony oznacza, że serwer internetowy Apache wystartował poprawnie.

Pojawienie się standardowej strony oznacza, że serwer internetowy Apache wystartował poprawnie.

Największym problemem w przypadku aktualizacji jest to, że w SuSE Linux wraz z Apache 2 wprowadzony został nowy system zarządzania konfiguracją. W miejsce jednolitego pliku httpd.conf, który zawierał wszystkie ustawienia konfiguracji, pojawiła się modułowa wersja tego samego pliku. Plik stał się bardziej centralnym zarządcą wielu kolejnych plików konfiguracyjnych, które w razie potrzeby można dołączyć poleceniem include.

W dodatku Apache 2.x nie rozpoznaje niektórych poleceń dobrze znanych z wersji 1.3.x. Jakby tego było mało, niektóre moduły mają zmienione nazwy, a ponieważ zmienił się ich interfejs, stare moduły tak czy inaczej nie działają w nowej wersji Apache. Nie obejdzie się zatem bez dostosowania pliku konfiguracyjnego. Bardzo pomocny jest w tym przypadku edytor strumieniowy sed. Nie tylko ułatwia dostosowanie ścieżek, ale w tym samym przebiegu potrafi również usunąć niepotrzebne już polecenia, co oszczędza wiele ręcznej pracy. Ponieważ podczas wprowadzania poleceń dla edytora sed łatwo o pomyłkę, warto zebrać poszczególne etapy w skrypt powłoki (listing 1).

Mimo wszystko nie obędzie się bez ręcznego szlifowania plików. Aby zadziałało kilka ustawień starego pliku konfiguracyjnego, konieczne są zmiany w specyficznym dla SuSE Linux pliku /etc/sysconfig/apache2. Po pierwsze, do listy parametrów zmiennej APACHE_MODULES trzeba dodać wpisy status oraz info. Po drugie, należy zmienić wartość APACHE_SERVER_FLAGS na STATUS. Zalecane, ale niekonieczne jest też podanie adresu IP komputera jako parametru APACHE_SERVER_NAME.

Nie trzeba uruchamiać serwera i czekać na komunikat o błędzie, żeby sprawdzić poprawność składni pliku konfiguracyjnego. Dużo łatwiej zrobić to za pomocą małego programu pomocniczego apache2ctl. Gdy wywołasz go z parametrem -t, wczyta plik konfiguracyjny i zatrzyma się, gdy tylko znajdzie błąd.

Listing 1

#!/bin/bash

cd /etc/apache2

cp ../httpd/httpd.conf .

sed -e '/^[ \t]*LoadModule.*/d' -e '/^[ \t]*AddModule.*/d' -e '/^[ \t]*PidFile.*/d' -e 's%/httpd/%/apache2/%g' -e 's%#NameVirtualHost \*:80%#NameVirtualHost \*%g' -e 's%/suse_loadmodule.conf%/sysconfig\.d_

/loadmodule.conf%g' -e 's%/suse_include.conf%/sysconfig\.d_

/include.conf\nInclude /etc/apache2_

/vhosts\.d/*.conf%g' -e '/^[ /t]*ServerType.*/d' -e '/^[ \t]*ClearModuleList.*/d' -e '/^.*suse_addmodule.*/d' -e 's/^[ \t]*Port\(.*\)/Listen\1/g' -e '/^[ \t]*SSLLog.*/d' -e 's/^[ \t]*ServerName.*/Include \/etc\/apache2\_

/sysconfig\.d\/global.conf/g' httpd.conf > httpd.conf.tmp

sed -e ':t /<IfDefine STATUS/,/if Define>/{/<\/IfDefine>/_

!{$!{N; bt}}; s/<IfDefine STATUS.*IfDefine>_

/Include \/etc\/apache2\/mod_status.conf\nInclude_

\/etc\/apache2\/mod_info.conf/g }' httpd.conf.tmp > httpd.conf

Powyższy listing w niezmienionej postaci umieściliśmy na płycie CD w katalogu \extras. Tutaj miejsca, w których tekst został przeniesiony do następnej linii oznaczyliśmy znakiem podkreślenia (na wzór języka Visual Basic).


Zobacz również