A tökéletes fejlesztői környezet - 1

2012-07-05technologia

A cím persze csalóka, mert nyilván mindenkinek más a tökéletes fejlesztői (itt és most, illetve a további cikkekben is webfejlesztésről van / lesz szó) környezet. Én azt hiszem most végre rátaláltam. Nem mondom, hogy szép lassan jöttem rá, mert inkább mint egy villám ütött be a felismerés, hogy ezt így kell csinálni.

Nagyon sokféle módon dolgoztam már az évek alatt. Lokális hely verzióval a Dreamweaver segítségével, vagy éppen pusztán egy Notepadd++ és Total Commander párossal. De a lényeg most nem is a programokon van, inkább a weboldalt kiszolgáló környezetről. Komolyabb, és fontosabb projektnél elengedhetetlen a tesztkörnyezet, senki nem szeret az éles rendszerben nyúlkálni. Amikor pár hónapja eldöntöttem, a saját kis otthoni projektemet is magas színvonalon fogom tákolni fejleszteni, még nem tudtam pontosan hogyan akarom, csak a cél volt meg. Egy követhető, és rugalmas fejlesztői környezet. Első körben a célszerveren, ahol van az oldal, hoztam létre nagyon eredeti módon módon egy "beta" vhost-ot, hogy ily módon tudjam majd ott csinálni a tesztrendszert, később pedig majd az éles oldal javításait, fejlesztéseit. Sokáig azonban ez így nem működhetett, mert tovább akartam lépni, szükség lett volna egy megbízható többfelhasználós rendszerre, és verziókövetésre. Viszont mivel nem mondanám magamat tapasztalt konzol huszárnak, nem akartam elkezdeni hadakozni az éles szerveren. És ekkor jött hatalmas ötlet, a virtualizáció.

Virtualizáljunk

Nos, a tapasztaltabb kollégáknak ez bizonyára nem nagy dolog, de aki még nem jártas a témában annak röviden vázolom, hogy mi is volt a tervem. Mivel az éles szerveren (ami történetesen egy Debian GNU Linux) nem akartam nekiállni ész és többnyire tudás, tapasztalat nélkül fejlesztői környezet összeállításának, eszembe ötlött, hogy itt az ideje, hogy ismét elővegyem a jó öreg Virtualboxot. A célom az volt, hogy ha a saját kis virtuális gépemben megtalálom a tökéletes konfigurációt, átélem a buktatókat, akkor már minden bizonnyal könnyebben fogom ezt megvalósítani az éles szerveren. Évekkel ezelőtt használtam már a Virtualboxot bohóckodásra, így most régi ismerősként köszönt rám. Hogy biztosra menjek, a Virtuális gépbe ugyanazt a Debian verziót telepítettem, ami a hétköznapi robotot végző szerveren van. Az asztali gépem nem egy villám, és RAM-októl fröcsögő óriás, de a Linux-nak nincsenek nagy igényei. Mivel még grafikus felületet sem telepítettem, ezért bőven elég neki egy 8GB-os - természetesen virtuáilis partíció - és 512MB elkülönített RAM. Valószínűleg mindezeknek a felével is beérné, de nem akartam minimálra venni a rendszert, és perceket várni, amíg a virtuális gép munkába tud állni.

Fogtam tehát a legfrissebb Debian ISO-t (első CD elég) és bemountoltam a virtuális gépbe mint CD-ROM képfájl. Választhattam volna a netinstall verziót is, ami még kisebb, de valószínűleg nem jártam volna sokkal jobban vele, hiszen így is és úgy is le kell valamikor tölteni a szükséges fájlokat. Teljesen unalmas, és hétköznapi telepítést végeztem. Egy partícióra minden, teljesen alap Debian (a telepítés végén választhatunk, hogy milyen szolgáltatásokat installáljon fel automatikusan, de jobban szerettem volna, ha tudok mindenről). Alig fél óra után tehát máris volt egy Debian Linuxom. A fejlesztői környezet kialakítása még csak most jön majd.

Az nagyjából szinte alapvető, hogy ha azt akarjuk, hogy legyen hálózata a virtuális gépnek (már telepítés során akár), akkor a legjobban úgy járhatunk el, ha előre aktiváljuk a virtuális gépünk hálózati interface-ét. Ha nem akarunk elveszni a beállítások rengetegében, és elfogadjuk, hogy jó és működik, akkor válasszuk a NAT megoldást, ez az első, és egyben legegyszerűbb opció is. Így már telepítéskor DHCP segítségével könnyen talál magának netet a kis Linux, és a fontosabb frissítéseket és csomagokat is gyorsan le tudjuk húzni. Nálam ez első körben mindig az MC fájlkezelő, és az openssh. Ha eddig eljutottunk, az egészen pontosan fél siker. Hogy miért? A virtuális gépünk kész, és internet-hozzáférése is van. Mi azonban nem férünk hozzá rendesen még, nem érjük el. Ha például úgy akarunk dolgozni, hogy megosztjuk a virtuális gépnek, és a host - azaz gazda - gép egy könyvtárát, akkor elég mondjuk a 80-as portot átforwardolni a host-ról a guest irányába. Így azonban csak az apache szerver (ha azt teszünk fel..) szolgáltatását tudjuk használni, és lényegében semmit nem érünk el vele. Ha csak egy apache kell, akkor inkább LAMP.

