Serwer www - Apache - część 1

Wprowadzenie teoretyczne do lekcji nr 9

Następnym serwerem jaki sobie uruchomimy jest serwer HTTP. Jest to główny i najważniejszy serwer jeżeli chodzi o stos aplikacji internetowych – Serwer HTTP + Interpreter PHP, Serwer bazodanowy oraz Serwer FTP. My przy stawianiu serwera HTTP zwanego też serwerem WWW, posłużymy się otwartym serwerem WWW zwanym też Apache. Jest jednym z najpopularniejszych serwerów na rynku. Innymi takimi serwerami są nginx oraz IIS od Microsoftu. Do serwera Apache doinstalujemy sobie także interpreter PHP. Protokół http o którym mowa służy do przesyłania dokumentów hipertekstowych przez Internet i jest jednym z prostszych protokołów opartym na zapytaniach i odpowiedziach. Dlatego też jest tak chętnie wykorzystywany przez początkujących programistów podczas nauki networkingu. Działa on domyślnie na porcie TCP o numerze 80 i nie wspiera szyfrowania – to jest realizowane za pomocą protokołu SSL/TLS. My jednakże nie mamy publicznej domeny, nie będziemy też się bawić we własnoręcznie tworzone certyfikaty. Wspominałem już o zapytaniach i odpowiedziach – te są opatrzone w różne komendy np. GET przy zapytaniu o zasób. Odpowiedzi dodatkowe są wyposażone w kody sygnalizujące różne komunikaty. Np. 200 oznacza że zasób został znaleziony, 403, że serwer nie może odesłać zasobu bo mu konfiguracja nie pozwala, a 404 oznacza, że zasób nie został odnaleziony. O samym HTTP mówię tak mało ponieważ ten protokół jest szerzej omawiany na lekcjach "Sieci komputerowych", po za tym myślę, że każdy ma jakąś wiedzę dotyczącą jego działania.

I. Instalacja i konfiguracja serwera Apache.

1. Instalacja serwera Apache.
Pakiet do instalacji serwera Apache nazywa się apache2 i podobnie jak przy Sambie nie powinienem już pokazywać instalacji tego serwera Apache. Warto wykombinować sobie samemu jak go zainstalować. Oczywiście przed przystąpieniem do instalacji czegokolwiek zalecam zaktualizowanie repozytoriów oraz pakietów.

Jeśli jednak ktoś ma jeszcze wątpliwości w jaki sposób zainstalować nasz serwer Apache, to podaję polecenie:
$ sudo apt install apache2 -y

Po poprawnej instalacji możemy sprawdzić status naszego serwera Apache wpisując komendę:
$ sudo systemctl status apache2
Poprawnie zainstalowany serwer powinien być aktywny. Zauważyć można ostrzeżenie, które informuje nas, że Apache nie wie jaka jest pełna nazwa domenowa serwera. My sobie później ją dodamy do konfiguracji, aby to ostrzeżenie znikło.

2. Konfiguracja serwera Apache.
Konfigurację naszego serwera przeprowadzimy na dwa sposoby. Najpierw będziemy pracować na domyślnej stronie serwera Apache, a w drugiej części tego dokumentu wdrożymy już w miarę "profesjonalne" rozwiązanie. Pliki konfiguracyjne serwera Apache znajdują się w katalogu /etc/apache2. Do tych, które umożliwiają nam podstawową konfigurację należą:
- /etc/apache2/apache2.conf
- /etc/apache2/ports.conf
- /etc/apache2/sites-available/000-default.conf

Możemy sprawdzić także numer wersji serwera Apache, a także dostępne aplikacje (profile) w ufw (zapora w Ubuntu) oraz informacje o nich. Zastosujemy odpowiednio polecenia:
$ sudo apache2 -version
$ sudo ufw app list
$ sudo ufw app info 'Apache Full'

Skoro nasz serwer działa, to możemy sprawdzić czy jakaś strona otwiera sie w przeglądarce. Wpisujemy w pasku adresu klienta IP serwera i powinniśmy uzyskać powyższy efekt. Widzimy również gdzie znajduje się nasz plik index.html

Edytujemy go poleceniem:
$ sudo nano /var/www/html/index.html
i dopiszemy w nim np. Elektronik - klasa 3. Zapisujemy zmiany i wracamy na klienta.

Następnie wracamy na klienta, odświeżamy naszą stronę i zmiany powinny być widoczne.

II. Konfiguracja serwera www.

1. Konfiguracja strony domyślnej na porcie numer 80.
Pierwszą konfigurację serwera www rozpoczniemy od wykorzystania strony domyślnej serwera apache. Aby to zrobić musimy wprowadzić zmiany w dwóch katalogach. Pierwszy z nich to /var/www/html, a drugi to /etc/apache2.

Konfiguracja pliku index.html

Zaczniemy więc od zmian w katalogu /var/www/html i najpierw usuniemy plik index.html i stworzymy sobie swój własny. Przejdziemy więc do katalogu /var/www/html i użyjemy do tego poleceń:
$ sudo rm index.html
$ sudo nano index.html
Następnie wprowadzimy do niego naszą zawartość.

Modyfikacja pliku index.html

Można powiedzieć, że stworzymy sobie zupełnie "nową stronę www", która będzie zawierała krótkie informacje o naszym systemie, przedmiocie, numerze portu itp. Zawartość pliku w naszym przypadku będzie taka jak powyżej.

Działania strony z poziomu klienta

Po zapisaniu zmian w pliku sprawdzamy naszą stronę z poziomu klienta i jak widzimy wszystko działa.

