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