Apache – otwarty serwer HTTP dostępny dla wielu systemów operacyjnych (m.in. UNIX, GNU/Linux, BSD, OS X, Microsoft Windows). Apache jest najszerzej stosowanym serwerem HTTP w Internecie. W lutym 2014 jego udział wśród serwerów wynosił 38%. W połączeniu z interpreterem języka skryptowego PHP i bazą danych MySQL, Apache stanowi jedno z najczęściej spotykanych środowisk w firmach oferujących miejsce na serwerach sieciowych. [Wikipedia...]

Na naszym serwerze zainstalujemy i skonfigurujemy serwer HTTP Apache. W obecnych czasach trudno sobie wyobrazić witrynę internetową, która nie korzysta z bazy danych Z tego powodu zainstalujemy razem z serwerem HTTP także system zarządzania bazami danych MySQL oraz jeden z popularniejszych języków skryptowych PHP w wersji 5.

 

Instalacja wyżej wymienionych komponentów w Debianie jest bardzo prosta i sprowadza się do wydania kilku poleceń. Pierwszym elementem, który zainstalujemy będzie MySQL. Z linii poleceń należy wydać polecenie:

apt-get install mysql-server mysql-client

W trakcie instalacji system poprosi o podanie nowego hasła dostępowego do bazy MySQL dla użytkownika root. UWAGA: może to być to samo hasło, które jest przypisane do użytkownika root, ale nie musi. Dobrym zwyczajem i wymogiem bezpieczeństwa jest stosowanie różnych haseł do różnych usług. Kolejnym krokiem będzie zainstalowanie samego serwera Apache. Wydajemy polecenie:

apt-get install apache2

W tym momencie dysponujemy w pełni sprawnym i skonfigurowanym serwerem HTTP. W celu sprawdzenia prawidłowego działania zainstalowanej usługi uruchamiamy maszynę wirtualną z systemem Windows 7 i sprawdzamy w przeglądarce, czy pojawi się strona naszego serwera. W efekcie powinniśmy otrzymać stronę z nowo zainstalowanego serwera:

 

W przypadku, gdy wszystko poszło zgodnie z oczekiwaniami możemy przejść do dalszej części instalacji komponentów. Jeżeli natomiast nie udało się wyświetlić strony internetowej musimy odnaleźć przyczynę niepowodzenia przed przystąpieniem do dalszych czynności. Kolejnym elementem będzie doinstalowanie interpretera PHP. W tym celu wydajemy polecenie:

apt-get install php5 libapache2-mod-php5

Po chwili powinniśmy dysponować zainstalowanym PHP5 oraz modułem umożliwiającym jego wykorzystanie w Apache. Należy pamiętać o restarcie serwera HTTP, żeby nowo zainstalowane komponenty mogły zacząć normalną pracę. Tym celu wydajemy polecenie:

/etc/init.d/apache2 restart

W tym momencie musimy zlokalizować domyślne położenie głównej strony internetowej naszego serwera. Nie dokonywaliśmy jeszcze żadnych zmian w konfiguracji serwera Apache, więc główny katalog stron internetowych znajduje się w:

/var/www

W tym katalogu znajduje się obecnie plik index.html, który jest domyślnym plikiem wysyłanym do przeglądarki z naszego serwera. W celu sprawdzenia prawidłowego funkcjonowania PHP zamienimy plik index.html na index.php a jako jego zawartość wpiszemy:

<?php

phpinfo();

?>

W efekcie powinniśmy uzyskać stronę internetową z wyszczególnionymi parametrami konfiguracyjnymi serwera Apache oraz PHP.

 

W celu łatwej konfiguracji bazy MySQL zainstalujemy narzędzie phpMyAdmin. Wydajemy polecenie:

apt-get install phpmyadmin

Podczas instalacji pakietu należy wskazać odpowiedni serwer, który ma zostać skonfigurowany do pracy z phpMyAdmin. Wybieramy oczywiście serwer Apache.

 

Jeżeli razem z phpMyAdminem automatycznie zainstalowały się dodatkowe komponenty należy zrestartować serwer Apache. Po tym kroku powinniśmy mieć dostęp do phpMyAdmina. W przeglądarce wpisujemy:

192.168.14.1/phpmyadmin

W efekcie powinna pojawić się strona umożliwiająca zalogowanie do MySQLa.

 

Po wpisaniu nazwy użytkownika i hasła mamy dostęp do konfiguracji bazy danych. Możemy utworzyć nową bazę danych, nowego użytkownika, w ramach bazy danych możemy tworzyć tabele, dodawać nowe rekordy itp. Wykorzystanie bazy danych oraz samego serwera to temat na inny artykuł. My zajmiemy się w tym momencie konfiguracją serwera Apache.

Jak większość usług w systemie Linux, także Apache konfiguruje się poprzez dodawanie odpowiednich wpisów w plikach tekstowych. Wszystkie pliki konfiguracyjne znajdują się w katalogu:

/etc/apache2

Pierwszym plikiem, z którym warto się zapoznać jest ports.conf. Jest to plik konfiguracyjny, w którym definiujemy interfejsy i porty na których nasłuchuje serwer HTTP. Domyślnie serwer HTTP pracuje na porcie 80. Nic jednak nie stoi na przeszkodzie, żeby pracował również na innych portach. Na poniższym zrzucie przedstawiono fragment pliku konfiguracyjnego ports.conf

 

