Menu

PHP fejlesztői környezet saját gépen

Néha hetente több alkalommal is felvetődik a kérdés ügyfeleink részéről, hol és hogyan fejlesszék weboldalukat. Mi mindig azt javasoljuk, hogy a fejlesztés saját gépen történjen, mert egyrészt nem szeretné a mindenki számára elérhető weboldalt üzemképtelenné tenni, másrészt vannak esetek, amikor jobb ha nem a tárhely szerveren zajlik az oldal tesztelése. Saját gépen fejleszteni körülményes is lehet, mert ahhoz, hogy a Tárhelypark szerverekhez hasonló környezetet produkáljunk saját gépünkön, számos szoftvert telepíteni kell. Szerencsére most egy olyan megoldást mutatok be egy rövid cikksorozat első lépéseként, ahol nincs szükség hosszadalmas telepítésre, és aminek a végén mindenki saját fejlesztői környezetében tesztelheti weboldalát.

Mi az a fejlesztői környezet?

A fejlesztői környezet (developer system, developer environment, dev) egy olyan szoftverhalmaz, amit csak azért telepítünk fel, hogy a készülő szoftvert tesztelni és fejleszteni tudjuk, lehetőleg egyszerűen és gyorsan. Ez a környezet soha nem elérhető a látogatóknak, és soha nem is szabad összekeverni az éles, működésben levő rendszerünkkel, amit a felhasználóink látnak. Éles környezeten nem tesztelünk, nem próbálgatunk, csak azok a dolgok kerülnek oda, amiket már leteszteltünk a fejlesztői környezetben és jól működnek. Ennek az általános képnek természetesen vannak szintjei. A program bonyolultságától és attól függően mennyire stabil rendszert szeretnénk, lehetnek más környezetek is a képben, de ennek elemzésétől most az egyszerűség kedvéért eltekintek.

Milyen programokat kell telepítened?

A fejlesztői környezet bárhol kialakítható, de most a saját gépedre fogjuk telepíteni, hogy a fejlesztés és tesztelés egyszerű és gyors legyen. Már elő is készítettem egy feltelepített szervert, amit virtualizációval fogsz a gépedre feltelepíteni, így nem kell minden szoftvert egyesével telepítened.

A virtualizáció azt jelenti, hogy a saját operációs rendszereden (akár windows-on is) fogsz futtatni egy másik operációs rendszert, ami úgy fog viselkedni mintha egy másik számítógép lenne, de közben saját gépedet használhatod saját programjaiddal.

Jó tudni!

A telepítésbe bátran belevághatsz! A virtualizáció nem egy teljesen új operációs rendszer telepítés, jelenlegi operációs rendszeredet nem módosítjuk, nincs szükséged új partícióra sem, és a gépedet sem kell újraindítani. A telepítés kizárólag egy szoftvert telepít jelenlegi rendszeredre, amit utána akár törölhetsz is.

Ennek az az előnye, hogy bármikor kikapcsolhatod, így a saját gépeden nem fognak mindenféle adatbázis és webszerverek futni. A megvalósításhoz a VirtualBox-ot fogod használni, amit aztán a Vagrant konfigurációs rendszerrel fogunk konfigurálni és elindítani. Letöltések:

A két programot fel kell telepíteni. A telepítés elvégezhető Windows-on, Linux-on és OSX-en is. Én OSX-en dolgozom, így lehetnek kisebb eltérések például windows-on. Ha minden jól van feltelepítve, akkor a következő parancsoknak működniük kell a parancssorban vagy terminálban (a verziószámok eltérhetnek):
Linux/OSX:

Windows:

A fejlesztői környezet előkészítése

