16 kwi

Konfiguracja Apache VirtualHost w Ubuntu 16.04

Konfiguracja Apache VirtualHost Ubuntu 16.04

Wprowadzenie

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. Rozszerzenie takiego układu pod względem oprogramowania jest możliwe w zależności od tego, jakie obciążenie może obsługiwać Twój serwer.

W niniejszym przewodniku pokażemy ci jak ustawić Apache Virtual Host w systemie Ubuntu 16.04 VPS. Nauczysz się obsługiwania różnych zawartości dla różnego rodzaju użytkowników w zależności od tego, jakiej domeny oni potrzebują.

Zaczynamy

Przed rozpoczęciem niniejszego tutorialu powinieneś zainstalować Apache. Jeżeli jeszcze tego nie zrobiłeś, to możesz go zainstalować na swoim serwerze poprzez apt-get:

sudo apt-get update
sudo apt-get install apache2

Możemy zacząć dopiero po wykonaniu powyższych punktów.

Stworzymy przykładowe VirtualHost dla example.com oraz test.com. W niniejszym artykule będziemy się do nich ciągle odwoływać, a Ty zastąpisz je własnymi domenami.

Jeżeli nie masz dostępnych domen do eksperymentów, możesz skorzystać z fikcyjnych.

W razie korzystania z fikcyjnych wartości, niżej znajdziesz informacje o tym, jak edytować lokalne hosty w celu przetestowania konfiguracji. Pozwoli to na sprawdzenie konfiguracji na twoim komputerze mimo, że zawartość nie będzie dostępna za pośrednictwem domeny dla innych użytkowników.

Stworzenie struktury katalogów

Najpierw powinniśmy stworzyć strukturę katalogów mieszczącą pliki stron, które będą przedstawiane użytkownikom.

Nasz document root (najważniejszy katalog, z którego Apache czerpie zawartość do obsługi) zostanie przesłany do indywidualnych katalogów pod katalogiem /var/www. Stworzymy katalog dla obydwu planowanych VirtualHost.

W ramkach każdego z tych katalogów stworzymy folder public_html, w którym będą się znajdywać nasze aktualne pliki z kodem. Pozwoli to nam na osiągnięcie dodatkowej elastyczności dla naszego hostingu.

Przykładowo, dla naszych stron stworzymy następujące katalogi:

sudo mkdir -p /var/www/example.com/public_html
sudo mkdir -p /var/www/test.com/public_html

Fragmenty zaznaczone na czerwono są nazwami domen, które zamierzamy udostępniać z naszego VPS.

Udzielenie uprawnień

