Michał Gottlieb. Podręcznik Apache.



Podobne dokumenty
Konfiguracja serwera Apache

Rys. 1. Widok uruchomienia polecenia apt-get install build-essential. Rys. 2. Widok uruchomienia polecenia apt-get install apache2

Apache. Apache serwer WWW

Apache serwer WWW. Marcin Bieńkowski. Instytut Informatyki Uniwersytet Wrocławski

Apache serwer WWW (część 2) Marcin Bieńkowski. Instytut Informatyki Uniwersytet Wrocławski

W poprzednim odcinku poznaliśmy: W poprzednim odcinku, cd.: W dzisiejszym odcinku. Apache serwer WWW (część 2)

Hosting WWW Bezpieczeństwo hostingu WWW. Dr Michał Tanaś (

Zapoznanie się z konfiguracją i zarządzaniem serwerem WWW - Apache.

Serwery WWW. Konfiguracja. Zadania serwera. NCSA httpd 1.5

Tomasz Greszata - Koszalin

Instytut Teleinformatyki

FTP co to takiego? FTP File Transfer Protocol (Protokół Przesyłania Plików) RFC 114,959

I.Wojnicki, Tech.Inter.

Zarządzanie systemami informatycznymi. Zarządzanie serwerem httpd: Apache

Parametr --prefix wskazuje katalog, do którego zostanie zainstalowany serwer.

Aplikacje WWW. Wykład 12. Serwery HTTP. wykład prowadzi: Maciej Zakrzewicz. Serwery HTTP

Qmail radość listonosza. Autorzy: Bartosz Krupowski, Marcin Landoch IVFDS

SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE

instrukcja INSTALACJI APi_proxy

Instrukcja konfiguracji funkcji skanowania

Serwer Apache podstawy instalacji i administracji.

Hosting WWW Bezpieczeństwo hostingu WWW. Dr Michał Tanaś (

WINDOWS Instalacja serwera WWW na systemie Windows XP, 7, 8.

Pracownia internetowa w każdej szkole (edycja Jesień 2007)

Instalacja i konfiguracja serwera IIS z FTP

System operacyjny Linux

Adam Warnowski NT Group 1 / 25

Najczęściej występujące problemy z instalacją i konfiguracją i ich rozwiązania.

Podstawy technologii WWW

Laboratorium 3.4.2: Zarządzanie serwerem WWW

Pracownia internetowa w każdej szkole (edycja jesień 2005)

Memeo Instant Backup Podręcznik Szybkiego Startu

Niezbędne narzędzia. Przed rozpoczęciem pracy z PHP należy zainstalować odpowiednie narzędzia: środowisko PHP serwer WWW serwer baz danych MySQL

Wykaz zmian w programie SysLoger

Automatyczna aktualizacja. Instalacja Serwera aktualizacji

Dokonaj instalacji IIS opublikuj stronę internetową z pierwszych zajęć. Ukaże się kreator konfigurowania serwera i klikamy przycisk Dalej-->.

SERWER AKTUALIZACJI UpServ

Dokumentacja fillup - MS SQL

Korzystanie z edytora zasad grupy do zarządzania zasadami komputera lokalnego w systemie Windows XP

Windows W celu dostępu do i konfiguracji firewall idź do Panelu sterowania -> System i zabezpieczenia -> Zapora systemu Windows.

INSTALACJA SERWERA LOKALNEGO TYPU WAMP NA PRZYKŁADZIE PAKIETU KRASNAL SERV 2.7

Zanim zaczniesz. Warto ustawić kartę sieciową naszego serwera.

Linux -- u mnie działa!

Usługi sieciowe systemu Linux

Tomasz Greszata - Koszalin

Laboratorium - Poznawanie FTP

MAMP: Można to pobrać i zainstalować z XAMPP: Można go pobrać i zainstalować z

Instalacja Active Directory w Windows Server 2003

Archiwizacja baz MSSQL /BKP_SQL/ opis oprogramowania

Klient poczty elektronicznej - Thunderbird

Win Admin Monitor Instrukcja Obsługi

Data modyfikacji:

ZPKSoft WDoradca. 1. Wstęp 2. Architektura 3. Instalacja 4. Konfiguracja 5. Jak to działa 6. Licencja

Pomoc dla r.

Konfiguracja vsftpd ( Very Secure FTP Server )

Zadanie1: Odszukaj w serwisie internetowym Wikipedii informacje na temat protokołu http.

Budowa intranetu Linux, Apache, VirtualHost. Rajmund Radziewicz

I. Informacje ogólne. Jednym z takich systemów jest Mambo.

Kancelaria Prawna.WEB - POMOC

Wszystkie parametry pracy serwera konfigurujemy w poszczególnych zakładkach aplikacji, podzielonych wg zakresu funkcjonalnego.

Podręcznik użytkownika

Currenda EPO Instrukcja Konfiguracji. Wersja dokumentu: 1.3

PORADNIK "JAK ZAŁOŻY Ć KONTO WWW NA ELEKTRODA.EU" Przemysław Kojac v1.0

KOMPUTEROWY SYSTEM WSPOMAGANIA OBSŁUGI JEDNOSTEK SŁUŻBY ZDROWIA KS-SOMED

Instrukcja obsługi/instalacji platformy Krok w Przedsiębiorczość Administrator platformy

Instytut Teleinformatyki

PODRĘCZNIK UŻYTKOWNIKA programu Pilot

Panel Administracyjny Spis treści:

PORADNIK KORZYSTANIA Z SERWERA FTP ftp.architekturaibiznes.com.pl

Joomla! Instalacja. Pobierz pakiet instalacyjny. instalacji XAMPP

Instrukcja instalacji odtwarzacza RealPlayer dla systemu Windows.

Instrukcja instalacji: Apache, PHP, MySQL, PHP My Admin

INSTRUKCJA OBSŁUGI DLA SIECI

Lokalne konta użytkowników

Współpraca z platformą Emp@tia. dokumentacja techniczna

SOWA-WWW. Moduł prezentacji katalogu bibliotecznego w sieci WWW. Dokumentacja techniczna. Autor: Michał Fryska Data: Wersja: 1.

Instrukcja instalacji usługi Sygnity Service

2014 Electronics For Imaging. Informacje zawarte w niniejszej publikacji podlegają postanowieniom opisanym w dokumencie Uwagi prawne dotyczącym tego

Etap 1 - Przygotowanie środowiska uruchomieniowego dla aplikacji internetowej

Jarosław Kuchta Administrowanie Systemami Komputerowymi. Internetowe Usługi Informacyjne

Pracownia internetowa w szkole ZASTOSOWANIA

Dokumentacja systemu NTP rekrut. Autor: Sławomir Miller

Windows Serwer 2008 R2. Moduł 5. Zarządzanie plikami

Protokół HTTP. 1. Protokół HTTP, usługi www, model request-response (żądanie-odpowiedź), przekazywanie argumentów, AJAX.

procertum CLIDE Client 2.1 wersja 1.0.2

Instrukcja użytkownika

Instalacja systemu zarządzania treścią (CMS): Joomla

Instalacja NOD32 Remote Administrator

Pracownia internetowa w każdej szkole (edycja Jesień 2007)

Problemy techniczne SQL Server

Skrócony podręcznik dla partnerów

SIP Studia Podyplomowe Ćwiczenie laboratoryjne Instrukcja

System operacyjny Linux

Wdrożenie modułu płatności eservice. dla systemu Magento

Podgląd z rejestratorów IPOX na komputerze z systemem WINDOWS za pomocą programu NVMS-2.0 LITE

CREATE USER

Instrukcja dla instalatora systemu SMDP Enterprise/Professional

ibok Internetowe Biuro Obsługi Klienta

Aplikacje internetowe - laboratorium

SERWER AKTUALIZACJI UpServ

Transkrypt:

Michał Gottlieb. http://www.linuxstorm.org/ Podręcznik Apache. 2005.04.12 strona 1

...::: Spis Treści :::... 1.0. O Apache... 3 1.1. Wymagania... 3 2.0. Instalacja... 4 2.1. Instalacja Apache... 4 2.2. Instalacja Apache + PHP + MySQL... 5 3.0. Konfiguracja... 7 4.0. Administracja... 16 4.1. Uruchamianie... 17 5.0. Dodatkowe możliwości... 18 5.1. Moduły... 18 5.2. Virtualne Hosty... 18 5.3. CGI-BIN... 20 5.4. htaccess... 22 6.0. Pomoc... 25 strona 2

1.0. O Apache Apache jest serwerem HTTPD opartym na darmowej licencji. Projekt Apache tworzy wielu programistów z całego świata. Apache jest kontynuacją dawnego serwera - httpd, którego autorem był Rob McCool. W lutym 1995 projekt httpd został zawieszony. Wtedy pojawił się problem, ponieważ był to zdecydowanie najpopularniejszy daemon dla stron www. Wielu użytkowników httpd zaczęło pisać własne moduły, poprawki i dodatkowe opcje serwera. Po jakimś czasie zaczęli oni się wymieniać swoimi łatkami przez internet, dzięki czemu projekt nadal był w pewien sposób utrzymywany, rozwijany i zabezpieczany. Brian Behlendorf i Cliff Skolnick założyli w końcu listę dyskusyjną dla osób, które nadal chciały rozwijać projekt. Pod koniec lutego, ośmiu programistów założyło grupę pod nazwą Apache. Byli to: Brian Behlendorf Roy T. Fielding Rob Hartill David Robinson Cliff Skolnick Randy Terbush Robert S. Thau Andrew Wilson Korzystając z httpd 1.3 jako projekt bazowy, dodali do niego wszystkie znalezione poprawki i rozszerzenia testując je na swoich własnych komputerach. Po otrzymaniu pierwszych dobrych wyników, została opublikowana pierwsza oficjalna wersja serwera Apache 0.6.2 (kwiecień 1995). W roku 1999 powstała Apache Software Foundation (http://www.apache.org/), która utrzymuje się do dzisiaj. W tej chwili rozwijane są dwie główne wersje serwera Apache. Pierwszą jest gałąź z serii 1.3, która jest oficjalnie stabilną wersją daemona, a druga to seria httpd 2.0, która rozwijana jest jako projekt 'developperski', ciągle testowany i rozwijany przez ludzi z całego świata. Ten podręcznik będzie opisywał na razie tylko wersję Apache 1.3. 1.1. Wymagania.. Do poprawnej kompilacji oraz korzystania z serwera Apache wymagane są: co najmniej 12 MB wolnej przestrzeni dyskowej kompilator języka C zgodny ze standardem ANSI (najlepiej GNU GCC w wersji 2.7.2 lub wyższej) strona 3

interpreter Perla 5 (opcjonalnie) obsługa DSO - Dynamic Shared Object (opcjonalnie) 2.0.Instalacja 2.1.Instalacja Apache. Najpierw trzeba zacząć od ściągnięcia źródeł Apache ze strony http://httpd.apache.org/download.cgi. Po ściągnięciu skopiuj archiwum w jakieś sensowne miejsce typu /usr/local/src/. Teraz rozpakuj archiwum i wejdź do powstałego katalogu: cd /usr/local/src tar -zxvf apache_1.3.33.tar.gz cd apache_1.3.33/ Pierwszą czynnością, którą powinieneś wykonać jest ustawienie parametrów, z jakimi chcesz skompilować swój serwer http. Do tego możesz użyć skryptu 'configure'. Najpierw obejrzyj wszystkie dostępne opcje wpisując:./configure help Opiszę tutaj kilka ważniejszych z tych opcji. --prefix=[katalog] - katalog docelowy, w którym ma zostać zainstalowany serwer. --add-module=[plik] - dodanie modułu do kompilacji. --activate-module=[plik] - aktywowanie modułu. --enable-module=[nazwa] - włączenie modułu. --disable-module=[nazwa] - wyłączenie modułu --with-perl=[plik] - ścieżka do perla. Większość z pozostałych opcji będzie można ustawić później. Załóżmy, że na razie nie chcesz kompilować żadnych dodatkowych modułów, a perla masz zainstalowanego w standardowych katalogach. Aby zainstalować serwer do katalogu /usr/local/apache, wydaj polecenie:./configure prefix=/usr/local/apache strona 4

Teraz skrypt configure sprawdzi wszystkie zależności i czy masz zainstalowane w systemie wszystkie wymagane biblioteki. Jeśli nie będzie żadnych błędów, to możesz zacząć kompilację. W tym samym katalogu wpisz: make Jeśli nie będzie błędów, zainstaluj wszystkie pliki: make install Po wydaniu tego polecenia, wszystkie pliki powinny zostać skopiowane do katalogu, który podałeś w ustawieniach 'prefix'. W tym przypadku /usr/local/apache. 2.2. Instalacja Apache + PHP + MySQL Trochę inaczej wygląda instalacja, jeśli chcesz używać PHP i bazy danych MySQL. Ściągnij źródła MySQL i PHP. Najpierw musisz zainstalować bazę MySQL (instrukcje znajdziesz w dokumentacji dołączonej do źródeł bazy). Teraz skopiuj archiwum z PHP do /usr/local/src/ (tam gdzie masz archiwum z Apache) i po kolei wydaj polecenia: cd /usr/local/src tar -zxvf apache_1.3.33.tar.gz tar -zxvf php-4.3.9.tar.gz Oczywiście w miejsca plików musisz wpisać takie, jakie ściągnąłeś. Dla szybszego dostępu zrób sobie jeszcze dowiązania symboliczne: ln -s apache_1.3.33 apache ln -s php-4.3.9 php Najpierw musisz zająć się Apache: cd apache./configure prefix=/usr/local/apache Teraz zainstaluj PHP: strona 5

cd../php./configure with-apache=../apache with-mysql make make install PHP masz w tym momencie zainstalowane. Możesz wrócić do Apache: cd../apache./configure --prefix=/usr/local/apache activate-module=src/modules/php4/libphp4.a make make install Tutaj możesz się zdziwić, dlaczego aktywujesz plik, którego nie ma, ale wszystko jest dobrze. Plik 'libphp4.a' zostanie utworzony w trakcie kompilacji. Aby Apache poprawnie obsługiwać pliki PHP, musisz jeszcze wykonać dwie czynności. Pierwszą będzie skopiowanie pliku z ustawieniami PHP: cd../php cp php.ini-dist /usr/local/lib/php.ini Ostatnią rzeczą będzie dopisanie do /usr/local/apache/conf/httpd.conf linii: AddType application/x-httpd-php.php Możesz sprawdzić czy PHP na pewno działa. Do katalogu z plikami stron www skopiuj php 'test.php' z taką zawartością: <?php phpinfo();?> Uruchom serwer: cd /usr/local/apache/bin./apachectl start I wejdź jakąś przeglądarką na stronę http://www.twój-serwer.pl/test.php. Jeśli zobaczysz stronę z ustawieniami Apache i PHP to będziesz wiedział, że wszystko działa prawidłowo. W innym strona 6

przypadku upewnij się, czy nie popełniłeś nigdzie błędu i czy apache jest poprawnie skonfigurowany. 3.0. Konfiguracja. Cała konfiguracja serwera Apache znajduje się w pliku 'httpd.conf' (/usr/local/apache/conf/httpd.conf). Postaram się tutaj opisać najważniejsze opcje konfiguracji. Komentarze będę umieszczał za znakiem '#' (hasz). Otwórz plik httpd.conf w swoim ulubionym edytorze i zacznij konfigurację: # Typ serwera, czyli na jakiej zasadzie ma on działać. Do wyboru mamy 'standalone' i 'inetd', ale ten pierwszy sposób bedzie o wiele bezpieczniejszy. ServerType standalone # Główny katalog Apache, czyli gdzie jest zainstalowany. ServerRoot "/usr/local/apache" # Ścieżka do pliku blokującego. Plik ten jest tworzony podczas startu serwera i usuwany przy jego wyłączaniu. LockFile /usr/local/apache/logs/httpd.lock # Ścieżka do pliku, który będzie zawierał aktualny numer procesu apache. PidFile /usr/local/apache/logs/httpd.pid # Ścieżka do pliku scoreboard, który będzie przechowywał informacje o wewnętrznych procesach serwera. ScoreBoardFile /usr/local/apache/logs/httpd.scoreboard # Ścieżki do plików źródeł i dostępu. Zalecane jest, aby te pliki pozostały puste, a wszystkie ustawienia były wpisywane w httpd.conf. Aby całkowicie zignorować te pliki, możesz wpisać jako ścieżkę /dev/null. ResourceConfig /usr/local/apache/conf/srm.conf AccessConfig /usr/local/apache/conf/access.conf # Liczba sekund, którą serwer będzie oczekiwał na pakiet. Po upływie tego czasu, połączenie z klientem będzie zrywane. Standardowo jest to 300 sekund. strona 7

Timeout 300 # Utrzymywanie połączenia z klientem podczas przeglądania plików na serwerze. (wpisz 'Off' aby wyłączyć, lub 'On' aby włączyć) KeepAlive On # Liczba maksymalnych zapytań, które będą utrzymywane jako jedno połączenie. Im wyższa liczba, tym wydajniejsza będzie praca serwera. Aby ustawić 'nieograniczone', wpisz 0. MaxKeepAliveRequests 100 # Liczba sekund, którą serwer ma oczekiwać na kolejne zapytanie od tego samego klienta i tego samego połączenia. KeepAliveTimeout 15 # Minimalna ilość procesów serwera. Przy słabych komputerach lepiej zostawić mniejszą liczbę. MinSpareServers 5 # Maksymalna ilość procesów, której serwer ma nie przekraczać. MaxSpareServers 10 # Liczba procesów, z którymi będzie startował serwer. StartServers 5 # Maksymalna liczba użytkowników połączonych jednocześnie do serwera. Jeśli zostanie ona osiągnięta, następny klient zostanie zablokowany i będzie oczekiwał, aż zwolni się miejsce, więc ta liczba nie powinna być zbyt mała. MaxClients 150 # Liczba maksymalnych odwołań do procesu głównego od procesów potomnych zanim zakończą one pracę. Nieograniczona ilość to 0 i tak najlepiej zostawić. MaxRequestsPerChild 0 # Tutaj możesz ustawić port i adres IP, na którym będzie pracował serwer. Jeśli posiadasz tylko jeden adres IP i nie chcesz używać żadnych niestandardowych portów, to zostaw te opcje zakomentowane (zakomentowane, zahaszowane opcje nie są brane pod uwagę). #Listen 3000 #Listen 12.34.56.78:80 strona 8

#BindAddress * # Włączenie tej opcji karze serwerowi wyświetlać pełne informacje o swoim statusie. ExtendedStatus Off # Port, na którym będzie nasłuchiwał serwer. Standardowym portem jest 80. Port 80 # Użytkownik i grupa, na których ma pracować serwer. Dla bezpieczeństwa powinny one mieć jak najniższe uprawnienia. User nobody Group nogroup # Adres pocztowy administratora serwera. ServerAdmin raven@linuxstorm.org # Nazwa serwera. Będzie to adres, który serwer będzie wysyłał do klientów podczas połączenia. Możesz podać tutaj swoją domenę. Wpisany adres musi być koniecznie zarejestrowaną w DNS'ach domeną, w przeciwnym wypadku nie będzie działał poprawnie. Jeśli nie posiadasz żadnej domeny, wpisz swój adres IP. ServerName linuxstorm.org # Główny katalog serwera, w którym będą się znajdowały publikowane pliki. DocumentRoot "/usr/local/apache/htdocs" # Ustawienia dostępu do katalogu głównego. <Directory /> Options FollowSymLinks AllowOverride All </Directory> # Początek ustawień dla głównego katalogu publicznego. Wpisz tutaj ścieżkę, którą podałeś w DocumentRoot <Directory "/usr/local/apache/htdocs"> Options Indexes FollowSymLinks MultiViews AllowOverride All strona 9

Order allow,deny Allow from all # Tutaj możesz zablokować dostęp do serwera z podanego adresu. Deny from jakis.adres.pl </Directory> # Ustawienia dla modułu 'mod_userdir'. Pozwala on na publikowanie swoich plików przez użytkowników, w ich domowych katalogach. <IfModule mod_userdir.c> # Nazwa katalogu, w którym mają znajdować się pliki do udostępniania. Katalogi o takiej nazwie należy później utworzyć w swoim katalogu domowym, np. /home/raven/www. UserDir www </IfModule> # Ustawienia dla katalogów użytkowników. Jeśli ustawiłeś wcześniej inny katalog niż 'www' to tutaj wpisz jego nazwę. <Directory /home/*/www> AllowOverride FileInfo AuthConfig Limit # Jeśli Twój serwer nie obsługuje skryptów CGI-BIN lub nie chcesz, aby użytkownicy mieli prawo do ich uruchamiania to usuń ostatnią opcję. Options MultiViews Indexes SymLinksIfOwnerMatch +ExecCGI <Limit GET POST OPTIONS PROPFIND> Order allow,deny Allow from all </Limit> <LimitExcept GET POST OPTIONS PROPFIND> Order deny,allow Deny from all </LimitExcept> </Directory> # Nazwy plików, które będą przez serwer wyszukiwane w pierwszej kolejności, jako index katalogu. Możesz podać dowolną ilość plików, oddzielając każdy spacją. <IfModule mod_dir.c> DirectoryIndex index.html index.htm index.php index.cgi strona 10

</IfModule> # Nazwa pliku dostępu, który używany będzie do autoryzacji użytkownika. AccessFileName.htaccess # Prawa dostępu do plików.htaccess <Files ~ "^\.ht"> Order allow,deny Deny from all Satisfy All </Files> # Włączenie tej opcji zezwala serwerowi na korzystanie z nazw kanonicznych, które serwer będzie sam tworzył na bazie adresu domenowego i portu. UseCanonicalName On # Plik z ustawieniami do różnych rozszerzeń. <IfModule mod_mime.c> TypesConfig /usr/local/apache/conf/mime.types </IfModule> # Standardowy typ dla publikowanych plików. DefaultType text/plain # Ten moduł pozwala serwerowi 'zgadywać', jaki właśnie plik jest odczytywany i czego powinien użyć. <IfModule mod_mime_magic.c> MIMEMagicFile /usr/local/apache/conf/magic </IfModule> # Jeśli chcesz, aby serwer odczytywał adresy host klientów, włącz tą opcję. W przeciwnym wypadku będzie odczytywany tylko adres IP. HostnameLookups On # Ścieżka do pliku błędów, do którego serwer będzie wysyłał informacje. ErrorLog /usr/local/apache/logs/error_log strona 11

# Stopień dokładności, czyli jakie informacje mają być zapisywane do pliku błędów. Możliwe opcje to: debug, info, notice, warn, error, crit, alert, emerg. Jeśli chcesz otrzymywać tylko ostrzeżenia, zostaw 'warn'. LogLevel warn # Tutaj możesz zdefiniować składnię logowania dla plików 'CustomLog'. Między znakami umieść parametry, a za nimi nazwę formatu, pod którym będą one dostępne. LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined LogFormat "%h %l %u %t \"%r\" %>s %b" common LogFormat "%{Referer}i -> %U" referer LogFormat "%{User-agent}i" agent # Plik dostępu. Do niego serwer będzie zapisywał informacje o każdym połączeniu. Po podaniu ścieżki możesz ustalić jaki ma być format logowania. Do wyboru masz te zdefiniowane wyżej. CustomLog /usr/local/apache/logs/access_log combined # Włączenie tej opcji pozwala na wyświetlanie statusu serwera między innymi podczas listowania FTP i na stronach błędów. Aby wyłączyć tą opcję, wpisz Off, a jeśli chcesz, aby serwer wyświetlał tylko Twój adres e-mail, wpisz EMail. ServerSignature On # Ten moduł umożliwia Ci tworzenie aliasów do dowolnych katalogów w systemie. <IfModule mod_alias.c> Alias /icons/ "/usr/local/apache/icons/" <Directory "/usr/local/apache/icons"> Options Indexes MultiViews AllowOverride None Order allow,deny Allow from all </Directory> Alias /manual/ "/usr/local/apache/htdocs/manual/" <Directory "/usr/local/apache/htdocs/manual"> Options Indexes FollowSymlinks MultiViews AllowOverride None Order allow,deny strona 12

Allow from all </Directory> # Ścieżka i alias do katalogu skryptów CGI-BIN. ScriptAlias /cgi-bin/ "/usr/local/apache/cgi-bin/" <Directory "/usr/local/apache/cgi-bin"> AllowOverride None Options None Order allow,deny Allow from all </Directory> </IfModule> # Konfiguracja modułu 'autoindex'. <IfModule mod_autoindex.c> IndexOptions FancyIndexing AddIconByEncoding (CMP,/icons/compressed.gif) x-compress x-gzip AddIconByType (TXT,/icons/text.gif) text/* AddIconByType (IMG,/icons/image2.gif) image/* AddIconByType (SND,/icons/sound2.gif) audio/* AddIconByType (VID,/icons/movie.gif) video/* AddIcon /icons/binary.gif.bin.exe AddIcon /icons/binhex.gif.hqx AddIcon /icons/tar.gif.tar AddIcon /icons/world2.gif.wrl.wrl.gz.vrml.vrm.iv AddIcon /icons/compressed.gif.z.z.tgz.gz.zip AddIcon /icons/a.gif.ps.ai.eps AddIcon /icons/layout.gif.html.shtml.htm.pdf AddIcon /icons/text.gif.txt AddIcon /icons/c.gif.c AddIcon /icons/p.gif.pl.py AddIcon /icons/f.gif.for AddIcon /icons/dvi.gif.dvi AddIcon /icons/uuencoded.gif.uu strona 13

AddIcon /icons/script.gif.conf.sh.shar.csh.ksh.tcl AddIcon /icons/tex.gif.tex AddIcon /icons/bomb.gif core AddIcon /icons/back.gif.. AddIcon /icons/hand.right.gif README AddIcon /icons/folder.gif ^^DIRECTORY^^ AddIcon /icons/blank.gif ^^BLANKICON^^ DefaultIcon /icons/unknown.gif # Opisy plików. AddDescription "GZIP compressed document".gz AddDescription "tar archive".tar AddDescription "GZIP compressed tar archive".tgz # Nazwa pliku README i HEADER. (plik README wyświetlany jest na dole indeksu, a HEADER na górze, jako nagłowek.) ReadmeName README HeaderName HEADER # Nazwy ignorowanie przez index. IndexIgnore.??* *~ *# HEADER* README* RCS CVS *,v *,t </IfModule> # Konfiguracja modułu 'mod_mime'. <IfModule mod_mime.c> # Obsługiwane języki i kodowania. AddLanguage da.dk AddLanguage nl.nl AddLanguage en.en AddLanguage et.ee AddLanguage fr.fr AddLanguage de.de strona 14

AddLanguage el.el AddLanguage he.he AddCharset ISO-8859-8.iso8859-8 AddLanguage it.it AddLanguage ja.ja AddCharset ISO-2022-JP.jis AddLanguage kr.kr AddCharset ISO-2022-KR.iso-kr AddLanguage nn.nn AddLanguage no.no AddLanguage pl.po AddCharset ISO-8859-2.iso-pl AddLanguage pt.pt AddLanguage pt-br.pt-br AddLanguage ltz.lu AddLanguage ca.ca AddLanguage es.es AddLanguage sv.sv AddLanguage cs.cz.cs AddLanguage ru.ru AddLanguage zh-tw.zh-tw AddCharset Big5.Big5.big5 AddCharset WINDOWS-1251.cp-1251 AddCharset CP866.cp866 AddCharset ISO-8859-5.iso-ru AddCharset KOI8-R.koi8-r AddCharset UCS-2.ucs2 AddCharset UCS-4.ucs4 AddCharset UTF-8.utf8 <IfModule mod_negotiation.c> # Priorytet języków. LanguagePriority pl en da nl et fr de el it ja kr no pt pt-br ru ltz ca es sv tw </IfModule> # Rozszerzenia plików i aplikacje, z którymi są one powiązane. AddType application/x-tar.tgz strona 15

AddEncoding x-compress.z AddEncoding x-gzip.gz.tgz AddType application/x-httpd-php.php AddType application/cgi-bin.pl AddHandler cgi-script.cgi </IfModule> # Strony błędów. Możesz tutaj zdefiniować ścieżki do stron, które będą wyświetlane kiedy wystąpi błąd o danym numerze. ErrorDocument 500 /500.html ErrorDocument 404 /404.html ErrorDocument 402 /402.html # Konfiguracja dla modułu 'mod_serenvif'. Dzięki niemu możesz modyfikować odpowiedzi HTTP. <IfModule mod_setenvif.c> # Wyłącza opcje utrzymywania połączenia dla przeglądarki Netscape 2 oraz innych, które się pod nią 'podszywają' (spoof). Netscape 2 niepoprawnie obsługuje utrzymywanie połączeń, więc lepiej to wpisać. BrowserMatch "Mozilla/2" nokeepalive # Wyłączenia utrzymywania połączeń dla przeglądarki Microsoft Internet Explorer 4.0b. Przeglądarka ta posiada nieprawidłową implementacje protokołu HTTP/1.1 i źle obsługuję utrzymywanie połączeń przy przekierowaniach 301 i 302. BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response-1.0 # Wymuszone połączenie poprzez protokół HTTP/1.0 z powodu braku lub złej obsługi HTTP/1.1. BrowserMatch "RealPlayer 4\.0" force-response-1.0 BrowserMatch "Java/1\.0" force-response-1.0 BrowserMatch "JDK/1\.0" force-response-1.0 </IfModule> # Koniec konfiguracji. Jeśli nie popełniłeś błędu, serwer powinien działać z tymi ustawieniami bez żadnych problemów. Dodatkowe opcje konfiguracji będą opisane w dalszej części tego podręcznika. 4.0.Administracja strona 16

4.1.Uruchamianie http://www.linuxstorm.org/ Do uruchamiania serwera Apache służy skrypt 'apachectl', który instalowany jest razem z serwerem. Jeśli Apache zainstalowany jest w katalogu /ust/local/apache, to skrypt 'apachectl' powinien się znajdować w /usr/local/apache/bin/apachectl. Skrypt można uruchamiać z takimi parametrami: start stop restart - normalny start serwera. - zatrzymanie pracy serwera i zabicie wszystkich jego procesów. - restart serwera (czyli to samo co `stop` i `start`). fullstatus - tworzy zrzut pełnych informacji o uruchomionym daemonie (wymaga przeglądarki lynx i włączonego modułu 'mod_status'). status - tworzy zrzut krótkich informacji i uruchomionym daemonie (wymaga przeglądarki lynx i włączonego modułu 'mod_status'). graceful - służy do restartowania serwera poprzez wysłanie sygnału SIGUSR1 do daemona (dzięki temu serwer nie zrywa aktualnie nawiązanych połączeń co bardzo często przydaje się np. podczas zmiany Virtualnych Hostów). configtest help - sprawdza poprawność składni w pliku konfiguracyjnym. - wyświetla krótką informację o tych parametrach. Skrypt ten można bez problemu skopiować również do katalogu ze skryptami startowymi systemu (np. w Debianie - /etc/init.d) lub dopisać do nich polecenie uruchamiające daemona (np. echo '/usr/local/apache/bin/apachectl start' >> /etc/rc.d/rc.local). Uwagi: Czasami po nieprawidłowym zamknięciu systemu (reset) apache może nie usunąć pliku z ID swojego procesu. Plik ten jest tworzony zawsze podczas startu Apache i służy on między innymi do 'powiadamiania' daemona o tym, czy jest on uruchomiony i jeśli tak to gdzie się znajduje jego proces (tzw. rodzic). Po zatrzymaniu daemona ( apachectl stop, kill -9 `pidof httpd`, itd.) ten plik jest usuwany. Jeśli natomiast Apache nie będzie uruchomiony, a nie będzie chciał wystartować ponieważ stwierdzi, że jest już włączony, trzeba usunąć plik z PID ręcznie: rm / usr/local/apache/logs/httpd.pid i wystartować go ponownie... Jeśli Apache nie będzie mógł znaleźć pliku konfiguracyjnego, możemy podać mu ścieżkę do niego jako parametr: /usr/local/apache/bin/httpd -f /ścieżka/do/httpd.conf parametru 'gracefull' nie używa się, kiedy została zmieniona tylko ścieżka logów w httpd.conf. Jeśli chcemy nagle zmienić lokalizację zapisywania logów Apache, musimy zrestartować całego daemona (apachectl restart). strona 17

5.0. Dodatkowe możliwości. 5.1. Moduły. http://www.linuxstorm.org/ Razem ze źródłami głównego serwera Apache, dołączane są również źródła stabilnych i oficjalnych modułów. Część z nich standardowo jest zaznaczana jako 'włączone' i linkowana z serwerem podczas kompilacji. Jeśli z jakiegoś modułu chciałbyś zrezygnować lub włączyć inny, niestandardowy, musisz to zaznaczyć przed kompilacją. Robi się to podczas uruchamiania skryptu 'configure', np.:./configure enable-module=[nazwa modułu] enable-module=[nazwa drugiego modułu] disable-module=[nazwa modułu do wyłączenia] Po każdej takiej konfiguracji, potrzebna jest rekompilacja, do której można użyć polecenia `make`. Jeśli moduł wymaga konfiguracji, zazwyczaj wtedy należy to zrobić w pliku httpd.conf, ale nie ma jakiejś uniwersalnej reguły na to, więc po prostu trzeba czytać dokumentacje używanych modułów. Można je znaleźć na stronie: http://httpd.apache.org/docs/mod/ 5.2 Virtualne Hosty. Virtual Host to opcja, którą udostępniają standardowe moduły Apache. Pozwala na tworzenie wirtualnych serwerów HTTP dla różnych katalogów, użytkowników, tworzyć przekierowania, osobne strony błędów, itd... Jeśli np. masz kilka domen i chciałbyś, aby każda wskazywała na inne miejsca, możesz właśnie zrobić to w Virtual Host. Załóżmy, że masz domenę 'linuxstorm.org' ;-). Chciałbyś teraz dwóm użytkownikom stworzyć coś w rodzaju ich własnych serwerów wirtualnych z ich własnymi domenami, jeden osobny dla swojego webmaila i na przykład jedno przekierowania do bramki IRC. Najpierw musisz się upewnić, że wszystkie domeny wskazują poprawnie na Twój komputer. Niech to będą przykładowo: linuxstorm.org www.linuxstorm.org poczta.linuxstorm.org franek.linuxstorm.org kunegunda.linuxstorm.org bramka.linuxstorm.org - główna domena - główna strona www serwera - webmail (poczta przez www) - strona użytkownika 'franek' - strona użytkownika 'kunegunda' - przekierowanie do bramki IRC Teraz na końcu pliku httpd.conf musisz dopisać ustawienia dla tych domen. strona 18

Pierwszym wpisem powinna być główna nazwa serwera: NameVirtualHost linuxstorm.org I teraz ustawienia dla wszystkich wirtualnych serwerów... Najpierw główny: <VirtualHost linuxstorm.org> ServerAdmin raven@linuxstorm.org DocumentRoot /usr/local/apache/htdocs ServerName linuxstorm.org ErrorLog /usr/local/apache/logs/error_log CustomLog /usr/local/apache/logs/access_log combined </VirtualHost> Pierwsza linia (<VirtualHost linuxstorm.org>) oznacza adres, jaki w tym miejscu chcemy ustawić, więc w tym przypadku 'linuxstorm.org'. Można też podobnie wprowadzić ustawienia globalne, podając znak '*' zamiast adresu, co oznacza wszystkie kombinacje. Druga linia (DocumentRoot /usr/local/apache/htdocs) podaje ścieżkę do katalogu, w którym znajdują się pliki poblikowane przez ten wirtualny serwer. W tym przypadku jest to katalog główny (root) serwera, który został wcześniej zdefiniowany w httpd.conf. Trzecia linia (ServerAdmin raven@linuxstorm.org) zawiera informacje o administratorze danego serwera. Będzie to wyświetlane między innymi na stronach indeksu Apache, itp. Można tutaj wpisać cokolwiek, lub w ogóle nie podawać tej linii. Czwarta linia (ServerName linuxstorm.org) oznacza nazwę wirtualnego serwera. Podobnie jak z administratorem, będzie wyświetlana między innymi na stronach indeksu... Piąta i szósta linia przechowuje ścieżki do plików, do których będą zapisywane logi z tego wirtualnego serwera. Można w ten sposób łatwo monitorować ruch na każdym wirtualnym serwerze. Jeśli ścieżki dla logów nie zostaną zdefiniowane to wszystkie będą zapisywane do standardowych logów serwera zdefiniowanych wyżej w httpd.conf. Ostatnia linia zamyka blok ustawień dla tego wirtualnego serwera. Następne serwery... <VirtualHost www.linuxstorm.org> ServerAdmin raven@linuxstorm.org DocumentRoot /usr/local/apache/htdocs ServerName linuxstorm.org </VirtualHost> strona 19

<VirtualHost poczta.linuxstorm.org> ServerAdmin admin@linuxstorm.org DocumentRoot /usr/local/apache/htdocs/poczta ServerName poczta.linuxstorm.org </VirtualHost> <VirtualHost franek.linuxstorm.org> ServerAdmin franek@linuxstorm.org DocumentRoot /home/franek/www ServerName franek.linuxstorm.org ErrorLog /usr/local/apache/logs/franek-error_log CustomLog /usr/local/apache/logs/franek-access_log combined </VirtualHost> <VirtualHost kunegunda.linuxstorm.org> ServerAdmin kunegunda@gmail.com DocumentRoot /home/kunegunda/www ServerName linuxstorm.org </VirtualHost> I tutaj praktycznie kończą się ustawienia tych wirtualnych serwerów. Został jeszcze tylko 'bramka.linuxstorm.org', ale ten adres ma przekierowywać na inny, więc będzie wyglądał trochę inaczej. Przekierowanie na inne strony www robi się przez 'Redirect', np.: <VirtualHost bramka.linuxstorm.org> Redirect / http://www.linuxstorm.org/irc/ </VirtualHost> Dzięki takiemu przekierowanie, każdy po wpisaniu w przeglądarce adresu http://bramka.linuxstorm.org/ będzie automatycznie przekierowywany przez nasz serwer httpd na stronę pod adresem http://www.linuxstorm.org/irc/. 5.3.CGI-BIN strona 20

Innym przydatnym i często używanym rozszerzeniem Apache jest CGI-BIN. Dzięki CGI możemy pisać strony www w dowolnych językach programowania. W efekcie takie skrypty będą wykonywane przez system po stronie serwera, a wynik ich działania będzie wysyłany do klienta jako kod HTML (podobnie do np. PHP). Jedyną wadą CGI jest dosyć duże obciążenie systemu. Bardzo złożone skrypty uruchamiane wiele razy w krótkim czasie mogą dosyć mocno obciążać procesor serwera. Ścieżkę do katalogu z plikami CGI definiuje się w pliku httpd.conf. Standardowo jest to / usr/local/apache/cgi-bin. Jeśli w httpd.conf jest też wpisany alias dla CGI to możemy się do nich odwoływać przez np. wejście na adres http://moja.domena.pl/cgi-bin/. Dodatkowo w łatwy sposób można pozwolić na korzystanie z CGI każdemu użytkownikowi serwera. Wystarczy do ustawień katalogów użytkowników dodać opcję +ExecCGI, np.: <Directory /home/*/www>... AllowOverride FileInfo AuthConfig Limit Options MultiViews Indexes SymLinksIfOwnerMatch +ExecCGI </Directory> Dzięki temu każdy użytkownik będzie mógł używać skryptów CGI w swoim katalogu www. Skrypty CGI zawsze muszą być zapisane jako plik.cgi lub plik.pl (w przypadku perla) i mieć nadane prawa wykonywania przez serwer www. Aby skrypty działały poprawienia i wyświetlały informacje w przeglądarce, muszą powiadomić o typie przekazywanych danych. Dlatego każdy skrypt CGI przed wykonaniem jakichkolwiek instrukcji musi wyświetlić linię: "Content-type: text/plain\n\n Pozostałe instrukcje są już dowolne, a do wyświetlania może służyć zwykły kod HTML. Przykłady różnych języków programowania: --- skrypt w języku Perl (perl.pl) --- #!/usr/bin/perl print "Content-type: text/plain\n\n"; print CGI w Perlu\n ; --- skrypt w BASHu (bash.cgi) --- #!/bin/bash echo Content-type: text/plain echo CGI w BASHu strona 21

--- skrypt w C (c.cgi) --- /* w tym przyadku najpierw należy skompilować program. */ /* np.: gcc plik.c -o c.cgi */ #include <stdio.h> int main() { printf( Content-type: text/plain\n\n ); printf( CGI w C\n ); return 0; } 5.4. htaccess Apache posiada również ciekawą opcję zabezpieczenia publikowanych plików w wybranych katalogach. Polega to ma autoryzacji za pomocą systemu htaccess. Wystarczy w katalogu chronionym utworzyć kilka plików i ustawić użytkowników z hasłami, którzy będą mieli prawo do przeglądania zawartości tego katalogu. Pierwszą rzeczą jaką trzeba wykonać jest utworzenie pliku z hasłami. Służy do tego program `htpasswd`. Składnia dla tego programu wygląda tak: htpasswd -c /ścieżka/do/chronionego/katalogu/.htpasswd nazwa_użytkownika Na przykład, jeśli chcemy zabezpieczyć katalog 'zdjecia' w głównym katalogu Apache i dać dostęp użytkownikowi 'zygfryd', możemy wpisać w ten sposób: /usr/local/apache/bin/htpasswd -c /usr/local/apache/htdocs/zdjecia/.htpasswd zygfryd Po wpisaniu tego polecenia zobaczmy: Adding password for zygfryd New password: Re-type new password: Wpisujemy dwa razy to samo hasło i plik z zaszyfrowanym hasłem powinien już być utworzony. strona 22

Parametr '-c' oznacza utworzenie nowego pliku z hasłami. Jeśli taki plik już istnieje, a my chcemy tylko dodać następnego użytkownika to parametr '-c' pomijamy. Teraz żeby to wszystko działało trzeba jeszcze w tym samym katalogu utworzyć plik.htaccess, który może zawierać np. coś takiego: AuthUserFile /usr/local/apache/htdocs/zdjecia/.htpasswd AuthName Private AuthType Basic require valid-user Pierwsza linia oznacza ścieżkę do pliku z hasłami, który był tworzony wcześniej programem htpasswd. Drugą linia definiuje nazwę zabezpieczanego katalogu (będzie wyświetlana w oknie logowania). Następna linia oznacza sposób autentykacji użytkowników i w tym przykładzie będzie to podstawowy. Ostatnia linia jest odpowiedzialna za informację o tym, kto ma mieć dostęp do kataogu. Opcja 'valid-user' wymusza podanie użytkownika, który istnieje z pliku.htpasswd. Można tutaj zamiast 'vaild-user' podać również nazwy użytkowników oddzielone spacją. Jest też jeszcze jedna opcja, pozwalająca tworzyć grupy użytkowinków. W pliku.htaccess dodaje się ją jako: AuthGroupFile /ścieżka/do/pliku/z/grupami Plik z grupami ma bardzo prostą składnię. Wygląda tak: nazwa_grupy: użytkownik1 użytkownik2 użytkownik3 Na przykład: znajomi: franek zygfryd kunegunda Liczba użytkowników może być dowolna. Dzięki grupom możemy w łatwy sposób zarządzać użytkownikami, którzy mają mieć możliwość przeglądania zabezpieczonych plików. Ważne jest też odpowiednie 'ukrycie' plików z hasłami. Dobrym pomysłem będzie dodawanie im kropki na początku nazwy pliku (plik będzie wtedy ukryty i nie będzie wyświetlany w indeksie) i nadanie im praw odczytu tylko dla serwera Apache i roota, np.: chown root:nogroup /usr/local/apache/htdocs/zdjecia/.htpasswd chmod 640 /usr/local/apache/htdocs/zdjecia/.htpasswd strona 23