Serwer WWW na Virtual Machine

W tym poradniku przedstawię krok po kroku, jak przygotować własny serwer WWW na wirtualnej maszynie. W tym celu potrzebny będzie program Oracle VM VirtualBox i dystrybucja Ubuntu Serwer. Ja przynajmniej na takiej parze narzędzi działam i sprawdza się ona dobrze. Zanim przejdziemy do konkretów chciałbym zaznaczyć, że w tym artykule nie znajdziesz informacji na temat zabezpieczeń serwera WWW. Zdecydowanie odradzam wykorzystywanie wiedzy tu przedłożonej do konfigurowania serwera WWW mającego obsługiwać strony i aplikacje dostępne w sieci. Serwer ten świetnie natomiast nadaje się do testowania aplikacji w środowisku developerskim.

Konfiguracja VM i instalacja UBUNTU SERWER

Zacznijmy od konfiguracji maszyny wirtualnej. Ja przypisałem jej 4 GB RAMu, 4 rdzenie procesora i 10 GB pamięci na dysku HDD. Jak do tej pory sprawdza się świetnie. Przed instalacją Linuxa trzeba jeszcze w Oracle VM w zakładce Ustawienia/Sieć ustawić podłączona do: Mostkowana karta sieciowa (bridged) na naszej maszynie. Próbowałem konfiguracji z NAT, ale pojawiają się utrudnienia komunikacyjne jeżeli chodzi o serwer Apache2 i jak na razie nie znalazłem rozwiązania. Ze strony https://ubuntu.com/download/server można ściągnąć najnowszy obraz Ubuntu Server. Warto wybrać wersję LTS (Long-Term Support). Po ściągnięciu obrazu montujemy go w wirtualnej maszynie i ją uruchamiamy. Instalacja nie jest skomplikowana i nie wymaga zwrócenia szczególnej uwagi na któryś z jej elementów.

Po uruchomieniu serwera warto wykonać komendy:

sudo apt-get update
sudo apt-get upgrade

w celu zaktualizowania zainstalowanych pakietów.

Instalacja Apache 2 i PHP

Po zaktualizowaniu pakietów instalujemy serwer apache2 i php komendą:

sudo apt-get install apache2 php

Po instalacji tych pakietów należy zastanowić się, czy będziemy chcieli ładować strony na serwer za pomocą ftp? Nie jest to element niezbędny do pracy. Po prostu trzeba się zdecydować, czy pliki będziemy wysyłać z wykorzystaniem przestrzeni współdzielonej przez Oracle VM czy za pomocą FTP. Ja wolę za pomocą ftp i dlatego potrzebuję zainstalować pakiet ftp i zmienić konfigurację apache2.

Pakiet FTP instalujemy za pomocą komendy:

apt-get install vsftpd

Po instalacji trzeba dokonać kilku zmian w pliku /etc/vsftpd.conf:

Usuwamy # na początku linijek zawierających następujący kod:

write_enable=YES
lacal_umask=022
chroot_local_user=YES
utf8_filesystem=YES

oraz dopisujemy następujące linijki kodu:

allow_writeable_chroot=YES
pasv_min_port=40000
pasv_max_port=40100

zapisujemy plik i po wyjściu resetujemy serwer ftp komendą:

sudo systemctl restart vsfpd

Od teraz możemy korzystać z klienta ftp logując się na adres ip serwera i podając login i hasło użytkownika. Ip serwera możemy wyciągnąć komendą ifconfig.

Ponieważ logując się do serwera ftp otrzymujemy dostęp tylko i wyłącznie do katalogu home użytkownika dobrze jest zmienić ustawienia serwera apache2, żeby nie musieć kopiować plików ze stroną na serwerze. Domyślna lokalizacja plików www to /var/www ale można ją zmienić edytując dwa pliki: /etc/apache2/apache2.conf i apache2/sites-enabled/000-default.conf

W pliku apache2.conf podmieniamy link do strony w linijce kodu <Directory /var/www> na <Directory /home/username/www/> gdzie username to nazwa użytkownika.

W pliku 000-default.conf zmieniamy ścieżkę do katalogu w linijce kodu DocumentRoot /var/www/ na DocumentRoot /home/username/www

Po wprowadzeniu zmian restartujemy serwer apache

Service apache2 restart

Jeżeli wszystko przebiegło poprawnie po wrzuceniu pliku html do katalogu home/www przeglądarka powinna umieć odczytać ten plik po wpisaniu adresu ip serwera.

Instalacja MariaDB

Teoretycznie instalując Ubuntu Serwer nie mamy zainstalowanej bazy danych, ale warto to sprawdzić wpisując komendę mysql lub mariadb. Jeżeli serwer zgłosi błąd możemy śmiało przejść do instalacji. Jeżeli nie, to mamy zainstalowany serwer bazy danych i ten krok można pominąć.

Instalację należy rozpocząć od wejścia na stronę https://downloads.mariadb.org/mariadb/repositories/ i wybrania swojego distro Linuxa, wersji dystrybucji i wersji bazy danych jaka nas interesuje. Po dokonaniu wyboru na dole strony otrzymamy listę komend, jakie należy wprowadzić w terminalu na serwerze, żeby zainstalować serwer bazy danych.

Po wykonaniu tych komend pozostaje nam zainstalowanie pakietu do obsługi klienta. Można to zrobić za pomocą komendy:

apt install mariadb-client-core-10.1

Po zainstalowaniu możemy logować się do serwera za pomocą komendy mysql (jeżeli jesteśmy zalogowani jako root) lub mysql -u root -p jeżeli jesteśmy na innym niż root koncie.

Jeżeli instalacja przebiegła poprawnie, to wyświetli się informacja o serwerze. Wychodzimy z serwera komendą exit.

Kolejny krok to zabezpieczenie bazy danych. Do użytku “domowego” nie jest to krok wymagany, ale według mnie i tak warto ustawić przynajmniej dwa konta (root i user) chociażby po to, żeby przypadkowo nie zepsuć bazy.

W celu zabezpieczenia bazy danych uruchamiamy polecenie

mysql_secure_installation

i postępujemy zgodnie z pojawiającymi się komendami:

  1. możemy zmienić hasło do logowania na konto root
  2. usunąć anonimowych użytkowników
  3. wyłączyć logowanie do bazy poprzez połączenie z zewnątrz
  4. usunąć testową bazę danych
  5. załadować na nowo tabelę uprawnień

Gotowe, teraz możesz dostać się do bazy z konta root poprzez komendę mysql lub z innego konta, poprzez wpisanie komendy:

mysql -u root -p

Jeżeli chcesz uruchomić phpmyAdmin, czyli graficzną obsługę bazy danych trzeba doinstalować dodatkowe pakiety.

apt-get install phpmyadmin php-mbstring php-gettext

podczas instalacji otrzymamy pytanie o serwer WWW wybieramy apache2. Na pytanie o konfigurację pakietu phpmyadmin odpowiadamy nie.

Po zakończeniu instalacji musimy jeszcze zaktualizować konfigurację serwera apache2:

otwieramy plik /etc/apache2/apache2.conf i na końcu pliku dopisujemy:

Include /etc/phpmyadmin/apache.conf

zapisujemy plik i po wyjściu do powłoki restartujemy serwer apache2

systemctl restart apache2

Teraz możemy dostać się do panelu phpmyadmin z linku localhost/phpmyadmin

Login i hasło jest takie jak do bazy MariaDB

Po przejściu całej ścieżki masz skonfigurowane środowisko do testowania aplikacji webowych. Moje gratulacje 😊

Krzysztof NyrekSerwer WWW na Virtual Machine