2. Konfiguracja strony na innym porcie (np. 7070).
Jak powszechnie wiadomo domyślnie protokół http pracuje na porcie nr 80 i żeby wyświetlić zawartość strony nie musimy go wpisywać. Teraz spórbujemy uruchomić strone na porcie nr 7070. Aby to zrobić, musimy dokonać zmian w dwóch plikach.

Zawartość katalogu /etc/apache2

Przejdziemy zatem do katalogu /etc/apache2, wylistujemy sobie jego zawartość i zmodyfikujemy odpowiednie pliki.
$ cd /etc/apache2
$ ls -l
$ ls -l /etc/apache2/sites-available
Interesujące nas pliki zaznaczyłem kolorem zielonym.

Modyfikacja pliku 000-default-conf

Edytujemy najpierw plik 000-default-conf poleceniem:
$ sudo nano /etc/apache2/sites-available/000-default-conf
i zmieniamy w nim numer portu z 80 na 7070. Oczywiście po wprowadzeniu zmian zapisujemy je.

Konfiguracja pliku ports.conf

Następnie edytujemy drugi plik ports.conf poleceniem:
$ sudo nano /etc/apache2/ports.conf
i także zmieniamy w nim numer portu z 80 na 7070. Podobnie jak wcześniej zapisujemy zmiany.

Restart serwera apache2

Oczywiście musimy jeszcze zrestartować serwer apache2 i sprawdzić jego status. Polecenia oczywiście powinny być już znane, ale dla przypomnienia wpisujemy:
$ sudo systemctl restart apache2
$ sudo systemctl status apache2
Jak widać - działa.

Zmiana w pliku index.html

Zmieniamy jeszcze w pliku /var/www/html/index.html wpis na wyświetlenie właściwego portu (oczywiście to jest tylko "kosmetyka")

Działania strony z poziomu klienta

Odświeżamy stronę na kliencie i oczywiście... nie działa. Nie może zadziałać, ponieważ numer portu jest nadal domyślny (80).

Działania strony z poziomu klienta

Dodajemy zatem po adresie IP numer portu 192.168.10.10:7070 i odświeżamy ponownie. Teraz jest ok.

III. Zmiana katalogu domyślnego strony oraz pliku startowego.

Konfiguracja pliku index.html w katalogu /www

Czasami ktoś bardzo chce umieścić sobie stronę w innym miejscu niż katalog domyślny. Najpierw trzeba stworzyć odpowiedni katalog - u nas będzie to /www. Stosujemy znane polecenie:
$ sudo mkdir /www
Następnie skopiujemy sobie do niego nasz plik index.html poleceniem:
$ sudo cp /var/www/html/index.html /www/index.html
Przechodzimy do katalogu /www i edytujemy nasz plik znanym już poleceniem:
$ sudo nano index.html
Na koniec dodamy wpisy informacyjne dotyczące katalogu. Przy okazji podamy jeszcze numer innego portu, który też sobie zmienimy.

Zmiana numeru portu oraz katalogu

Teraz jeszcze pliki konfiguracyjne. Najpierw edytujemy plik 000-default-conf znanym już poleceniem:
$ sudo nano /etc/apache2/sites-available/000-default-conf
Zmieniamy w nim numer portu oraz katalog strony. Oczywiście jak zawsze zapisujemy zmiany.

Zmiana katalogu

Katalog ze stroną zmieniamy także w pliku apache2.conf, który możemy edytować poleceniem:
$ sudo nano /etc/apache2/apache2.conf
Pamiętajmy o zapisaniu zmian w pliku.

Zmiana numeru portu

I na koniec zmiana jeszcze numeru portu w pliku ports.conf. Wpisujemy więc:
$ sudo nano /etc/apache2/ports.conf

Restart serwera apache2

Teraz restartujemy nasz serwer www, sprawdzamy jego status i widzimy, że wszystko działa.

Działanie strony z poziomu klienta

Ponownie idziemy na klienta, wpisujemy w przeglądarce internetowej adres IP, numer portu i powinniśmy uzyskać powyższy efekt.

Zawartość katalogu /etc/apache2/mods-available

Ostatnią czynnością jaką wykonamy w tej części konfiguracji serwera www jest zmiana domyślnego pliku startowego strony, a właściwie rozszerzenie listy plików, z których strona może być uruchamiana. Opcja taka znajduje się w pliku /etc/apache2/mods-available/dir.conf. Najpierw przejdziemy do tego katalogu i wyświetlimy jego zawartość stosując polecenia:
$ cd /etc/apache2/mods-available
$ ls -l | less

Edycja pliku /etc/apache2/mods-available/dir.conf

A następnie edytujemy zawartość pliku dir.conf poleceniem:
$ sudo nano dir.conf
Dokonamy w nim małej zmiany, dopisując nazwę pliku strona.html. Oczywiście zapisujemy zmiany i zamykamy plik.

Edycja pliku strona.html

Przechodzimy teraz do folderu /www i najpierw zmieniamy nazwę pliku index.html na strona.html, potem edytujemy go i dodajemy jakiś wpis. Zastosujemy następujące polecenia:
$ cd /www
$ ls -l
$ sudo mv index.html strona.html
$ ls -l
$ sudo nano strona.html
Dodajemy jeszcze wpis: "Witryna uruchamiana z pliku strona.html", zapisujemy zmiany i zamykamy plik. Oczywiście musimy jeszcze zrestartować serwer apache.

Działanie strony z poziomu klienta

Na koniec wracamy na klienta, wpisujemy w przeglądarce internetowej adres IP, numer portu i powinniśmy uzyskać powyższy efekt.