Vagrant

Készítsünk saját fejlesztői környezetet!

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:

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.

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!