Apache
Tworzenie VHost’a w Apache
0
Zapraszam do lektury kursy tworzenia VHostów. Okazuje się, że wiele osób ma jednak problem z ruszeniem tego tematu dlatego postanowiłem w jak najprostszy sposób przedstawić sposób na utworzenie VHostów.
Komentarze jak zwykle mile widziane.
Pozdrawiam.
Tworzenie VHost’a w Apache
5Dlaczego?
Często spotykam się z zainteresowaniem rozwiązaniami vhostów (zwłaszcza dla programistów/opiekunów wielu serwisów) jednak ciężko jest przebrnąć przez kilka kwestii. Tworzenie vhostów jest bardzo proste jednak po drodze jest parę kruczków, które mogą niejednego doprowadzić do białej gorączki. Wystarczy poznać zestaw kilku zasad i korzystanie z vhostów stanie się tylko i wyłącznie przyjemnością. Zapraszam do lektury!
o Virtual Host’ach
Bardzo często zdarza się, że mamy do dyspozycji tylko jedną maszynę a chcemy/musimy posiadać kilka serwisów (hostów). Jeśli na maszynie zainstalowany jest Apache to z pomocą przychodzi nam rozwiązanie zwane “Virtual Hosts”. Dzięki temu rozwiązaniu możemy zdefiniować w serwerze klika niezależnych hostów, działających na własnych domenach i z własną konfiguracją.
Jeśli posiadasz już zainstalowany serwer i chciałbyś stworzyć wirtualne hosty musisz wykonać 3 czynności:
- Stworzyć nazwę domenową
- Utworzyć wpis vhosta w pliku konfiguracyjnym
- Zmodyfikować uprawnienia
1. Nazwa domenowa
Dzięki nazwom domenowym nie musimy chodzić po stronach za pomocą adresów IP tylko za pomocą przyjaznych dla nas nazw. Nazwy te tłumaczone są przez serwery DNS na IP aby przeglądarka wiedziała gdzie ma się faktycznie połączyć. Na każdym komputerze (czy to z Windowsem czy Linuxem) można stworzyć własną uproszczoną wersję takiego serwera – a konkretnie jest to plik w którym zdefiniowane są nazwy domenowe i przypisane im konkretne IP.
W systemie Windows jest to plik: C:\Windows\System32\drivers\etc\hosts
W systemie Linux jest to plik /etc/hosts
Posiada on mniej więcej taką strukturę:
IP domena
127.0.0.1 localhost
IP 127.0.0.1 jest adresem własnego komputera. A “localhost” jest nazą domenową dla tego IP. Jeśli wpiszesz w przeglądarce “localhost” to podłączysz się sam do siebie (jeśli masz działający serwer)
Gdy wpisujesz w przeglądarkę “wp.pl” to faktycznie łączysz się z pewnym adresem IP, który “podpowiedział” serwer DNS. Jednak można wymusić aby pewne nazwy domenowe łączyły się na inne IP. Sprawdźmy to:
Otwórz wspomniany plik “hosts” i dopisz w nim na koniec taką linijkę:
74.125.43.147 onet.pl
Zapisz plik i spróbuj odwiedzić stronę onet.pl – niespodzianka? Ustawiłeś właśnie aby domena onet.pl wskazywała na IP google. Dobra jeśli już znamy zasadę działania to usuń ten wpis żebyś nie zapomniał
Zamiast tego utwórz wpis
127.0.0.1 pierwszyvhost
127.0.0.1 drugivhost
W ten sposób stworzysz drugą nazwę domenową dla własnego komputera. Tworzymy to po to, gdyż apache rozpoznaje który vhost ma uruchomić właśnie po nazwie domenowej. IP mamy tylko jedno, ale różne domeny wskazują na to samo IP i po tych nazwach właśnie apache wie co uruchomić.
2. Tworzenie vhosta
W zasadzie Apache posiada główny plik konfiguracyjny httpd.conf i to w nim powinno dokonywać się wszelkich zmian. Jednakże w zależności od dystrybucji ten plik może być podzielony na inne mniejsze pliki które zawierają konkretne rzeczy (np właśnie vhosty).
Jeśli posiadasz pakiet XAMPP to otwórz plik i przejdź na koniec:
c:\xampp\apache\conf\extra\httpd-vhosts.conf
Jeśli posiadasz zwykłą dystrybucję bądź nie ma osobnego pliku na vhosty to otwórz plik httpd.conf i przejdź na koniec
VHost składa się z pewnego bloku informacji obowiązujących w określonej strukturze drzewa. Struktura takiego podstawowego bloku przedstawia się następująco:
<VirtualHost *:80>
ServerAdmin [adres email administratora]
DocumentRoot [ścieżka do katalogu]
ServerName [nazwa domenowa serwera]
ServerAlias [alias nazwy serwera - np druga nazwa]
ErrorLog [plik z logami błędów]
</VirtualHost>
Dopisz zatem następującą treść (nie potrzebujemy wszystkich wpisów)
<VirtualHost *:80>
ServerAdmin adres@email.pl
DocumentRoot C:\www\vhost1\html
ServerName pierwszyvhost
</VirtualHost>
<VirtualHost *:80>
ServerAdmin adres@email.pl
DocumentRoot C:\www\vhost2\html
ServerName drugivhost
</VirtualHost>
Zapisz plik. Utwórz oczywiście wymienione katalogi i wrzuć do każdego katalogu “html” jakiś plik index.html (np jeden o treści “Pierwszy vhost” a drugi o treści “Drugi vhost”) i vhosty gotowe… no cóż… prawie….
Zrestartuj serwer apache (w XAMPP musisz włączyć i wyłączyć serwer), lub w konsoli na linuxie polecenie:
/etc/init.d/httpd restart
czy tez inne odpowiednie dla Twojej dystrybucji.
Wpisz teraz w przeglądarce
http://pierwszyvhost
lub
http://drugivhost
W obu przypadkach prawdopodobnie otrzymasz komunikat “Forbidden” i teraz przechodzimy do punktu 3
3. Uprawnienia
Problem z uprawnieniami wynika z tego, że dla głównego drzewa serwera zostały ograniczone możliwości. Metodą najprostszą jest odnalezienie w pliku httpd.conf następującej sekcji:
<Directory />
Domyślnie znajdują się w niej opcje ustawione w taki sposób:
Options FollowSymLinks AllowOverride None Order deny,allow Deny from all
Musisz zmienić je następujące:
Options FollowSymLinks AllowOverride All Order allow,deny Allow from all
Zrestartuj ponownie serwer apache. Wpisz w przeglądarce:
http://pierwszyvhost
Hurra działa! (a przynajmniej powinno). Jednak gdy wpiszesz
http://drugivhost
To prawdopodobnie nie zadziała. Jest to związane z nasłuchiwaniem portów. Musisz odnaleźć opcję:
NameVirtualHost *:80
Jeśli jest zakomentowana (znajdują się przed nią znaki “#” czyli jest wyłączona) to usuń te znaki aby doprowadzić ją do postaci j/w. Ponownie musisz oczywiście zrestartować serwer. Jeśli nie masz tej opcji ani w pliku httpd-hosts.conf ani w httpd.conf to dopisz taką linijkę samodzielnie (tylko jeśli drugi host nie działa).
Po restarcie serwera drugi vhost również powinien działać.
Podsumowanie
Mam nadzieję, że przybliżyłem nieco tematykę co pozwoliło osobom zainteresowanym zrealizować swoje potrzeby. Wszelkie uwagi i wątpliwości proszę zgłaszać za pomocą poniższego narzędzia.
Pozdrawiam.