Programowanie w PHP najczęściej wiąże się z posiadaniem lokalnej kopii projektu. Pół biedy gdy nad projektem pracujemy sami. Wówczas lokalne środowisko można dopasować do środowiska produkcyjnego, dzięki czemu unikniemy konieczności utrzymywania kilku wersji kodu dla różnych środowisk (wbrew porom jest to częsta praktyka).
Z pomocą przychodzi nam projekt o nazwie Vagrant. Jest to narzędzie stworzone z myślą o tworzeniu wirtualnych środowisk dla deweloperów, bazujące na dobrze znanym i lubianym VirtualBoksie oraz języku Ruby (działa również na Windowsie).
Instalacja Vagranta wbrew pozorom jest banalna (nawet w przypadku systemu operacyjnego Windows). Na początek potrzebujemy dwóch rzeczy – VirtualBox oraz interpretera Ruby. VirtualBox pobierzemy pod adresem www.virtualbox.org, a interpreter języka Ruby – rubyinstaller.org/downloads. Po pobraniu i zainstalowaniu powyższych VirtualBoksa oraz Ruby, możemy przystąpić do instalacji Vagranta. W przypadku Windowsa konieczne może się okazać zainstalowanie DevKita również dostępnego pod adresem rubyinstaller.org/downloads.
Po zainstalowaniu wszystkich niezbędnych aplikacji możemy przejść do instalacji tej właściwej. W tym celu w wierszu poleceń wykonujemy:
gem install vagrant
Po instalacji Vagranta dodajemy nowy box (wirtualne środowisko) oraz je uruchamiamy:
vagrant box add base http://files.vagrantup.com/lucid32.box vagrant init vagrant up
Wykonanie pierwszego polecenia może zająć nieco czasu, ponieważ powoduje ono pobranie z sieci pliku o rozmiarze około 250MB. Kolejne polecenia wykonają się o wiele szybciej.
Na koniec wystarczy połączyć się po ssh do maszyny wirtualnej i korzystać z niej jak z każdego innego systemu, do którego łączymy się po ssh (na Windowsie będziemy potrzebować Putty).
Dokładny opis instalacji oraz łączenia się do maszyny wirtualnej znajdziecie na stronie projektu – vagrantup.com. Warto również obejrzeć film, prezentujący możliwości Vagranta.
Przejrzałem szybko screencasta, i muszę powiedzieć, że wygląda naprawdę fajnie. W wolnej chwili obadam sobie, zwłaszcza deploy na „”zdalną” maszynę z poziomu PHPStorma i wydajność. Dzięki za linka!
A można w skrócie prosić o co z tym biega? Wiem, że mogę przeczytać to wszystko na stronie vagranta, ale po takim wpisie u Ciebie oczekiwałbym chociać pobieżnego wyjaśnienie co to robi. Bo na chwilę obecną nie mam bladego pojęcia. Środowisko developerskie to ja mogę virtualbox postawić i taki vagrant mi do tego nie jest potrzebny. Co więc to coś robi, że jest jednak takie fajne?
W skrócie chodzi o to, że na maszynie wirtualnej tworzymy środowisko uruchomieniowe (apache + php + mysql lub dowolne inne). Z lokalnej maszyny możemy się do niego łączyć po ssh (na porcie 2222) lub przez przeglądarkę (port 8080).
Dlaczego to jest takie fajne? Ponieważ kod, który piszesz, piszesz na maszynie lokalnej, a uruchamiasz na maszynie
zdalnejwirtualnej (bez kopiowania, przenoszenia i wszystkich tych zbędnych czynności). Poza tym mamy gotowe cookbooks, które po prostu dodajemy do naszej maszyny i możemy cieszyć się np mongoDB.VirtualBox + Shared Folders + Debian = „kod piszesz na maszynie lokalnej, a uruchamiasz na
zdalnejwirtualnej”Jedyne co wygląda ciekawie, to cookbooks, ale nie chciałoby mi się grzebać w dokumentacji Vagranta, żeby to wszystko poprawnie skonfigurować.
Faktycznie, pomysł ma kilka ciekawych zastosowań i może być rozwiązaniem paru problemów związanych z pracą zespołową. Myślę, że jest to dobra rzecz zwłaszcza dla użytkowników Windowsów, który – jak każdy kto programował nieco dłużej w innym systemie doskonale wie – do programowania w ogóle się nie nadaje
. Dzięki temu można uniknąć choćby sytuacji z nieogarniętym programistą tłumaczącym się, że „sorry, zapomniałem że wielkość liter w nazwie pliku MA znaczenie”
.
Natomiast pod Linuksem… hmmm… zastosowania też się znajdą, ale niekoniecznie z takich powodów, jakie są wymienione na stronie. Możliwość testowania w zmieniającym się środowisku, bez ścisłego przywiązania do konkretnej wersji to moim zdaniem zaleta, a nie wada. Po pierwsze, jest to dobra szkoła pisania przenośnego kodu, a po drugie nie ma później niespodzianek na produkcji w stylu „o matko, zaktualizowaliśmy PHP 5.3.5 do 5.3.6 i wszystko się wysypało”
.
Ech, trzeba sobie kupić wreszcie procesor ze sprzętowym wsparciem wirtualizacji…
.
@Zyx
Oj tam zaraz się Windows nie nadaje
A na poważnie, to upatruję w tym narzędziu rozwiązanie problemu konieczności konfigurowania środowiska wielu osobom pracującym nad jednym projektem. Nawet w przypadku Linuxa, nie zawsze jest możliwość/chęć odwzorowania środowiska produkcyjnego. Dzięki Vagrantowi stworzone zostanie jedno środowisko, z którego każdy będzie mógł skorzystać.
Czy się sprawdzi w praktyce, zobaczymy za jakiś czas. Na razie jestem na etapie poznawania Ruby, by rozumieć co się dzieje pod maską.
Hm.. ustawienie połączenia po SSH do virtualbox to nie jest nic wielkiego. Każdy port można bez problemu przekierować – pracuję tak co dzień.
Wielkość liter, to chyba kwestia świadomości – czy na Windowsie jestem, czy na linukise, muszę o tym pamiętać
Sprzętowe wsparcie wirtualizacji jest dobre. Problem robi się wtedy, kiedy jest ciepło i laptop grzeje – pracując za dwóch
…na to tez mam rozwiązanie,
Rozwiązanie na pewno ciekawe, aczkolwiek mam na swoim serwerze lokalnym zduplikowaną konfigurację tego, co jest na zdalnym, dzięki czemu unikam problemów z późniejszym deployem. Zresztą i tak używam maszyny Windowsowej tylko do pisania kodu i wstępnego testowania – wszystko potem i tak instaluję na jakiejś testowej domenie i dopiero tam sprawdzam, jak wszystko działa.
Myślę, że na pewno warto spróbować pracy z tym narzędziem, na pewno też wiele rzeczy będzie zautomatyzowanych, ale tak jak przedmówcy uważam, że to samo da się osiągnąć wykorzystując VirtualBoksa.
@Zyx: Polecam Core i7 2600k. ;] http://ark.intel.com/Product.aspx?id=52214
Wersje k mają odblokowany mnożnik, ale za to niepełną obsługę wirtualizacji
Intel® Virtualization Technology for Directed I/O (VT-d) – No
Chociaż pewnie dla takich prostych zastosowań to nie ma znaczenia.
@Theq: Przyznam, że nie jestem ekspertem w takich sprawach – czym się różni VT-x od VT-d? Bo jakoś ten opis na stronie Intela do mnie nie przemawia.
nie wiem w czym tutaj ułatwienie i odkrycie.
mam podobne zdanie jak @nospor – jeśli nie możemy pozwolić sobie na publiczną maszynę developerską, można samemu spreparować wirtualną lokalną dostosowaną do własnych potrzeb – coś innego zamiast apache, inna wersja php itd.
Coś co bardziej oddaje produkcję, niż kogoś twór.
Dlatego wolę AMD – mniej kręcę.
Jeśli dobrze kojarzę to Vt-x umożliwia bezpośredni dostęp tylko do procka, Vt-d do pozostałości
I Vagrant to właśnie robi, przy czym jest znacznie prostszy w konfiguracji i nie wymaga wiedzy z zakresu administracji serwerem. Dla mnie jest to wygodniejsze niż ręczne stawianie serwera.
No tak. Kto co lubi.
Ja sobie nie wyobrażam pracy na takim cudzym gotowcu.
Mimo wszystko samemu trzeba skonfigurować serwer web, czy php wg specyfikacji serwera produkcyjnego.