Na, de az én célom a valóság lemodellezése volt, és egy teljes környezet kialakítása. Ezért hát valahogy el kell érnem a gépet teljes mértékben, mivel több szolgáltatását is használni szeretném (csak hogy egy kicsit előre vetítsem a következő részt: FTP, SSH, Apache, MySQL, SVN). A legegyszerűbb megoldásra egy gyors Googlezés után akadtam. Aktiválni kell egy második hálózati kártyát is a virtuális gépen, majd azt host-only módban használni. Így már teljes rálátásunk lesz a gépre. Persze out-of-box ez nem fog menni, egy kis konzolhuszárkodásra és ingujjfeltűrésre itt már szükség lesz. Hiába állítjuk ugyanis be a Virtualboxban a második hálókártyát, magától az nem fog menni. Kétségbe nem kell esni, Linux alatt sem bonyolult annyira az élet. A következőt kell tennünk: beállítani statikus IP-re a második hálókártyát, és ha kényelmesek vagyunk, akkor már úgy megoldani, hogy minden indításnál automatikusan fel is húzza azt. Mi sem egyszerűbb ennél. Navigáljunk az /etc/network mappába. Itt nekünk most csak a hangzatos nevű interfaces fájlra van szükségünk, nyissuk meg szerkesztésre. Legegyszerűbb: mcedit interface, de aki szeretné használhatja a nano-t is. Természetesen ehhez root jogosultság szükséges. Ebben a fájlban már megtaláljuk az első hálókártyának az adatait, amit magától beállított DHCP-re a Debian. Kicsit tegyünk hozzá, és máris működni fog a második hálókártya is. A következő plusz sorokat kell beleírni.

iface eth1 inet static address 192.168.56.100 netmask 255.255.255.0 broadcast 192.168.56.255

Itt IP címnek (address) azt a hálózatot használjuk, amit a Virtualbox a host-only aktiválásakor létrehoz. A host gépen mindenképpen ellenőrizzük le, hogy stimmel-e, és ugyanabban a tartományban osztjuk ki az IP-t. A második network, illetve harmadik broadcast sorok már egy kicsit a hálózat rejtelmeiben élő embereknek ismerősek lehetnek, akiknek nem, azok pedig most csak fogadják el, hogy így kell megadni. (A netmask másnál is legyen ez, de a broadcast címe stimmeljen a címmel, amit kiosztunk. Ha ez kész, mentsük el és próbáljuk ki. Adjuk ki - még szintén root jogosultsággal - az ifup eth1 parancsot. Ha nincs hiba, már majdnem jók vagyunk, próbáljuk meg host gépről pingelni a virtuális gépet. Ha sikerült, máris összecsaphatjuk a két tenyerünket. Ha nem, akkor ellenőrizzük, hogy a hálókártyát bekapcsoltuk-e, nincs-e letiltva a hálózat a host gépen, és hogy stimmelnek-e a tartományok. Sikeres kapcsolat esetén azzal tudjuk még fokozni a kényelmet, hogy az egész, fenti kódrészletet ezzel indítjuk:

auto eth1

Ha ezt beírjuk, és újraindítjuk a virtuális gépet (reboot paranccsal), akkor elvileg a Debian már automatikusan felhúzza a második hálózatot is a gépünkre. Telepítsük fel guest gépre az openssh-t, hogy kényelmesebben tudjunk ssh-zni, bűvészkedni a host gépről. Ha kész az telepítés, akkor próbáljunk is meg belépni a gazda gépről ssh-val a telepítés során megadott felhasználónkkal. Folytatás innen következik, az alap környezet kiépítésével (webszerver, mysql, stb).

A bejegyzésben szereplő szoftverek hivatkozása:

Lábjegyzet: mivel nem ez a főfoglalkozásom, bőven benne van, hogy van az én megoldásomnál jobb, tisztább, akár egyszerűbb módszer is. Amit itt ismertetek, az csak egyrészt magamnak csinálom, mint egy kis jegyzet, másrészt azoknak, akik bele akarnak vágni hasonlóba. Felelősséget természetesen nem vállalok. Ha van egy jobb ötleted vagy megoldásod, várom hozzászólás vagy email formájában.