25 kwi

Jak skonfigurować wirtualne hosty Apache na Ubuntu 18.04?

Ubuntu18 Apache Virtualhost

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:

Welcome to Example.com!

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.