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

avatar
  Subscribe  
Powiadom o

Zobacz również artykuły o podobnej tematyce

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...

Co siedzi w środku tablic PHP?

Zacznę może od genezy problemu. Pracowałem nad optymalizacją zużycia pamięci w pewnym procesie importu danych, ponieważ pierwsze analizy wskazywały na...

Modus operandi zespołu kreacji

Rola zespołów zajmujących się wizualną stroną systemów na przestrzeni ostatnich lat ewoluowała. Obecnie skupiają się one na tym, by pomóc...

Zobacz więcej wpisów