Zazwyczaj programiści PHP używający windowsa (tak, są tacy) do developerki, używają takich wynalazków jak wamp server lub XAMMP. Nie twierdzę, że to złe rozwiązania, ale jednak różnice między windowsem a linuksem są dość spore (mimo spełniania norm POSIX).
Jeśli dodamy do tego memcache
, mod_pagespeed
, redisy
, varnishe
to okazuje się, że środowisko developerskie jest dalekie od produkcyjnego. Dlatego też dla potrzeb mojej żony przygotowałem dość ciekawą kombinację.
Na wirtualboxie zainstalowane są wirtualne środowiska testowe, a pliki są udostępnione przez serwer plików. Nie jest to doskonałe rozwiązanie z powodu różnic między windowsem a linusem. Zdecydowanie jednak sprawdza się lepiej od PHP na czystym windowsie.
Wirtualizacja środowiska developerskiego na Windowsie – jak tego dokonałem ?
Na początek z racji tego, że jest to praca mobilna na notebooku i zmienia się sieć, w której pracuje żona, musiałem uniezależnić rozwiązanie od miejsca pracy. Dlatego też każda wirtualka ma 2 sieci.
Pierwsza z opcją NAT ma za zadanie dostarczyć internet do wirtualnej maszyny. W ten sposób mamy internet brany z windowsa.
Druga sieciówka jest w trybie host-only. Na tej sieci mamy połączenie tylko pomiędzy windowsem i naszą wirtualką. I to dzięki tej sieci będziemy mieli dostęp do naszej strony (ssh itp.)
Dlaczego nie możemy używać do tego 1 karty sieciowej?
Wynika to z tego czym jest NAT – działa jak router domowy, oddziela sieć WAN (w tym przypadku nasz windows) od LAN (naszej wirtualki)
Tworzenie sieci pomiędzy wirtualną maszyną a systemem windows
Kolejnym etapem jest ustawienie sieci na samej wirtualnej maszynie. Poniżej na małej prezentacji widać jak wirtualizacja środowiska developerskiego na Windowsie wygląda w praktyce w zakresie udostępniania zasobu /var/www/html
Załóżmy tutaj, że używamy Debiana w wersji 8 (potem nazwy sieci są trochę mniej przejrzyste). Plik /etc/network/interfaces
modyfikujemy tak, żeby wyglądał tak jak poniżej:
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp
auto eth1
iface eth1 inet static
address 192.168.56.2
netmask 255.255.255.0
Interface eth0
to jest nasza pierwsza karta sieciowa, która daje nam internet.
Interface eth1
wymaga od nas wpisania ręcznie IP. Skąd brać to IP? Virtualbox ustawia nam na windowsie jako sieć host-only
IP 192.168.56.1
z maską 255.255.255.0
. A zatem musimy ustawić IP między 192.168.56.2
, a 192.168.56.254
. Dla każdej wirtualnej maszyny oczywiście musi to być osobny IP.
Żeby ułatwić sobie życie i zamiast IP używać nazw najlepiej dopisać sobie do pliku
C:\Windows\System32\drivers\etc\hosts
wpis jak poniżej:
192.168.56.2 project.local
Oczywiście sama maszynka wirtualna musi taką domenę obsłużyć. Ale tym się zajmować tutaj nie będę, bowiem to temat na osobny artykuł 🙂
Udostępnienia plików pomiędzy windowsem a wirtualną maszyną
Kolejnym krokiem jest udostępnienie sobie plików z wirtualnej maszyny na hosta. Można to zrobić za pomocą samego virtualboxa, ale ja wybrałem zrobienie tego przez sambę (czyli windowsowe udostępnanie plików).
Instalujemy pakiet samby na maszynie wirtulnej
apt-get install samba
Następnie edytujemy plik konfiguracyjny samby
/etc/samba/smb.conf/
I dopisujemy na końcu:
[share]
path = {{ścieżka gdzie mamy stronę na serwerze}}
browseable = yes
read only = no
guest ok = yes
force user = {{użytkownik na jakim działa strona}}
force group = {{grupa na jakim działa strona}}
Restartujemy sambe:
service smbd restart
I teraz zostało nam zamontowanie dysku na windowsie. Otwieramy ścieżkę:
\\project.local\
Powinniśmy zobaczyć zasób share. Prawoklik i montujemy.
Powinniśmy się teraz cieszyć naszym nowym środowiskiem developerskim.
***
Moja żona rozwinęła ten tip pisząc własny okiem developera artykuł „Wirtualizacja środowiska developerskiego, o czym warto pamiętać„.