komputerowa Apache serwer WWW Marcin Bieńkowski Instytut Informatyki Uniwersytet Wrocławski komputerowa () Apache serwer WWW 1 / 18
Apache Dostępny pod różne platformy Ponad 50% udział w rynku serwerów WWW (Netcraft Web Server Survey 2007) Darmowy, otwarty i dobrze udokumentowany Obecnie dostępne sa trzy stabilne gałęzie: 1.3, 2.0 i 2.2 komputerowa () Apache serwer WWW 2 / 18
Apache Dostępny pod różne platformy Ponad 50% udział w rynku serwerów WWW (Netcraft Web Server Survey 2007) Darmowy, otwarty i dobrze udokumentowany Obecnie dostępne sa trzy stabilne gałęzie: 1.3, 2.0 i 2.2 komputerowa () Apache serwer WWW 2 / 18
Hierarchia plików konfiguracyjnych Konstrukcja pliku konfiguracyjnego Można mieć wszystko w jednym pliku...... albo w jednym pliku, który włacza inne pliki poleceniem Include Rozbicie na poszczególne pliki ułatwia późniejsze (automatyczne) zarzadzanie W Debianie: Plik główny (z ogólna konfiguracja) nazywa się /etc/apache2/apache2.conf Właczane sa do niego: wszystkie pliki znajdujace się w katalogu /etc/apache2/mods-enabled/ (opis i konfiguracja właczanych modułów) konfiguracja portów /etc/apache2/ports.conf kawałki konfiguracji z katalogu /etc/apache2/conf.d konfiguracja domen wirtualnych /etc/apache2/sites-enabled/ komputerowa () Apache serwer WWW 3 / 18
Hierarchia plików konfiguracyjnych Konstrukcja pliku konfiguracyjnego Można mieć wszystko w jednym pliku...... albo w jednym pliku, który włacza inne pliki poleceniem Include Rozbicie na poszczególne pliki ułatwia późniejsze (automatyczne) zarzadzanie W Debianie: Plik główny (z ogólna konfiguracja) nazywa się /etc/apache2/apache2.conf Właczane sa do niego: wszystkie pliki znajdujace się w katalogu /etc/apache2/mods-enabled/ (opis i konfiguracja właczanych modułów) konfiguracja portów /etc/apache2/ports.conf kawałki konfiguracji z katalogu /etc/apache2/conf.d konfiguracja domen wirtualnych /etc/apache2/sites-enabled/ komputerowa () Apache serwer WWW 3 / 18
Hierarchia plików konfiguracyjnych Konstrukcja pliku konfiguracyjnego Można mieć wszystko w jednym pliku...... albo w jednym pliku, który włacza inne pliki poleceniem Include Rozbicie na poszczególne pliki ułatwia późniejsze (automatyczne) zarzadzanie W Debianie: Plik główny (z ogólna konfiguracja) nazywa się /etc/apache2/apache2.conf Właczane sa do niego: wszystkie pliki znajdujace się w katalogu /etc/apache2/mods-enabled/ (opis i konfiguracja właczanych modułów) konfiguracja portów /etc/apache2/ports.conf kawałki konfiguracji z katalogu /etc/apache2/conf.d konfiguracja domen wirtualnych /etc/apache2/sites-enabled/ komputerowa () Apache serwer WWW 3 / 18
Hierarchia plików konfiguracyjnych Domeny wirtualne O domenach wirtualnych dowiemy się na następnych zajęciach Po instalacji w katalogu /etc/apache2/sites-enabled/ znajduje się plik 000-default będacy dowiazaniem do /etc/apache2/sites-available/default zawierajacego NameVirtualHost * <VirtualHost *> # Konfiguracja domyślnej domeny, # np. komputer.strefa1.pracownia </VirtualHost> komputerowa () Apache serwer WWW 4 / 18
Uruchamianie i zatrzymywanie Uruchamianie i zatrzymywanie Do uruchamiania i zatrzymywania służy polecenie apache2ctl. apache2ctl start (albo /etc/init.d/apache2 start) Najpierw uruchamia się proces główny (z prawami użytkownika root) i grupa serwerów odpowiedzialnych za obsługę żadań do serwera WWW. Listen 80 - port na którym nasłuchuje serwer apache2ctl stop (albo /etc/init.d/apache2 stop) apache2ctl restart (albo /etc/init.d/apache2 restart) apache2ctl graceful (albo /etc/init.d/apache2 reload) pozwala procesom zakończyć aktualnie obsługiwane żadania. komputerowa () Apache serwer WWW 5 / 18
Uruchamianie i zatrzymywanie Start serwera cd. W zależności od rodzaju obciażenia serwera można wybrać model prefork (pojedyncze watki, stabilniejszy, bezpieczniejszy) lub worker (wielowatkowość, bardziej wydajny) Ustawianie ilości serwerów obsługujacych żadania <IfModule mpm_prefork_module> StartServers 5 MinSpareServers 5 MaxSpareServers 20 MaxClients 30 MaxRequestsPerChild 1000 </IfModule> komputerowa () Apache serwer WWW 6 / 18
Uruchamianie i zatrzymywanie Start serwera cd. W zależności od rodzaju obciażenia serwera można wybrać model prefork (pojedyncze watki, stabilniejszy, bezpieczniejszy) lub worker (wielowatkowość, bardziej wydajny) Ustawianie ilości serwerów obsługujacych żadania <IfModule mpm_prefork_module> StartServers 5 MinSpareServers 5 MaxSpareServers 20 MaxClients 30 MaxRequestsPerChild 1000 </IfModule> komputerowa () Apache serwer WWW 6 / 18
Uruchamianie i zatrzymywanie Start serwera cd. Serwery obsługujace żadania działaja z prawami użytkownika www-data User www-data Group www-data komputerowa () Apache serwer WWW 7 / 18
Konfiguracja katalogów Prosta konfiguracja przykładowa ServerAdmin webmaster@localhost DocumentRoot /var/www <Directory /var/www/> Options Indexes Order allow,deny Allow from all </Directory> Odwołania do http://localhost/, http://local_ip/ itd. zwróca stronę z katalogu /var/www, kolejność przegladania ustalona jest przez DirectoryIndex index.html index.cgi index.pl index.php index.xhtml zawartość katalogu /var/www jeśli opcja Options Indexes jest aktywna. komputerowa () Apache serwer WWW 8 / 18
Konfiguracja katalogów Dostępne opcje Options ExecCGI - można wykonywać skrypty CGI FollowSymLinks - można używać dowiazań symbolicznych Includes - włacza SSI Indexes - możliwe jest obejrzenie zawartości katalogu, jeśli nie ma pliku index. All - wszystkie z powyższych None - żadne z powyższych komputerowa () Apache serwer WWW 9 / 18
Konfiguracja katalogów Hierarchiczne ustawianie opcji Ustawienia dla Directory sa dziedziczone w podkatalogach: <Directory /> Options None </Directory> <Directory /var/www/> Options Indexes </Directory> <Directory /var/www/aaa/> Options Includes FollowSymLinks </Directory> <Directory /var/www/aaa/bbb/> Options +ExecCGI +Indexes -FollowSymLinks </Directory> komputerowa () Apache serwer WWW 10 / 18
Konfiguracja katalogów Hierarchiczne ustawianie opcji cd. Warto zatem w samym korzeniu dać jak najmniejsze uprawnienia i właczyć je ewentualnie dla konkretnych podkatalogów: <Directory /> Options None Order deny,allow Deny from all </Directory> # to też się dziedziczy # i to komputerowa () Apache serwer WWW 11 / 18
Konfiguracja katalogów Hierarchiczne ustawianie opcji cd. Warto zatem w samym korzeniu dać jak najmniejsze uprawnienia i właczyć je ewentualnie dla konkretnych podkatalogów: <Directory /> Options None Order deny,allow Deny from all </Directory> # to też się dziedziczy # i to komputerowa () Apache serwer WWW 11 / 18
Konfiguracja katalogów Kontrola dostępu na podstawie adresu Order określa, w jakiej kolejności będa przegladane opcje Allow i Deny Po Allow from i Deny from można podać nazwę domeny lub adres IP. Order deny,allow: domyślnie dostęp jest dany. Jeśli adres jest w regułach Deny to dostęp jest zabroniony, chyba że adres jest jednocześnie w regułach Allow. Order allow,deny: domyślnie dostęp jest zabroniony. Jeśli adres jest w regułach Allow to dostęp jest dozwolony, chyba że adres jest jednocześnie w regułach Deny. Przykład Order allow,deny Allow from apache.org Deny from foo.apache.org komputerowa () Apache serwer WWW 12 / 18
Konfiguracja katalogów Adresy katalogi Standardowo adresy przekształcane sa z http://adres_domeny/aaa/bbb na plik DocumentRoot/aaa/bbb. Następnie dla takiego katalogu określane sa prawa dostępu (jak na poprzednich slajdach) Można to przekształcanie zmodyfikować, używajac opcji Alias Alias /image /var/www/aaa/images Alias /pict /home/ftp/pub Odwołanie do http://adres_domeny/pict/obrazek.jpg zwróci plik /home/ftp/pub/obrazek.jpg komputerowa () Apache serwer WWW 13 / 18
Konfiguracja katalogów Adresy katalogi, cd. Analogicznie: przekierowania z jednego adresu URL na inny. (Użytkownik zostaje o tym powiadomiony.) Z punktu widzenia odbiorcy jest to takie samo przekierowanie jak zrobione w HTML-u czy np. w PHP. Można też przekierowywać na inny serwer: Redirect /service http://inny_serwer/service Można też używać wyrażeń regularnych RedirectMatch (.*)\.gif$ http://www.anotherserver.com$1.jpg komputerowa () Apache serwer WWW 14 / 18
Skrypty CGI CGI CGI - Common Gateway Interface - określa sposób w jaki serwer WWW komunikuje się z zewnętrznymi programami generujacymi zawartość stron WWW. Częsty sposób tworzenia dynamicznych stron WWW. Skrypty CGI można pisać w dowolnym języku. Najprostszy skrypt CGI: #!/usr/bin/perl print "Content-type: text/html\n\n"; print "Hello, World."; komputerowa () Apache serwer WWW 15 / 18
CGI a Apache CGI Żeby CGI mógł zostać uruchomiony 1 skrypt musi mieć prawa +x oraz 2 musi zachodzić jeden z warunków: Skrypt musi znajdować się w katalogu ze skryptami ScriptAlias /cgi-bin/ /var/skrypty/cgi-bin/ Uruchamianie przez http://serwer/cgi-bin/skrypt.rozszerzenie Skrypt musi mieć rozszerzenie zadeklarowane do obsługi przez interfejs CGI: AddHandler cgi-script.cgi.pl oraz dla katalogu w którym się znajduje musi być właczone Options +ExecCGI komputerowa () Apache serwer WWW 16 / 18
Pliki dziennika Rejestrowanie zdarzeń Istnieja dwa główne pliki dziennika: 1 Plik z błędami ErrorLog /var/log/apache2/error.log zawiera głównie krytyczne błędy apache, błędy w skryptach CGI oraz komunikaty o odmowie dostępu (Deny from...) 2 Plik z żadaniami stron CustomLog /var/log/apache2/access.log common LogFormat "%h %l %u %t %r %>s %b" common Zawiera wszystkie żadania HTTP zgłoszone do serwera, wraz z odpowiedziami serwera. komputerowa () Apache serwer WWW 17 / 18
Literatura Literatura Ben Laurie, Peter Laurie Apache: The Definitive Guide O Reilly & Associates The Apache Software Foundation Apache HTTP Server Version 2.0 Documentation http://httpd.apache.org/docs/2.0/ komputerowa () Apache serwer WWW 18 / 18