Jak uprościć sobie pracę z wirtualnymi hostami instalując dnsmasq?

Pracując z kilkoma projektami na lokalnym środowisku prędzej czy później stwierdzimy, że ręczne dodawanie hosta wirtualnego jest dość męczące. Niby sprowadza się to tylko do dodania jednego wpisu w konfiguracji serwera oraz jednej linijki do pliku /etc/hosts, jednak na dłuższą metę może to być męczące. Można prościej? Oczywiście. Wystarczy zainstalować dnsmasq oraz odpowiednio skonfigurować webserver.

W tym wpisie pokażę, w jaki sposób ułatwiłem sobie pracę z wieloma projektami na lokalnym komputerze w odpowiedni sposób konfigurując środowisko programistyczne. Jako że aktualnie pracuję na serwerze www Apache w wersji 2.2 to na nim oprę swój przykład. Nic nie stoi jednak na przeszkodzie, żeby go zaadoptować na serwer Nginx lub inny.
Porada: wszystkie pliki konfiguracyjne wymagają praw roota do zapisu!

Instalacja i konfiguracja serwera WWW

MacOS ma świetny manager pakietów. Mówię tu o projekcie MacPorts (https://www.macports.org/). Jest to odpowiednik Debianowego apt-get, więc jeśli znasz to narzędzie poczujesz się jak w domu. Instalacja „apacza” sprowadza się do wydania polecenia

sudo port install apache2

w terminalu. Cały serwer instaluje się do lokalizacji

/opt/local/apache2

Tutaj znajdują się binarki i pliki konfiguracyjne. Na początku edytujemy plik

/opt/local/apache2/conf/httpd.conf

Odnajdujemy tu dyrektywę DocumentRoot i zmieniamy ją wedle uznania, u mnie na

DocumentRoot „/home/lukasz/workspace”

(Oczywiście katalog workspace należy utworzyć w swoim katalogu domowym). Parę linijek niżej znajduje się konfiguracja tego katalogu (dyrektywa Directory), w której należy podać tę samą ścieżkę co wyżej. Następnie należy odkomentować linijkę zawierającą wpis

Include conf/extra/httpd-vhosts.conf

W tym pliku zdefiniujemy swój wirtualny host. Tak więc otwieramy ten plik i wpisujemy przykładową treść:

NameVirtualHost *:80                                          
<VirtualHost *:80>                                            
        VirtualDocumentRoot /home/lukasz/workspace/%1/public/
        ServerName dev                                        
        ServerAlias *.dev                                     
        <Directory /home/lukasz/workspace/*/public/>          
		AllowOverride All                                  
        </Directory>
</VirtualHost>  

Co tu się dzieje? Już tłumaczę. Informujemy Apache, że chcemy, aby każdy katalog w naszym workspace traktował jako osobny host wirtualny. Nazwą tego hosta będzie nazwa katalogu z doklejoną domeną .dev. Tak więc dla katalogu /home/lukasz/workspace/test nazwą hosta będzie test.dev. Zwracam tu jeszcze uwagę na fakt, że wszystkie publiczne pliki („widoczne przez przeglądarkę”, a więc pliki js, css, obrazki etc. muszą znaleźć się w katalogu public).

Konfiguracja dnsmasq

Kolejnym krokiem jest skonfigurowanie usługi, która przetłumaczy nam adresty z domeny dev na odpowiedni adres ip (w naszym przypadku na 127.0.0.1). Ponownie w terminalu wydajemy polecenie

sudo port install dnsmasq

Po instalacji edytujemy plik konfiguracyjny (/opt/local/etc/dnsmasq.conf). W tym pliku umieszczamy następujące wpisy (możesz usunąć całą zawartość i wpisać tylko to):

resolv-file=/etc/resolv.conf
address=/dev/127.0.0.1   

Ostatnim krokiem jest stworzenie tzw. resolvera. W tym celu tworzymy katalog /etc/resolver:

sudo mkdir /etc/resolver

oraz plik, który wskaże serwerowi, jak ma przetłumaczyć naszą domenę:

sudo echo „nameserver 127.0.0.1” > /etc/resolver/dev

Zapisujemy wszystkie pliki konfiguracyjne i restartujemy usługi:

sudo port unload dnsmasq
sudo port load dnsmasq  
sudo port unload apache2
sudo port load apache2  

Możemy już przetestować naszą konfigurację. W tym celu zakładamy klika katalogów w naszym workspace:

mkdir -p ~/workspace/test1/public && echo „test1” > ~/workspace/test1/public/index.html
mkdir -p ~/workspace/isystems/public && echo „i-systems” > ~/workspace/isystems/public/index.html

Teraz wpisując w przeglądarce test1.dev zobaczymy „test1″, a wpisując isystems.dev zobaczymy „i-systems”.

Autorem tekstu jest Łukasz Wojtyczka.

Dodaj komentarz

Please Login to comment

Zobacz również artykuły o podobnej tematyce

ORI – czy Twój biznes jest gotowy na omnichannel?

Pojęcie omnichannelu znamy już właściwie wszyscy, nie tylko w teorii, ale również w praktyce. Taka synergia wszystkich, wykorzystywanych przez markę...

Efekt ROPO – co może zagwarantować Twojej firmie?

Relacje między marką a klientem zmieniają się bardzo dynamicznie. Współcześnie są one zupełnie inne niż 5, 10, czy 20 lat...

Magia e-commerce, czyli ludzka psychika a wydatki

Żyjemy w czasach, gdzie półki uginają się pod ciężarem wyłożonych na nich towarów, a każdy produkt jest w zasadzie “na...

Zobacz więcej wpisów