Przeszukaj bazę wiedzy po słowach kluczowych
VPS: jak skonfigurować wirtualne hosty Apache w systemie Debian 8
Wprowadzenie
Serwer internetowy Apache jest najpopularniejszym sposobem na obsługę zawartości w Internecie. Stanowi ponad połowę wszystkich aktywnych stron internetowych i jest niezwykle elastyczny.
Apache dzieli funkcjonalność i komponenty na pojedyncze jednostki, które możemy dostosować niezależnie od siebie. Jednostkę podstawową opisująca pojedynczą witrynę lub domenę nazywamy wirtualnym hostem.
Korzystając z wirtualnych hostów, możemy użyć jednego serwera do obsługi wielu domen lub witryn z pojedynczego interfejsu lub adresu IP, korzystając z mechanizmu dopasowania. Konfigurujemy żądania domeny, tak aby kierować użytkownika do określonego katalogu zawierającego informacje o tej witrynie. Innymi słowy, można obsługiwać więcej niż jedną witrynę sieci Web na jednym serwerze. Ten sposób może być rozwijany bez jakiegokolwiek limitu, dopóki serwer radzi sobie z obciążeniem.
W tym samouczku utworzymy dwa wirtualne hosty Apache na serwerze Debian 8, które będą zawierać odmienną treść, w zależności od odwiedzanej przez użytkowników domeny.
Wymagania wstępne
Aby móc postępować zgodnie z kolejnymi instrukcjami musimy posiadać:
- Serwer Debian 8 z użytkownikiem innym niż administrator, który posiada uprawnienia sudo.
- Apache, który został zainstalowany i skonfigurowany w Debianie 8.
W tym przewodniku utworzymy wirtualne hosty dla example.com
i test.com
, ale możemy zastąpić je własnymi domenami lub wartościami.
Pozwala to przetestować konfigurację z lokalnego komputera.
Krok 1 – Tworzenie struktury katalogów
Pierwszym krokiem, jaki zamierzamy podjąć, jest utworzenie struktury katalogowej, która będzie przechowywała dane witryny, udostępniane odwiedzającym.
Nasz root – katalog najwyższego poziomu, który jest przeszukiwany przez Apache, aby znaleźć zawartość, która ma być obsługiwana, powinna być ustawiona w osobnych katalogach poniżej /var/www
. Tworzymy katalog dla każdego wirtualnego hosta, który skonfigurujemy.
W każdym z tych katalogów tworzymy folder o nazwie, public_html
przechowujący strony internetowe, które chcemy za jego pomocą obsługiwać. Daje to nam nieco większą elastyczność w stosowaniu bardziej skomplikowanych aplikacji internetowych w przyszłości; folder public_html
będzie zawierał treść, którą chcemy udostępniać, a folder nadrzędny może posiadać skrypty lub kod aplikacji w celu wspierania stron.
Tworzymy katalogi za pomocą następujących poleceń:
$ sudo mkdir -p /var/www/example.com/public_html $ sudo mkdir -p /var/www/test.com/public_html
Ponieważ utworzyliśmy katalogi sudo
, są one własnością głównego użytkownika. Jeśli chcemy, aby nasz zwykły użytkownik mógł modyfikować pliki w katalogach internetowych, zmieniamy wartości:
$ sudo chown -R $USER:$USER /var/www/example.com/public_html $ sudo chown -R $USER:$USER /var/www/test.com/public_html
Zmienna $USER wykorzystuje dane użytkownika, który jest aktualnie zalogowany po naciśnięciu ENTER. W ten sposób nasz zwykły użytkownik ma dostęp do podkatalogów public_html
, w których przechowywane będzie treść.
Powinniśmy również zmodyfikować nasze uprawnienia, aby zapewnić dostęp do odczytu do ogólnego katalogu sieciowego oraz wszystkich plików i folderów, w nim zawartych, w celu umożliwienia prawidłowego wyświetlania stron.
Używamy poniższej komendy, aby zmienić uprawnienia do folderu /var/www
i jego folderów podrzędnych.
$ sudo chmod -R 755 /var/www
Nasz serwer internetowy powinien teraz mieć uprawnienia, których potrzebuje do wyświetlania treści, a my powinniśmy mieć możliwość tworzenia zawartości w folderach.
Teraz stworzymy plik HTML dla każdej z witryn. Mamy już strukturę katalogową, to opublikujmy nieco treści.
Krok 2 – Tworzenie domyślnych stron dla każdego hosta wirtualnego.
Stwórzmy index.html
dla każdej ze stron. Pomoże nam to w poprawnym skonfigurowaniu naszych wirtualnych hostów.
Zacznijmy od strony example.com. Edytujemy plik index.html
przy użyciu następującej komendy:
$ nano /var/www/example.com/public_html/index.html
W tym pliku tworzymy prosty dokument HTML, który wskazuje, że przeglądający szuka strony głównej example.com
:
/var/www/example.com/public_html/index.html <html> <head> <title>Welcome to Example.com!</title> </head> <body> <h1>Success! The example.com virtual host is working!</h1> </body> </html>
Zapisujemy i zamykamy plik po zakończeniu.
Teraz skopiujmy ten plik na stronę test.com
$ cp /var/www/example.com/public_html/index.html /var/www/test.com/public_html/index.html
Następnie otwieramy plik w edytorze:
$ nano /var/www/test.com/public_html/index.html
Zmieniamy plik tak, aby test.com zawierał odniesienia do example.com
:
/var/www/test.com/public_html/index.html <html> <head> <title>Welcome to Test.com!</title> </head> <body> <h1>Success! The test.com virtual host is working!</h1> </body> </html>
Zapisujemy i zamykamy ten plik.
Teraz mamy strony niezbędne do przetestowania konfiguracji wirtualnego hosta.
Krok 3 – Tworzenie nowych plików wirtualnego hosta.
Pliki wirtualnych hostów określają rzeczywistą konfigurację naszych wirtualnych hostów i sposób w jaki serwer Apache odpowiada na różne żądania domen.
Apache jest dostarczany z domyślnym plikiem hosta 000-default.conf
, który można używać jako początkowy. Skopiuj ten plik do pierwszej domeny:
$ sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/example.com.conf
Uwaga : domyślna konfiguracja Apache w Debianie 8 wymaga, aby każdy plik wirtualnego hosta kończył się rozszerzeniem .conf
.
Otwieramy nowy plik w edytorze:
$ sudo nano /etc/apache2/sites-available/example.com.conf
Plik będzie wyglądał tak, jak w przykładzie poniżej, z dodatkowymi komentarzami:
/etc/apache2/sites-available/example.com.conf <VirtualHost *:80> ServerAdmin webmaster@localhost DocumentRoot /var/www/html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
Ten wirtualny host pasuje do wszystkich żądań, które są tworzone w porcie 80 – domyślnym porcie HTTP. Zróbmy kilka zmian w tej konfiguracji i dodajmy kilka nowych dyrektyw.
Najpierw zmieniamy dyrektywę ServerAdmin
na e-mail, przez który administrator witryny może odbierać wiadomości.
/etc/apache2/sites-available/example.com.conf ServerAdmin [email protected]
Następnie musimy dodać dwie nowe dyrektywy. Pierwsza – ServerName
, ustanawia nazwę domeny dla tego hosta. Druga – ServerAlias
, definiuje dalsze nazwy domen, które powinny odpowiadać, tak jakby były to domeny bazowe.
Dodajemy te dwie dyrektywy do pliku konfiguracyjnego bezpośrednio po linii ServerAdmin
:
/etc/apache2/sites-available/example.com.conf <VirtualHost *:80> ServerAdmin webmaster@localhost ServerName example.com ServerAlias www.example.com DocumentRoot /var/www/html ...
Następnie zmieniamy lokalizację głównego dokumentu dla tej domeny, zmieniając dyrektywę DocumentRoot
, wskazując katalog utworzony dla tego hosta:
DocumentRoot /var/www/example.com/public_html
Po wprowadzeniu tych zmian plik powinien wyglądać tak:
/etc/apache2/sites-available/example.com.conf <VirtualHost *:80> ServerAdmin [email protected] 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>
Plik zapisujemy i zamykamy.
Tworzymy drugi plik konfiguracyjny, tworząc kopię tego pliku:
$ sudo cp /etc/apache2/sites-available/example.com.conf /etc/apache2/sites-available/test.com.conf
I otwieramy w edytorze:
$ sudo nano /etc/apache2/sites-available/test.com.conf
Następnie zmieniamy odpowiednie ustawienia, aby odnieść się do drugiej domeny. Po zakończeniu plik będzie wyglądać tak:
/etc/apache2/sites-available/test.com.conf <VirtualHost *:80> ServerAdmin [email protected] 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>
Zapisujemy i zamykamy.
Teraz, gdy stworzyliśmy pliki wirtualnego hosta, możemy je włączyć.
Krok 4 - Włączanie nowych plików wirtualnego hosta
Utworzyliśmy foldery i pliki konfiguracyjne hosta wirtualnego, ale Apache nie używa ich do momentu ich aktywacji. Za pomocą narzędzia a2ensite można włączyć każdą z witryn.
Włączamy pierwszą witrynę:
$ sudo a2ensite example.com.conf
zostanie wyświetlony następujący Output, jeśli w pliku nie wystąpiły błędy składniowe lub literowe:
Output Enabling site example.com. To activate the new configuration, you need to run: service apache2 reload
Aby zmiany zaczęły obowiązywać, musimy załadować Apache. Zanim to zrobimy, włączamy inne witryny:
$ sudo a2ensite test.com.conf
Zobaczymy wiadomość wskazującą, że strona jest włączona:
Output Enabling site test.com. To activate the new configuration, you need to run: service apache2 reload
Następnie wyłączamy domyślną stronę zdefiniowaną w 000-default.conf
za pomocą polecenia a2dissite:
$ sudo a2dissite 000-default.conf
Ponownie uruchamiamy Apache:
$ sudo systemctl restart apache2
Witryny są teraz skonfigurowane. Przetestujmy je.
Krok 5 – Konfigurowanie plików lokalnych hostów (opcjonalnie)
Jeśli używaliśmy przykładowych domen, możemy przynajmniej przetestować funkcjonalność tego procesu, tymczasowo modyfikując plik hosts
na lokalnym komputerze.
Spowoduje to przechwycenie wszelkich żądań skonfigurowanych domen i wskazanie ich na serwerze VPS, podobnie jak system DNS mógłby to zrobić, jeśli używaliśmy zarejestrowanych domen.
To działa tylko na lokalnym urządzeniu i jest użyteczne wyłącznie w celach testowych.
Upewniamy się, że wykonujemy te czynności na komputerze lokalnym, a nie na serwerze VPS. Musimy także znać hasło administratora lub być członkiem grupy administracyjnej.
Na komputerze Mac lub Linux, edytujemy lokalny plik z uprawnieniami administratora, wpisując:
$ sudo nano /etc/hosts
Jeśli korzystamy z systemu Windows, otwieramy wiersz polecenia z uprawnieniami administratora i wpisujemy:
C:\> notepad %windir%\system32\drivers\etc\hosts
Po otwarciu pliku dodajemy wiersz, który mapuje publiczny adres IP serwera na każdą nazwę domeny, zgodnie z poniższym przykładem:
/etc /hosts 127.0.0.1 localhost ... 111.111.111.111 example.com 111.111.111.111 test.com
Spowoduje to skierowanie jakichkolwiek żądań example.com
i test.com
na lokalnym komputerze i ich wysłanie na serwer w 111.111.111.111.
Zapisujemy i zamykamy plik.
Teraz możemy przetestować ustawienia. Kiedy mamy pewność, że rzeczy działają, usuwamy te dwie linijki z pliku.
Krok 6 – testowanie wyników
Teraz, gdy mamy skonfigurowane wirtualne hosty, możemy łatwo przetestować konfigurację, przechodząc do domen skonfigurowanych w przeglądarce internetowej. Odwiedzamy pierwszą witrynę http://example.com. Naszym celem jest zobaczyć stronę, która wygląda następująco:
Success! The example.com virtual host is working!
Podobnie, jeśli możesz odwiedzić drugiego hosta http://test.com, aby zobaczyć:
Success! The test.com virtual host is working!
Jeśli obie te witryny działają, pomyślnie, skonfigurowaliśmy dwa wirtualne hosty na tym samym serwerze.
Podsumowanie.
Od teraz mamy pojedynczy serwer obsługujący dwie oddzielne nazwy domen. Można rozszerzyć go dalej, wykonując powyższe czynności, aby utworzyć dodatkowe wirtualne hosty.
Nie ma ograniczeń programowych dotyczących ilości nazw domen, które Apache może obsłużyć, więc możemy swobodnie tworzyć dowolną liczbę serwerów.