Jak widać na powyższym zrzucie serwer Apache nasłuchuje na porcie 80. Dodatkowo ustawiono warunkowy nasłuch na porcie 433. Jest on uzależniony od tego, czy Apache ma uruchomiony moduł ssl. W analogiczny sposób można ustawić nasłuch na innych niezbędnych portach. Często stosuje się nasłuch na innych portach do przekierowania ruchu sieciowego z konkretnych adresów IP klientów, lub do konfiguracji serwera PROXY. Przykładowo wpisanie dodatkowej linii:

Listen 8001

spowoduje, że serwer będzie nasłuchiwał również na porcie 8001. Wpisanie zatem w przeglądarce adresu strony 192.168.14.1:8001 powinno spowodować wyświetlenie strony internetowej. Będzie to ta sama strona domyślna serwera, ponieważ nie skonfigurowaliśmy jeszcze serwerów wirtualnych. Apache umożliwia konfigurację wielu serwerów wirtualnych i wyświetlanie zawartości stron w zależności od podanej nazwy domenowej. Konfiguracja domyślnego serwera znajduje się w pliku:

/etc/apache2/sites-available/default

Zrzut typowego pliku default przedstawiono poniżej.

 

Jak widać na zrzucie konfiguracja zawiera informacje o katalogu macierzystym danej strony internetowej (typowo /var/www), porcie, na którym dana strona jest dostępna (80), oraz z jakich adresów strona będzie dostępna (typowo: allow from all).

W celu sprawdzenia typowych parametrów konfiguracyjnych zmienimy domyślną lokalizację plików strony internetowej. Pierwszym elementem, który należy wykonać to utworzenie nowego katalogu, w którym umieścimy pliki strony. Przykładową stronę umieścimy w katalogu domowym użytkownika root.

mkdir /root/www_test

po utworzeniu katalogu zapisujemy w nim przykładową stronę internetową np.

echo „<h1>Moja strona testowa</h1>” > /root/www_test/index.html

następnie zmienimy lokalizację strony w pliku default.conf, zamieniając wpis:

DocumentRoot /var/www

na

DocumentRoot /root/www_test

po zapisaniu pliku wykonujemy restart serwera HTTP i sprawdzamy efekt w przeglądarce Windows 7. W efekcie otrzymamy:

Prawie się udało... „zapomnieliśmy” jeszcze zmienić wpis dotyczący uprawnień do nowego katalogu. W pliku default należy zamienić jeszcze uprawnienia ustawione dla /var/www na uprawnienia dla /var/www_test:

<Directory /var/www>

zamieniamy na

<Directory /root/www_test>

W tym momencie domyślna strona serwera będzie pobierana z katalogu:

/var/www_test

Kolejnym krokiem będzie skonfigurowanie dodatkowych serwerów wirtualnych. W tym celu utworzymy kolejny katalog dla strony internetowej:

mkdir /var/www_inny_port

a w nim plik index.html

echo „Strona na porcie 8001” > /var/www_inny_port/index.html

Dysponując przygotowanymi plikami nowej strony internetowej możemy przygotować plik konfiguracyjny. W katalogu /etc/apache2/sites-available tworzymy nowy plik konfiguracyjny. Jego nazwa nie jest istotna, ale dobrą praktyką jest takie nazywanie plików konfiguracyjnych, żeby wiadomo było co zawierają. My przygotujemy konfigurację dla strony nasłuchującej na porcie 8001, dlatego plik proponuję nazwać port8001. W pliku umieszczamy, podstawowe parametry konfiguracyjne:

<VirtualHost *:8001>

DocumentRoot /var/www_inny_port

<Directory „/var/www_inny_port”>

Allow from all

</Directory>

</VirtualHost>

Po zapisaniu konfiguracji należy poinformować Apache, że ma obsługiwać dodatkową stronę internetową. Dokonamy tego poprzez dodanie linku symbolicznego do utworzonego właśnie pliku. Przechodzimy do katalogu z naszym plikiem i wykonujemy polecenie:

ln -s port8001 /etc/apache2/sites-enabled/port8001

teraz restartujemy serwer HTTP i sprawdzamy efekt.

 

Jak widać wczytała się strona przygotowana jako dodatkowy serwer wirtualny. W ten sam sposób można przygotować kolejne serwery wirtualne nasłuchujące na różnych portach, lub dla portu 80 z różnymi nazwami domenowymi. W przypadku różnych portów należy pamiętać by włączyć nasłuch w pliku ports.conf. Nazwę obsługiwanej domeny wpisujemy podając opcję:

ServerName nazwa.obsługiwanej.subdomeny

Ze względu na brak skonfigurowanego serwera DNS, w chwili obecnej nie można sprawdzić praktycznie tego parametru.

Zadanie:

Wykonaj konfigurację serwera Apache wyświetlającego strony na portach:

  1. 8002 – Komunikat „Brak dostępu do sieci Internet – Przepraszamy”
  2. 8003 – Komunikat „Brak wpłaty za dostęp do sieci Internet”
  3. 8004 – Komunikat „Wybrana witryna została zablokowana”