Pliki w nowostworzonej strukturze katalogów są własnością root`a. W celu otrzymania możliwości modyfikowania plików przez użytkownika należy zmienić właściciela w następujący sposób:

sudo chown -R $USER:$USER /var/www/example.com/public_html
sudo chown -R $USER:$USER /var/www/test.com/public_html

Dopiero po naciśnięciu przycisku „ENTER” zmienna $USER stanie się użytkownikiem, w imieniu którego jesteś zalogowany. W taki sposób użytkownik staje się właścicielem subkatalogów public_html , w których będziemy przechowywać nasze strony.

W celu uzyskania pewności, że istnieje możliwość odczytu treści głównego katalogu oraz wszystkich jego folderów i plików, powinniśmy nieco zmodyfikować uprawnienia:

sudo chmod -R 755 /var/www

Teraz Twój serwer ma niezbędne uprawnienia do udostępnienia treści, a użytkownik może tworzyć zawartość w niezbędnych folderach.

Tworzymy przykładowe strony dla każdego VirtualHost

Po stworzeniu struktury katalogów przyszedł czas na tworzenie treści do udostępnienia.

Zacznijmy od prostych stron w celach demonstracyjnych. Stwórzmy stronę index.html dla każdej z witryn.

Zacznijmy od example.com. Otwórzmy plik index.html w naszym edytorze poprzez wpisanie:

nano /var/www/example.com/public_html/index.html

W powyższym pliku stwórz prosty dokument HTML wskazując portal, do którego jest on podpięty. Na przykład:

<h1>Sukces!  Domena example.com dziala!</h1>

Po zakończeniu zapisz i zamknij plik.

Skopiuj plik jako bazowy dla drugiej witryny wpisując:

cp /var/www/example.com/public_html/index.html /var/www/test.com/public_html/index.html

Teraz możesz otworzyć plik i zmodyfikować niezbędne informacje:

nano /var/www/test.com/public_html/index.html
<h1>Sukces!  Domena test.com dziala!</h1>

Zapisz i zamknij plik. Teraz masz strony do przetestowania konfiguracji VirtualHost.

Stworzenie nowego pliku VirtualHost

Zadaniem plików VirtualHost (Wirtualnego Hosta) jest wskazanie ścieżek oraz konfiguracji naszych wirtualnych hostów na serwerze, a konkretnie jakich reakcji należy oczekiwać od serwera Apache podczas żądania poszczególnych domen.

Standardowo Apache posiada domyślny plik Virtual Host nazywany 000-default.conf, który możemy wykorzystać jako wzór. Skopiujemy go w celu stworzenia wirtualnego hosta dla każdej z naszych domen.

Rozpoczniemy od jednej domeny, skonfigurujemy ją, skopiujemy dla następnej domeny i wykonamy kilka dostosowań. Zgodnie z wymogami domyślnej konfiguracji systemu Ubuntu, każdy plik wirtualnego hosta powinien mieć rozszerzenie .conf.

Stwórz pierwszy plik Virtual Host

Najpierw skopiuj plik dla pierwszej domeny:

sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/example.com.conf

Otwórz nowy plik w edytorze, który uwielbiasz, z uprawnieniami root`a:

sudo nano /etc/apache2/sites-available/example.com.conf

Plik będzie wyglądał mniej więcej tak (usunęliśmy komentarze, żeby plik był bardziej czytelny):

<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Jak widzisz, nie ma tego dużo. Dostosujemy elementy dla naszej pierwszej domeny i dołączymy dodatkowe katalogi. Ta część Virtual Host dopasuje wszystkie żądania portu 80, domyślnego portu HTTP.

W pierwszej kolejności powinniśmy zmienić katalog ServerAdmin na adres poczty elektronicznej, za pośrednictwem której administrator będzie mógł otrzymywać maile.

ServerAdmin admin@example.com

Następnie musimy dodać dwie linii. Pierwsza z nich, ServerName, określa bazową domenę pasującą do definicji Virtual Host. Najprawdopodobniej będzie to Twoja domena. Druga, ServerAlias, określa dodatkowe nazwy, które powinny pasować tak samo, jak nazwa bazowa. Pomoże to nam w dopasowaniu określonych przez Ciebie hostów, takich jak www:

ServerName example.com
ServerAlias www.example.com

Kolejną rzeczą, którą musimy zmienić dla bazowego pliku Virtual Host, jest lokalizacja dokumentu root dla tej domeny. Mamy już niezbędny katalog, więc musimy tylko zmienić katalog DocumentRoot w celu odzwierciedlenia stworzonego przez nas katalogu:

DocumentRoot /var/www/example.com/public_html

W wyniku, nasz Virtual Host powinien wyglądać następująco:

<VirtualHost *:80>
ServerAdmin admin@example.com
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www/example.com/public_html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Zapisz i zamknij plik.

Skopiuj pierwszy Virtual Host i dostosuj do drugiej domeny

Po zakończeniu tworzenia pierwszego Virtual Host, możemy zabrać się za drugi kopiując plik i dostosowując zgodnie z potrzebami.

Najpierw skopiuj to:

sudo cp /etc/apache2/sites-available/example.com.conf /etc/apache2/sites-available/test.com.conf

