Vagrant
Ebben a cikkben egy nagyon hasznos programot szeretnék a webfejlesztők figyelmébe ajánlani.
Gyakori probléma, hogy különböző projektjeink különböző környezetben futnak, más-más PHP verzió, eltérő MySql verzió, különböző beállítások. Arról már nem is beszélve, hogy sok Windows-t használó programozó fejleszt Linux-os szerverre. Mindez számtalan problémát okozhat a munkánk során. A Vagrant program erre a problémára ajánl egy rendkívül kényelmes megoldást.
Ahelyett, hogy a gépünkre külön-külön feltelepítünk Apache-t, PHP-t, MySql-t egy komplet virtuális Linux szervert telepítünk. Akár többet is, különböző paraméterekkel.
Mivel munkám során a legtöbbet LAMP környezetben dolgozom, emiatt emeltem ki a fentieket, ám Vagrant segítségével ugyanolyan könnyedén alakíthatunk ki Node.JS-t illetve MongoDB-t használó környezetet.
A Vagrant segít nekünk abban, hogy a lehető legkényelmesebben tudjuk ezeket a programokat felparaméterezni, majd utána egy-egy utasítással mindent telepíthetünk, illetve a szervert elindíthatjuk, illetve megállíthatjuk.
A környezethez tartozó leírófájl egy (vagy több) szöveges fájl, így verziókezelhető, a változások pontosan követhetőek. Illetve a környezet könnyen másolható.
Külön öröm, hogy anélkül tudok új programokkal kísérletezni, hogy a saját gépemet szemetelném vele tele.
Vagrant telepítés
Két programra lesz szükségünk, először a VirtualBox-ot kell feltelepíteni, majd magát a Vagrant-ot. Mindkettő telepítése nagyon egyszerű, néhány Tovább kattintással készen is vagyunk.
Telepítés után ellenőrizzük le, hogy valóban feltelepültek a programok:
vagrant -v
"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" -v
A következő lépés nem lesz mindenkinél kötelező. Nálam, Windows-on az ékezetes felhasználónév problémát okozott, emiatt a VAGRANT_HOME
környezeti változót külön meg kellett adnom. Az értéke a Vagrant program mappája. Enélkül a virtuális szerver telepítése közben a következő hibaüzenetet kaptam: Download failed. Will try another box URL if there is one.
Verziószámok
Sajnos gyakran előfordul, hogy egy-egy Vagrant verzió nem tud helyesen együttműködni egyik vagy másik VirtualBox verzióval. Ilyenkor a legkülönfélébb hibákat szokta produkálni. Gyakori, hogy a kapcsolódás a virtuális géphez időtúllépés miatt meghiúsul. Emiatt én nem a legújabb verziókat töltöm le, hanem a PuPHPet oldalán megnézem az ajánlott verziókat és az ott feltüntetett minimumot választom ki. Azok biztosan kompatibilisek egymással. A PuPHPet-ről lejjebb még lesz szó!
Virtualizáció beüzemelése
Elsőre keressünk egy Vagrantfile-t, amely segítségével felépítjük a virtuális környezetet (ha nem rendelkezel még most Vagrantfile-lal, akkor néhány bekezdéssel lejjebb találsz majd forrást). Az első telepítésnél nem kell megijedni, ez akár 10-15 percet is igénybe vehet. Ebben az időben egy Linux szerver letöltése, majd telepítése is benne lesz. A későbbiekben a már feltelepített rendszer indítása csak néhány másodpercig fog tartani.
A Vagrantfile mellett adjuk ki a következő utasítást és várjunk türelemmel:
vagrant up
Vagrant utasítások
A teljesség igénye nélkül néhány Vagrant utasítás, amellyel gyakran találkozunk:
vagrant up
: indítás (első futtatáskor létrehozás)vagrant suspend
: felfüggesztés (a virtualizáció nem fut, de nem törlődik)vagrant destroy
: a virtualizáció törlésevagrant provision
: a megváltozott Vagrantfile alapján frissíti a virtualizációtvagrant ssh
: ssh bejelentkezés
PuPHPet
Szerencsére ma már számtalan kész, szabadon felhasználható Vargantfile található az Interneten. Akár a GitHub-ról, akár a Bitbucket-ről tölthetünk le különféle verziókat, így nekünk első körben nem szükséges megismerkedni részletesen a Vagrant fájl felépítésével.
Ám, hogy mégis tudjunk saját Vagrant fájlt készíteni, egy egyszerű online alkalmazást szeretnék a figyelmetekbe ajánlani. A puphpet.com oldalon egyszerű kattintgatással összeállíthatjuk a saját fejlesztői környezetünket. Ahogy a nevéből is látszódik elsősorban PHP fejlesztőknek készült az oldal.
Különböző PHP verziók közül választhatunk, vagy akár HHVM-et is telepíthetünk, webszerverek illetve adatbázisok közül is a népszerű programok között válogathatunk.
A letöltött fájlok között egy config.yaml fájlt kell majd szerkeszteni, ha a későbbiekben bármit módosítani szeretnénk.
A YAML fájloktól nem kell megijedni, formailag nagyon hasonló egy formázott JSON fájlhoz, csak nincsenek benne zárójelek. Például, ha még Memcache-t szeretnénk pluszban feltelepíteni, akkor a konfigurációs fájlt az alábbiak szerint kell kiegészíteni.
server: packages: - memcached ... php: ... modules: php: ... - memcache - memcached
Ha a fentiek szerint módosítjuk a konfigurációs fájlt, majd a vagrant provision
utasítás után már használhatjuk is a Memcache-t.
Kapcsolat a saját számítógépünk és a virtuális gép között
Most nekünk két kapcsolódási pont lesz érdekes.
Először, hogy hol találjuk a virtuális szervert? A Vagrant file-ban megadjuk azt az IP címet, amin keresztül a saját gépünkről érhetjük el. (Például a konfigurációs fájlban szerepel, hogy private_network: 192.168.56.101, akkor a http://192.168.56.101 címen a telepített webszerver fog elindulni. Érdemes a hosts fájlban a megadott IP címhez valami barátságosabb címet rendelni.)
A második kapcsolódási pont a saját gépünkön az a mappa, amit a virtuális szerver is használni fog. Ekkor a megszokott környezetben, az eddig használt szövegszerkesztőnkben tudjuk a Linux-os szerver fájljait módosítani. (Lásd a konfigurációs fájlban a synced_folder-nél a source és target értékeket.)
NetBeans plugin
Talán kényelmesebb, ha a Vagrant utasításokat nem kell konzolba beírni, hanem közvetlenül a szövegszerkesztőből kattintgatással érhetjük el. A Vagrant plugin telepítése után először a Vagrant program indító fájlját kell megadni, majd projektenként beállíthatjuk, hogy melyik Vagrantfile tartozik az adott projekthez. Ezután a jobb alsó sarokban megjelenik a virtuális gép állapota, ahol a jobb egérgomb megnyomásával megjelennek a kiadható utasítások.
További beállítások
Végül a helyes működéshez én még az alábbi beállításokat szoktam megnézni, hogy meg lettek-e adva. A vagrant ssh utasítással belépek és az alábbi utasítások eredményét megnézem:
$ cat /etc/resolv.conf nameserver 8.8.8.8 nameserver 8.8.4.4
Zárszó
Talán túlzás nélkül állíthatom, hogy az elmúlt évek egyik leghasznosabb segédeszköze lett számomra a Vagrant. Emiatt mindenkit biztatnék, aki eddig nem ismerte a programot, hogy adjon egy esélyt neki!