Elementy konfiguracji Apache2
Uwagi wstępne
Wszystkie ćwiczenia na tym laboratorium zostały przygotowane na platformie Debian/GNU Linux
, wersja „etch”.
Jest ona zdaniem wielu jedną z najlepszych developerskich platform linuksowych.
Jeżeli chodzi o pracę z Apache
dostarcza ona oprogramowania serwera w wersji 1.3 i 2.4, a także szeregu pakietów rozszerzających funkcjonalność serwera i wspomagających pracę z nim, w tym OpenSSL
i PHP
.
Jako przeglądarki na laboratorium należy używać wyłącznie Mozilla Firefox. Udostępnia ona szereg niezwykle przydatnych rozszerzeń.
W ramach tego laboratorium wykorzystywane mogą być między innymi (opis na http://update.mozilla.org):
Rzecz jasna wszystkie ćwiczenia można wykonywać na dowolnej platformie unixowej,
z tym jednak, że nie wszystkie (np. nie wszystkie dystrybucje GNU/Linuxa
) dostarczają w.w. narzędzi od razu w dystrybucji.
Plan laboratorium
W ramach laboratorium należy poznać i swoje środowisko pracy, a następnie wykonywać ćwiczenia, posługując się podanymi wskazówkami.
Środowisko pracy
Katalogi
- W czasie ćwiczeń przy rozpakowywaniu archiwum zostanie założony w katalogu domowym katalog aph
- W tym katalogu należy przechowywać wszystkie pliki z laboratorium.
Edycja
Do wyboru jest kilka edytorów:
- Osoby znające
GNU Emacs
mogą w nim pracować. - Polecanym edytorem jest
BlueFish
(UWAGA: należy się upewnić, że domyślne kodowanie plików to ISO-8859-2 (Edycja/Ustawienia/Pliki, Dokument/Kodowanie_Znaków). - Można też ew. pracować w prostym edytorze tekstowym konsolowym, np.
vi
,nano
,mcedit
,joe
. - W 1. oknie należy uruchomić edytor, będzie przydatny w edycji plików konfiguracyjnych.
- W 2. oknie należy uruchamiać skrypty związane z zarządzaniem serwerem.
Poza w.w. należy otworzyć dodatkowe okno terminala, z katalogiem bieżącym ustawionym na ~/aph. Będzie ono pomocne przy monitorowaniu pracy serwera i innych.
Przeglądarka
Należy wykorzystywać Mozilla Firefox
, będzie ona używana do bieżącego obserwowania pracy serwera.
Tematy
W czasie ćwiczeń realizowanych jest kilka tematów.
W zależności od swoich potrzeb (tylko używanie, używanie i administrowanie) można się zdecydować na pominięcie/wybranie niektórych.
W czasie ćwiczeń należy wykorzystywać podane szablony plików konfiguracyjnych Apache
.
Ćwiczenia podstawowe:
- Stworzenie własnej strony w ramach istniejącej instalacji
Apache
. - Zarządzanie dostępem do stron udostępnianych przez
Apache
.
Ćwiczenia zaawansowane:
- Skonfigurowanie własnej instancji
Apache
w przestrzeni użytkownika. - Dodatkowe moduły
Apache
.
Ćwiczenia
Ćwiczenie należy wykonywać na serwerze borg
.
Własne WWW (podstawowe)
Założenie strony
Tzw. „strona domowa” użytkownika udostępniana jako serwer/~konto
jest podkatalogiem w katalogu domowym użytkownika.
Ten podkatalog (dyrektywa UserDir) domyślnie nazywa się public_html
.
Po podaniu adresu strony wyświetlany jest dokument indeksujący w w.w. katalogu, którego domyślna nazwa to najczęściej index.html
(dyrektywa DirectoryIndex).
Zawartość tego pliku jest wyświetlana przez serwer WWW. Serwer pracuje jako proces w systemie. Ma uprawnienia, związane z własnym użytkownikiem systemowym. Aby mógł mieć dostęp do plików w katalogu domowym użytkowania, katalog ten (wraz z zawartością) musi mieć odpowiednie prawa dostępu.
O ile wcześniej była zakładana strona, to najlepiej zachować ją pod nową nazwą, np.:
mv ~/public_html ~/public_html-old
W celu założenia swojej strony domowej należy wykonać polecenia:
cd ; mkdir public_html echo "<html><head><title>Strona $USER</title></head><body> <p>Moja strona</p></body></html>" > public_html/index.html chmod o+x ~ ; chmod -R o+rx ~/public_html
Testowanie
O ile wszystko zostało wykonane poprawnie, podanie w przeglądarce adresu borg.kis.agh.edu.pl/~user
powinno wyświetlić stworzony powyżej plik HTML.
Użycie PHP
O ile serwer na którym założona jest strona udostępnia PHP
(tak jak borg) można przetestować jego obsługę.
Proszę zmodyfikować powyższy plik następująco:
<html><head> <title>Strona $USER</title> </head><body> <p>Moja strona</p> <p>To jest <a href="test.php">test PHP</a></p> </body></html>
A następnie założyć w.w. plik:
cd ~/public_html echo "<?php phpinfo(); ?>" > test.php chmod a+r test.php
Nagłówki HTTP
Można śledzić transmisję HTTP przy pomocy rozszerzenia Firefoxa
o nazwie LiveHTTPHeaders
.
W tym celu należy uruchomić z menu Tools/Live HTTP headers
(pl. narzędzia), pojawi się nowe okno, następnie w oknie przeglądarki należy podać adres www (np. własnej strony) i obserwować w oknie rozszerzenia opis przebiegu transmisji HTTP.
Zarządzanie dostępem (podstawowe)
- W katalogu
public_html
założyć katalogrestricted
- W nim plik
.htaccess
regulujący dostęp do zawartości, o treści:AuthName "Dostep Zastrzezony!" AuthType Basic AuthUserFile /home/tu-wpisac-sciezke/moj_plik_z_haslami require valid-user
- Założyć przez
htpasswd
w.w. plik z hasłami, z jednym kontem, np.:htpasswd -c moj_plik_z_haslami nowekonto
- W pliku
.htaccess
należy wpisać pełną ścieżkę dostępu do powyższego pliku, t.j.moj_plik_z_haslami
. - W w.w. katalogu założyć prosty dokument indeksujący, np. kopiując poprzedni
index.html
i zmieniając tytuł strony. - Sprawdzić prawa dostępu do plików i dokumentu (a+rx).
W przypadku konfigurowania własnej instancji Apache
założyć katalogi o ograniczonym dostępie dla różnych list użytkowników. (oglądnąć przykład katalogu restricted
), uwaga, do działania w danym katalogu potrzebny jest odpowiedni wpis w dyrektywie directory
Własna instancja Apache (zaawansowane)
Uruchamianie
- Skopiować aph.tar.gz do katalogu domowego na borgu
- Rozpakować archiwum:
cd ; tar xvzf labaph_08-2.tar.gz
- Przejść do katalogu
~/aph
- Zmodyfikować plik konfiguracyjny
~/aph/etc/apache2.conf
, wstawiając własny katalog domowy i inne parametry (użytkownika, grupę itp., to wymaga nieco pomysłowości i oparcia się na dostarczonym szablonie, proszę szukać słów kluczowych FIXME). Powinno wystarczyć dopisanie przed odpowiednimi ścieżkami, ścieżki dostępu doaph
w swoim katalogu domowym, np.:/home/staff/kk/aph/
- Zmodyfikować plik konfiguracyjny wirtualnego hosta
~/aph/etc/sites-enabled/default
, wstawiając własny katalog domowy w miejsce FIXME. - Istotne jest podanie: numeru portu
(1080+N)
(numery będą przydzielone na zajęciach!), w plikuports.conf
- Uruchomić (podaje opis opcji)
/usr/sbin/apache2 -h
- Wypróbować działanie opcji
-V -v -L -l
. - Przetestować konfigurację:
/usr/sbin/apache2 -e debug -d ${HOME}/aph/etc -f ${HOME}/aph/etc/apache2.conf -t
- Uruchomić serwer:
/usr/sbin/apache2 -d ${HOME}/aph/etc -f ${HOME}/aph/etc/apache2.conf
- Sprawdzić działanie w przeglądarce, podając adres
borg.kis.agh.edu.pl:port
gdzieport
jest numerem portu1080+N
- Zmodyfikować plik
~/aph/var/www/index.html
dopisując do niego coś ciekawego, np. swoje imię. Przeładować powyższą stronę. - W oknie przeglądarki proszę otworzyć Apache Manual
- W przypadku zmiany jakiegokolwiek pliku konfiguracyjnego, należy o tym poinformować
Apache2
przez:
kill -HUP `cat ~/aph/var/run/ap*.pid`
- Serwer zatrzymuje się przez:
kill `cat ~/aph/var/run/ap*.pid`
Konfigurowanie
- Zmodyfikować domyślną stronę www własnego serwera.
- Dodać nowy katalog z dokumentami
- Zdefiniować alias do w.w., np. katalog
~/aph/var/www-inny
ialias cos
. - Zmodyfikować komunikaty o błędach serwera, w tym spróbować założyć dla wybranego komunikatu oddzielną stronę z informacja o błędzie.
- Przyglądnąć się nagłówkom HTTP wysyłanym przez serwer (przez plugin w Firefoxie) - jak ograniczyć informacje które wysyła
Apache2
?
Monitorowanie
- Czy w odpowiednich plikach rejestrowych w katalogu
~/aph/var/log
są gromadzone informacje o pracy serwera (tail -f access.log
)? Jeżeli nie, należy odpowiednio zmodyfikować konfigurację. - Pliki oglądać w osobnych okienkach przez
tail -f ~/aph/var/log/access.log ;tail -f ~/aph/var/log/error.log
Uruchamianie PHP
W celu uruchomienia obsługi PHP należy uruchomić:
cd etc/mods-enabled ln -s ../mods-available/php5.load ln -s ../mods-available/php5.conf
- Ponownie uruchomić serwer i przetestować działanie PHP tak jak w ćwiczeniu ze stroną domową (PHP), w razie problemów śledzić komunikaty o błędach serwera.
- Proszę zwrócić uwagę na informacje wyświetlane przez funkcję
phpinfo()
, szczególnie na części związane z Apache! - Domyślnie PHP będzie czytało swoje pliki konfiguracyjne z
/etc
, co jest możliwe jeżeli są odpowiednie prawa dostępu. - Jak zmieniają się nagłówki HTTP wysyłane przez serwer?
Optymalizacja
- Proszę zmodyfikować liczbę uruchamianych instancji serwera (StartServers).
- Wprowadzić własne formaty plików rejestrowych (CustomLog)