W artykule pokażemy jak wygląda proces konfigurowania wielu domen i witryn przy użyciu wirtualnych hostów Apache na serwerze z Ubuntu 18.04. Podczas tego procesu dowiesz się, jak udostępniać różne treści różnym użytkownikom w zależności od żądanych domen internetowych.
Tworzenie folderów
Najpierw stworzymy strukturę katalogów, w której będą przechowywane dane witryny, które będziemy udostępniać odwiedzającym w naszym katalogu Apache najwyższego poziomu. Będziemy używać przykładowych nazw domen, wyróżnionych poniżej. Powinieneś je zastąpić rzeczywistymi nazwami domen.
sudo mkdir -p /var/www/example.com/public_html
sudo mkdir -p /var/www/test.com/public_html
Konfiguracja uprawnień
Powinniśmy teraz zmienić uprawnienia naszego obecnego użytkownika (nie będącego rootem), aby móc modyfikować pliki.
sudo chown -R $USER:$USER /var/www/example.com/public_html
sudo chown -R $USER:$USER /var/www/test.com/public_html
Ponadto zapewnimy dostęp do odczytu do ogólnego katalogu internetowego oraz wszystkich zawartych w nim plików i folderów, aby strony mogły być poprawnie wyświetlane.
sudo chmod -R 755 /var/www
Tworzenie przykładowych stron dla każdego hosta
Stwórzmy trochę treści do wyświetlenia – stworzymy stronę demonstracyjną index.html dla każdej witryny. Możemy otworzyć plik index.html w edytorze tekstu dla naszej pierwszej witryny, na przykład używając nano.
nano /var/www/example.com/public_html/index.html
W tym pliku utwórz dokument HTML specyficzny dla danej domeny, taki jak poniżej:
<html>
<head>
<title>Welcome to Example.com!</title>
</head>
<body>
<h1>Success! The example.com virtual host is working!</h1>
</body>
</html>
Zapisz i zamknij plik, a następnie skopiuj ten plik, aby użyć go jako podstawy dla naszej drugiej witryny:
cp /var/www/example.com/public_html/index.html /var/www/test.com/public_html/index.html
Otwórz plik i zmodyfikuj odpowiednie fragmenty:
nano /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>
Zapisz i zamknij ten plik, podobnie jak poprzedni.
Tworzenie plików wirtualnego hosta (Virtual Host)
Apache jest dostarczany z domyślnym plikiem wirtualnego hosta o nazwie 000-default.conf, którego użyjemy jako szablonu. Skopiujemy go, aby utworzyć wirtualny plik hosta dla każdej z naszych domen.
Pierwszy plik Virtual Host
Zacznij od skopiowania pliku dla pierwszej domeny:
sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/example.com.conf
Otwórz nowy plik w swoim edytorze (poniżej używamy nano) z uprawnieniami roota:
sudo nano /etc/apache2/sites-available/example.com.conf
Dostosujemy ten plik do naszej własnej domeny. Zmodyfikuj podświetlony poniżej tekst zgodnie ze szczegółami swojego środowiska.
<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>
Następnie zapisz i zamknij plik.
Kopia pierwszego wirtualnego hosta i zmiany dla drugiej domeny
Teraz, gdy mamy już utworzony plik pierwszego wirtualnego hosta, możemy utworzyć drugi, kopiując ten plik i dostosowując go w razie potrzeby.
Zacznij od skopiowania:
sudo cp /etc/apache2/sites-available/example.com.conf /etc/apache2/sites-available/test.com.conf
Otwórz w edytorze nowy plik z uprawnieniami administratora:
sudo nano /etc/apache2/sites-available/test.com.conf
Teraz musisz zmodyfikować wszystkie parametry, aby odwoływały się do Twojej drugiej domeny. Ostateczny plik powinien wyglądać mniej więcej tak, z podświetlonym tekstem odpowiadającym właściwym parametrom Twojej domeny.
<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.
Podłączenie nowych plików VirtualHost do Apache
Po utworzeniu plików wirtualnych hostów musimy je włączyć. Do osiągnięcia tego celu użyjemy narzędzia a2ensite.
sudo a2ensite example.com.conf
sudo a2ensite test.com.conf
Następnie wyłącz domyślną witrynę zdefiniowaną w 000-default.conf:
sudo a2dissite 000-default.conf
Po zakończeniu musisz ponownie uruchomić Apache, aby zmiany zostały wprowadzone, i użyć polecenia systemctl status, aby zweryfikować powodzenie ponownego uruchomienia.
sudo systemctl restart apache2
Twój serwer powinien być teraz skonfigurowany do obsługi dwóch stron internetowych.
Konfiguracja pliku hosts (opcjonalnie)
Jeśli nie używasz rzeczywistych nazw domen (które posiadasz) do testowania tej procedury, a zamiast tego używasz przykładowych domen, możesz przetestować swoją pracę, tymczasowo modyfikując plik hosts na komputerze lokalnym.
Na komputerze Mac lub Linux wpisz następujące polecenie:
sudo nano /etc/hosts
W przypadku komputera z systemem Windows, instrukcje dotyczące zmiany pliku hosts znajdziesz tutaj.
Korzystając z domen użytych w tym przewodniku i zastępując adres IP serwera wartością IP_twojego_serwera, plik powinien wyglądać następująco:
127.0.0.1 localhost
127.0.1.1 guest-desktop
your_server_IP example.com
your_server_IP test.com
Zapisz i zamknij plik. Spowoduje to skierowanie wszelkich żądań na example.com i test.com na naszym komputerze i wysłanie ich na nasz serwer.
Sprawdzenie czy działa
Po skonfigurowaniu hostów wirtualnych możesz przetestować konfigurację, przechodząc do skonfigurowanych domen w przeglądarce internetowej:
http://example.com
Powinieneś zobaczyć stronę, która wygląda tak:
Możesz także odwiedzić drugą stronę i zobaczyć plik utworzony dla drugiej witryny.
http://test.com
Jeśli obie strony działają zgodnie z oczekiwaniami, skonfigurowałeś dwa wirtualne hosty na tym samym serwerze.
Jeśli zmieniałeś plik hosts swojego komputera domowego, usuń dodane linie.