A VirtualBox és Vagrant telepítése után szükséged van rá, hogy ezeket a rendszerek bekonfiguráld. Ez nem nagy dolog, előre létrehoztam a szükséges fájlokat, csak le kell töltened innen (http://bit.ly/1n6YmFw) egy újonnan létrehozott könyvtárba (kb. 550mb). Legyen az új könyvtár neve például a domain neved, én tarhelypark.hu-nak neveztem el. Ez lesz a fejlesztői környezeted könyvtára. Ha belépsz a könyvtárba, akkor a fájl letöltése után ez fogad:
Linux/OSX:

Windows:

A  centos65-php-dev.box fájl az operációs rendszer képe (image fájl vagy box), amit a Vagrant-al fogsz telepíteni. Ebben a fájlban én már előre beállítottam egy olyan CentOS Linux operációs rendszert Apache, PHP és MySQL programokkal, ami nagyon hasonlít a Tárhelypark szervereinek környezetére.

Tehát a saját gépeden amin Windows, Linux vagy OSX van, fog futni egy CentOS Linux operációs rendszer, és a virtualizáció miatt azt fogja hinni, hogy egy saját különálló gépen fut. Elsőre ijesztő, de nem kell félni tőle. A virtualizáció a barátunk!

Telepítsük hát egyetlen utasítással új oprendszerünket, és utána a fájlt törölhetjük is, már nem lesz rá szükségünk.
Linux/OSX:

Windows:

Négy parancsot kellett kiadnod, ezek magyarázata:

  • Hozzáadtad a Vagrant-hoz a kép fájlt
  • Letörölted a letöltött fájlt, mert már amúgy is hozzáadtad, ne foglalja a helyet
  • Listáztad a könyvtárat, üres
  • Lekérdezted milyen box (operációs rendszer kép) van fenn a Vagrant-ban

Jó tudni!

A fentebbi Vagrant telepítési lépéseket nem szükséges többször elvégezni, a hozzáadott Box használható ezentúl a többi projektünknél is.

A környezet létrehozása

Mielőtt még telepítenéd saját weblapodat vagy új CMS-t rendszeredet, teszteljük le, hogy minden megfelelően működik-e! Ehhez egy egyszerű phpinfo() parancsot fogunk használni.

Először is a Vagrant-ot kell utasítanunk, hogy hozza létre nekünk a szükséges konfigurációs fájlokat.
Linux/OSX:

Windows:

Az első utasítás inicializálja a konfigurációs fájlt úgy, hogy az előbb létrehozott CentOS-6.5-php-dev nevű Box-ot használja. A második utasítással csak kilistázod mi is van most a könyvtárban.

Látszik, hogy létrejött egy Vagrantfile nevű konfigurációs fájl, ami azt tartalmazza, hogy a virtuális gép hogyan fog elindulni.

Most nyisd meg kedvenc szövegszerkesztődet és hozz létre egy phpinfo.php nevű fájlt ami egyetlen sort tartalmazzon:

 A virtuális számítógép elindítása

Nincs más hátra, mint kipróbálni művünket. A virtuális gépet a vagrant up utasítással indíthatod el.
Linux/OSX:

Windows:

Mi is történt itt most pontosan? Elindult a virtuális szervered, amit rögtön tesztelni is tudsz. Mivel ez egy webszerver, nyiss meg egy böngészőt, és a következő linken máris megjelenik a phpinfo oldal, amit fentebb létrehoztunk: http://localhost:8080/phpinfo.php

A működő gép 80-as HTTP portja a saját géped 8080-as portjára került átirányításra. Ez azért kell, mert általában a 80-as port a saját gépen foglalt másra. Ezért kell a linkben is feltüntetni a 8080-as portot.

Jó tudni!

Ha tűzfal van telepítve gépedre, akkor elképzelhető, hogy nem nyílik meg az oldal. Kapcsold ki a tűzfalat, vagy engedélyezd a 8080-as és 2222-es portokat!

Miért jó a fejlesztői környezet nekem?

A fentebbi telepítési leírásból még nem teljesen egyértelmű, de:

  • Gyakorlatilag nem telepítettél és konfiguráltál szerver programokat, ezeket mind előre telepítettem neked, így pillanatok alatt elindult a gép ahhoz képest, mintha nekiláttál volna egyenként mindent telepíteni.
  • Van egy saját szervered, amit akkor indítasz el amikor tetszik, és ha már nem kell leállítod vagy meg is szüntetheted. Ha legközelebb kell, majd megint elindítod.
  • A weboldalt (jelenleg a phpinfo oldal) a saját gépeden szerkeszted a kedvenc szerkesztő programoddal. Mivel a könyvtárat “bedrótoztuk” a szerverbe, ezért a változások azonnal látszanak, nem kell feltöltés, FTP stb.
  • A szerver programok, Apache, PHP, MySQL nem a te gépedre van telepítve, így ha a virtuális gépet leállítod, nem futnak, nem foglalják a memóriát
  • A virtuális szerver nagyban hasonlít a tárhelypark szerverekhez, így sokkal egyszerűbb a fejlesztés

Néhány hasznos tudnivaló

A fejlesztői környezeted virtuális szerverét a következő parancsokkal tudod vezérelni:

  • vagrant up: létrehozás, indítás
  • vagrant suspend: altatás, a gép nem törlődik, de nem fut
  • vagrant destroy: a gép teljes törlése
  • vagrant ssh: ssh bejelentkezés a gépre

A virtuális gép root jelszava: tmppwd

Hogyan tovább?

A következő cikkekben egy új WordPress telepítést fogok bemutatni, aztán megnézzük, hogyan lehet egy már létező oldalt feltelepíteni a környezetbe. Ha ezzel megvagyunk, akkor néhány hasznos trükköt fogok mutatni, hogyan deríthetők ki egyes tipikus hibák az oldalon.

14 hozzászólás a PHP fejlesztői környezet saját gépen bejegyzéshez

  1. Krisztián hozzászolt:

    Ezzel a hibaüzivel leáll a cucc:

    “C:\web\snokris.com>vagrant box add “CentOS-6.5-php-dev” ./centos65-php-dev.box
    Downloading or copying the box…
    An error occurred while downloading the remote file. The error–:–)
    message, if any, is reproduced below. Please fix this error and try
    again.

    Failed writing body (0 != 16383)”

    Kérek egy kis segítséget! Köszi!

  2. Krisztián hozzászolt:

    Na közben utánajártam, ha a user névben ékezet van, a Vagrant megfekszik. A “.vagrant.d” mappát ki kellett hozni onnan.

    • Péter hozzászolt:

      Szia!

      Ha jól értem a Windows-os usered nevében volt ékezet, és ezt nem bírta. Jól értettem?

  3. Krisztián hozzászolt:

    Szia, igen.

  4. Anna hozzászolt:

    A leírásod alapján elsőre klappolt minden. Már csak azt nem vágom, hogyan tudok ezzel prestashopot működtetni. Lehet róla szó, hogy egy prestashop telepítést is megmutatsz?
    Köszi!

    • Péter hozzászolt:

      Szia!

      Igen, már dolgozok a WordPress leíráson, utána jöhet akár a Prestashop is. Elöljáróban annyit, hogy szerintem elegendő a Prestashop telepítési leírását követned azzal a különbséggel, hogy a kicsomagolt fájlokat nem kell sehova feltöltened, hanem a leírásban szereplő könyvtárba kell másolnod őket.

      • G.Anna hozzászolt:

        Szia!

        Igen, közben arra már rájöttem, hogy melyik mappába kell bemásolnom ahhoz, hogy lássam a böngészőben, azonban ott elakadtam, mikor a presta telepítő ahhoz a részhez ér, hogy adjam meg az adatbázis nevét és az ahhoz tartozó jelszót.
        A tárhelyparkos szerveren ugye tudok létrehozni adatbázist, de itt nem jöttem rá, hogyan kéne. Esetleg erre van ötleted?

        • Péter hozzászolt:

          Itt is hasonlóan lehet létrehozni, a PHPMyAdmin felület telepítve van a gépen. Ezen lehet az adatbázis létrehozni és manipulálni. Itt érhető el: http://localhost:8080/phpmyadmin/
          A felhasználónév és a jelszó megegyezik a cikkeben található root jelszóval. Belépés után hozz létre felhasználót a “Felhasználók” menüpontban és jelöld be a “Azonos nevű adatbázis létrehozása” opciót. Ekkor a felhasználó nevével megegyező adatbázis jön létre.

          • Anna hozzászolt:

            Szia!
            A következő hibát írja ki, ha be szeretnék lépni:

            phpMyAdmin – Hiba
            #2002 – Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (111)
            A kiszolgáló nem válaszol (vagy a helyi kiszolgáló socket nincs megfelelően beállítotva).

            Felhasználónévnek és jelszónak is a tmppwd-t adtam meg.
            Mi lehet a baj?

  5. Anna hozzászolt:

    Szia!

    Újratelepítettem az egészet és most már beenged. Sikerült adatbázist is létrehoznom. 🙂
    Köszi

  6. Tomy hozzászolt:

    Üdv!
    Nagyon szuper leírás, hálásan köszönöm! Először elég döcögősen akart beindulni a parancsok kiadása, de aztán sikerült. Leginkább az eltérések miatt volt a fennakadás. Jelenleg Win8-at használok és PowerShellben (admin jogokkal) nem is akart menni, csak parancssorban. Ezután sikeresen létrehoztam magamnak egy felhasználót a phpmyadminban, majd szintén sikeresen telepítettem a weboldalam egyik mentését (joomla + akeeba backup).
    Viszont meg kell mondanom, hogy localhoston minden sokkal döcögősebben megy, mint távoli szervert használva.
    Próbáltam már wamp-ot is, xampp-ot is, azt azért nem szeretem, mert a mysql lekérdezések és feldolgozások miatt piszkosul lelassul az egész.
    Reméltem, hogy esetleg ezzel a módszerrel majd gyorsabb lesz minden, de sajnos nem. Legalább 3x annyi időbe telik egy oldal letöltése, mint távoli szerverről.
    Az igaz, hogy én sima HDD-t használok, a tárhelyem meg egy SSD tárhely, de nem gondoltam, hogy ennyivel lassabb lesz.
    Marad a tárhelyes megoldás.

    • Péter hozzászolt:

      Első körben azt hiszem, valami lokális problémád van, mert elvileg gyorsabb kellene legyen, hiszen csak te használod (a hdd/sdd mindegy ilyenkor). Lehet gond, hogy kevés a memória vagy a proci a virtuális gépnek. Ha jól emlékszem alapértelmezésben 512Mb-ot és egy procimagot adtam a gépnek a konfigban, amit fentebb húzhatsz a Virtulabox felületén.

      Ha nem segít a dolog, akkor az egy jel is lehet, hogy nem optimális az oldalad. A helyzet ilyenkor az, hogy a szervert is ugyanúgy terheli mint a gépedet, és esetleg nagyobb látogatószámot már nem fog elbírni. Meg kell nézni mi terhel, általában php vagy mysql. Én Joomla esetében a mysql query logot nézném meg, aztán, hogy a php meddig fut. Érdemes utánamenni mi a gond.

      Én a tárhelyen fejlesztést nem szeretem, mert a file módosítás sokkal lassabb, és hiba esetén magával ránthatja a többi oldalt is. Saját fejlesztéseinknek oldalanként külön virtulális gép van, és a szerverre csak akkor megy ki ha minden flottul megy a fejlesztői környezetben.

  7. Anna hozzászolt:

    Szia!
    Valamiért nálam is nagyon lassú, pedig csak az alap prestashopot tettem fel rá. Még új témát, se saját tartalmat, se semmi egyebet nem tettem fel és mégis 10 percekig pörög, mire egy-egy műveletet elvégez. Ilyen lassú a tárhelyen sosem volt.
    Igazából én azért tettem fel ezt a saját környezetet, mert a presta modulokat a tárhelyes suhosin patch nem engedte fordítani és azt a tanácsot kaptam, hogy fordítgassak saját környezetben.
    Azonban ebben a környezetben is ezt írja ki:
    “Warning! Your PHP configuration limits the maximum number of fields allowed in a form: 1000 – max_input_vars
    Please ask your hosting provider to increase the this limit to 1441 at least or edit the translation file manually.”
    Hogy tudom én ezt megemelni? Köszi.

  8. Anna hozzászolt:

    Szia!
    Közben egy olyan gond is lett, hogy a theme-et nem engedte importálni (a tárhelyen engedte), így bemásoltam a fájlokat (ahogy a theme leírásában szerepelt arra az esetre, ha nem lenne importálható), és minden modult egyenként telepítettem, de most az index oldal csak egy fehér semmiség.
    A tárhelyen szépen futott ez a theme az importálás után.
    Az a baj, a tárhelyparkon azért nem tudom használni a prestát, mert a suhosin bezavar, itt a sajátban meg azért nem, mert nem úgy műxik, ahogy a tárhelyen.
    Kezdem kitépni a hajszálaim. 🙂