1.Przygotowanie maszyny wirtualnej z Ubuntu Server 18.04 * pierwsza karta sieciowa – zmostkowana * druga karta sieciowa – wewnętrzna intnet jeżeli posiadamy, możemy przywrócić odpowiednią migawkę z kartami już skonfigurowanymi 2. Uruchamiamy maszynę i sprawdzamy adres IP na zmostkowanej sieciówce nano /etc/netplan/01-netcf.yaml ustawiamy na pierwszej sieciówce adres pasujący do adresacji w naszej sieci domowej, u mnie to: po ustawieniu odpowiednich adresów zatwierdzamy ustawienia za pomocą netplan apply i sprawdzamy za pomocą ip a, sprawdzamy tez za pomocą polecenia ping czy mamy łączność z internetem. 3. Aktualizujemy zawartość repozytoriów: sudo apt update 4. Instalujemy serwer WWW Apache 2: sudo apt install apache2 Folder gdzie serwer WWW będzie trzymał swoje pliki konfiguracyjne to: /etc/apache2 Dla nas najistotniejsze będą w tym ćwiczeniu: apache2.conf – główny plik konfiguracyjny ports.conf – konfiguracja portów na których działa apache sites-available i sites-enabled – konfiguracja hostów wirtualnych i katalog w którym możemy sprawdzić które z nich są włączone Apache jest najczęściej wykorzystywanym serwerem HTTP w sieci Internet. Na jego koncie jest ponad połowa wszystkich aktywnych stron internetowych, a jego atutami są moc i elastyczność. Apache rozdziela swoje funkcje i komponenty na osobne moduły, które można dostosowywać i konfigurować indywidualnie. Podstawowym modułem opisującym poszczególną stronę lub domenę jest virtual host. Wspomniane moduły pozwalają administratorowi na korzystanie z jednego serwera do obsługi wielu domen lub stron z jednego interfejsu lub IP wykorzystując odpowiedni mechanizm. Jest to bardzo istotne w sytuacji, jeżeli mamy zamiar obsługiwać wiele stron poprzez jeden serwer VPS. Każda konfigurowana domena przekierowuje użytkowników do specjalnego katalogu mieszczącego informacje o stronie, nie informując o tym, że ten sam serwer odpowiada też za inne strony. Domyślnie po zainstalowaniu serwera możemy w przeglądarce odpalić stronę domyślną wpisując adres IP serwera: Główny katalog dla stron WWW to: /var/www/ Katalog w którym przechowywane sa pliki tej strony to: /var/www/html Spróbujmy zmodyfikować naszą domyślną stronę: nano /var/www/html/index.html Ja zmieniłem napis u góry: Wy oczywiście wpiszcie swoje Imię i Nazwisko. 5. Hosty wirtualne. Żeby serwer mógł obsłużyć kilka osobnych witryn, musimy stworzyć i skonfigurować odpowiednie hosty wirtualne. Żeby móc obsłużyć różne hosty wirtualne (czyli więcej niż jedną stronę) muszą się one różnić jedną z poniższych cech: - muszą działać na różnych portach - muszą działać na innym adresie IP - musza mieć inną nazwę domenową Konfiguracja hostów wirtualnych jest przechowywana w: /etc/apache2/sites-available Domyślnie mamy jednego hosta wirtualnego – stronę domyślną, plik z jej konfiguracją to /etc/apache2/sites-available/000-default.conf Jak widzimy w configu – strona działa na wszystkich adresach ustawionych na naszym serwerze Ubuntu, na porcie 80 (punkt 1), mail do osoby zarządzającej stroną to webmaster@localhost a ścieżka z plikami strony to /var/www/html (punkt 2) Cały proces tworzenia kolejnych hostów wirtualnych będzie wyglądał tak: 1. Tworzymy plik z konfiguracją hosta w katalogu /etc/apache2/sites-available 2. Ustawiamy w configu adres IP, domene, port na którym ma działać masz host oraz oczywiście ścieżkę do katalogu w którym będą trzymane pliki strony 3. Tworzymy katalog w którym będzie przechowywana nasza strona – taki sam, jak ustawiliśmy w configu 4. Włączamy naszego hosta poleceniem a2ensite plikzconfigkiem.conf 3.1 Host wirtualny na innym porcie niż 80 a) kopiujemy config strony domyślnej, zapiszmy go pod nazwą port_test.conf cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/port_test.conf b) modyfikujemy plik konfiguracyjny – zmieniamy port i ścieżkę do katalogu strony port – 8080 sciezka – /var/www/port_test/html c) tworzymy katalog dla naszej strony tak jak w pliku konfiguracyjnym, potem tworzymy w nim plik index.html: mkdir -p /var/www/port_test/html nano /var/www/port_test/html/index.html d) musimy w ustawieniach Apacha dodać port na którym ma działać nasz host wirtualny – 8080 nano /etc/apache2/ports.conf e) włączamy naszego hosta poleceniem a2ensite i podajemy nazwe pliku w którym jest konfiguracja naszego hosta: a2ensite port_test.conf f) restartujemy usługę Apache i testujemy działanie naszej strony w przeglądarce: service apache2 restart strona działa poprawnie – w ten oto sposób stworzyliśmy samodzielnie naszego pierwszego hosta wirtualnego na Apachu 3.2 Host wirtualny na innym adresie IP (wtedy port może zostać 80) a) kopiujemy configa z naszego poprzedniego hosta i zapisujemy go pod nazwą ip_test.conf cp /etc/apache2/sites-available/port_test.conf /etc/apache2/sites-available/ip_test.conf b) modyfikujemy go: IP – 192.168.1.222 (oczywiście ustawcie jakies z Waszej puli adresów) port – 80 katalog /var/www/ip_test/html c) tworzymy katalog dla strony, kopiujemy i przerabiamy index.html z poprzedniego hosta: mkdir -p /var/www/ip_test/html cp /var/www/port_test/html/index.html /var/www/ip_test/html/index.html nano /var/www/ip_test/html/index.html d) jako ze witryna ma działać na innym adresie IP musimy ustawić drugi adres IP dla naszej skarty sieciowej: nano /etc/netplan/01-netcf.yaml Zatwierdzany oczywiście przy użyciu netplan apply e) aktywujemy nasza stronę poleceniem a2ensite ip_test.conf i restartujemy Apache f) sprawdzamy czy nasz host wirtualny działa poprawnie: 3.3 Host wirtualny działający po nazwie domenowej Dodamy teraz dwa hosty działające po nazwie domenowej: zsme.local oraz inazwisko.local (oczywiście Wy wpiszcie pierwsza literę imienia i swoje nazwisko) a) kopiujemy config strony domyślnej, zapiszmy go pod nazwą zsme.local.conf oraz inazawisko.local.conf cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/zsme.local.conf cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/inazwisko.local.conf b) zmieniamy configi: zsme.local.conf: IP dowolne, port 80 ServerAdmin admin@zsme.local ServerName zsme.local ServerAlias www. zsme.local DocumentRoot /var/www/zsme.local/html inazwisko.local.conf IP dowolne, port 80 ServerAdmin admin@inazwisko.local ServerName inazwisko.local ServerAlias www.inazwisko.local DocumentRoot /var/www/inazwisko.local/html c) tworzymy katalogi dla naszych hostów, kopiujemy z poprzednich hostów index.html mkdir -p /var/www/zsme.local/html mkdir -p /var/www/inazwisko.local/html cp /var/www/port_test/html/index.html /var/www/zsme.local/html/index.html cp /var/www/port_test/html/index.html /var/www/inazwisko.local/html/index.html Modyfikujemy ich zawartość: oraz: c) włączamy nasze strony i restartujemy Apache: a2ensite zsme.local.conf a2ensite inazwisko.local.conf service apache2 restart d) żeby nasz komputer – gospodarz - z którego testujemy działanie stron umiał się połączyć z naszymi stronami zsme.local i inazwisko.local, musi potrafić zamienić te nazwy domenowe na adres IP serwera obsługującego nasze hosty wirtualne. Potrzebujemy albo serwera DNS ze skonfigurowanymi strefami z tymi domenami – co jest dosyć pracochłonne. Żeby nie męczyć się z tym, użyjemy pliku hosts Plik host w Windows znajduje się w katalogu: C:\Windows\system32\drivers\etc\ Musimy go edytować z uprawnieniami administratora o inaczej nie pozwoli się zapisać po modyfikacji (najlepiej użyć np. Notepad++) Dodamy do niego dwa rekordy łączące nazwy domenowe naszych stron z adresem IP naszego serwera na którym pracuje Apache obsługujący te strony. e) sprawdzamy czy nasz host wirtualny działa poprawnie: i drugi: Uwagi: Jeżeli chcielibyśmy, żeby właścicielem strony był ktoś inny niż root (czyli żeby mógł wrzucać pliki do katalogu strony), musimy oczywiście zmienić właściciela katalogu z daną stroną oraz ustawić mu prawa dostępu do niego, np. ustawię, że właścicielem witryny zsme.local będzie użytkownik stefan (należy sobie utworzyć takie konto): a) zmieniam właściciela katalogu z witryną na stefana oraz ustawiam 775 dla całego katalogu /var/www, żeby mieć pewność, że będzie możliwość odczytu sudo chown -R stefan:stefan /var/www/zsme.local/html sudo chmod -R 755 /var/www b) przelogowuję się na konto stefana i sprawdzam czy może coś wrzucić do katalogu ze stroną Jak widać, stefan może zapisywać w katalogu domowym strony zsme.local