Otwórz nowy plik z uprawnieniami root`a w Twoim edytorze:

sudo nano /etc/apache2/sites-available/test.com.conf

Teraz musisz zmodyfikować wszelkie informacje do potrzeb drugiej domeny.
Po zakończeniu tych czynności powinno to wyglądać mniej więcej następująco:

<VirtualHost *:80>
ServerAdmin admin@test.com
ServerName test.com
ServerAlias www.test.com
DocumentRoot /var/www/test.com/public_html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Zapisz i zamknij plik.

Uruchom nowostworzony plik Virtual Host

Przyszedł czas na uruchomienie naszych VirtualHost. Apache posiada narzędzia, które nam w tym pomogą.

Użyjemy a2ensite w celu uruchomienia każdej ze stron:

sudo a2ensite example.com.conf
sudo a2ensite test.com.conf

Następnie uruchom ponownie Apache w celu zastosowania wprowadzonych zmian:

sudo service apache2 restart

Możesz otrzymać podobny komunikat:

* Restarting web server apache2
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1. Set the 'ServerName' directive globally to suppress this message

Ta wiadomość nie ma wpływu na naszą stronę.

Skonfiguruj lokalny plik .hosts (opcjonalnie)

Jeżeli do tej pory w testowaniu nie używałeś własnych nazw domen lecz przykładowe, przyszedł czas na sprawdzenie funkcjonalności tego procesu poprzez modyfikację pliku hosts na twoim komputerze.

Powyższa czynność zablokuje wszelkie żądania w stosunku do skonfigurowanych przez Ciebie domen, wyróżni je dla Twojego serwera VPS, tak jak by zrobił to system serwerów nazw DNS, gdybyś używał zarejestrowanych domen. Będzie to działało wyłącznie poprzez Twój komputer w celach testowych.

Przekonaj się, że wykonujesz te czynności na lokalnym komputerze, a nie na serwerze VPS. Potrzebne Ci będzie administracyjne hasło komputera lub powinieneś być członkiem grupy administracyjnej.

Jeżeli używasz Mac lub Linux, edytuj lokalny z prawami administratora:

sudo nano /etc/hosts

Instrukcję dla zmiany hostów na systemach Windows znajdziesz tu.

Dodaj publiczny adres IP twojego serwera VPS oraz domenę, której chcesz użyć.

Dla naszej domeny na dole pliku hosts dodajemy następujące linie, zakładając, że adres IP serwera VPS to 111.111.111.111:
127.0.0.1   localhost
127.0.1.1   guest-desktop
111.111.111.111 example.com
111.111.111.111 test.com

To przekieruje wszelkie żądania dla example.com oraz test.com na komputer i prześle je na nasz serwer 111.111.111.111. Tak się powinno dziać, jeżeli nie jesteśmy właścicielem domeny, a tylko testujemy Virtual Host.

Zachowaj i zamknij plik.

Przetestuj osiągnięcia

Po skonfigurowaniu Virtual Hosts możesz łatwo przetestować swoje ustawienia przechodząc do skonfigurowanych przez Ciebie domen na Twojej przeglądarce internetowej:

http://example.com

Powinieneś zobaczyć następujący komunikat na stronie:

Sukces! Domena example.com dziala!

Podobnie będzie wyglądał komunikat dla drugiej strony:

http://test.com

Zobaczysz stworzony przez Ciebie plik dla drugiej strony:

Sukces! Domena test.com dziala!

Gratulacje! Jeżeli obydwie strony działają jak należy, to znaczy, że udało Ci się skonfigurować dwa VirtualHost na jednym serwerze.

W przypadku dostosowania plików host na Twoim komputerze, możesz usunąć linie, które służyły do przetestowania konfiguracji. Zabezpieczy to Twoje pliki hosts przed przechowywaniem zbędnych wpisów.

Jeżeli potrzebujesz dostępu na dłuższy czas, rozważ nabycie domeny dla każdej strony dostosowując je do Twojego serwera VPS.

Podsumowanie

Jeżeli wszystko zrobiłeś dobrze, powinieneś teraz mieć jeden serwer obsługujący dwie osobne domeny. Możesz poszerzyć ten proces o kolejne Virtual Host wykonując czynności opisane wyżej.

Apache może obsługiwać nieograniczoną liczbę domen, wszystko zależy wyłącznie od możliwości Twojego serwera.

Udostępnij