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

1

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.

Zobacz również artykuły o podobnej tematyce

Głosowanie w konkursie Ekomersy 2017 już trwa!
banner_ekomersy

Zbliża się finał kolejnej edycji Ekomersów, organizowanych przez Fundację Polak 2.0. Konkurs ma na celu wyłonić firmy, ich produkty oraz...

Bądź gotowy na duże obciążenie w Black Friday – zrób testy wydajnościowe systemu e-commerce
gift-brown-shopping-market

Wyprzedaże sezonowe, Black Friday, a może po prostu zwiększony ruch w sklepie online. W przypadku posiadania zbyt małej ilości zasobów...

Firma z branży HoReCa inwestuje w e-commerce
banerki4

Popyt na dedykowane rozwiązania e-commerce w branży HoReCa stale rośnie. Wraz z dynamicznym rozwojem, kolejna firma z tej branży zdecydowała...

Zobacz więcej wpisów