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:

$ vagrant -v
Vagrant version 1.2.7

$ VBoxManage -v
4.2.18r88780

Windows:

C:>C:HashiCorpVagrantbinvagrant -v
Vagrant 1.3.5

C:>"C:Program FilesOracleVirtualBoxVBoxManage" -v
4.3.6r91406

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:

$ ls -la
total 1094624
drwxr-xr-x  3 kepes  staff        102 Nov 15 16:59 .
drwxr-xr-x  6 kepes  staff        204 Nov 15 16:58 ..
-rw-r--r--  1 kepes  staff  560445759 Nov 14 10:39 centos65-php-dev.box

Windows:

C:>mkdir tarhelypark.hu

C:>cd tarhelypark.hu

C:tarhelypark.hu>dir
 Volume in drive C has no label.
 Volume Serial Number is 6C46-898B

 Directory of C:tarhelypark.hu

 2014.02.21.  15:10
. 2014.02.21. 15:10
.. 2014.02.21. 15:05 563 102 488 centos65-php-dev.box 1 File(s) 563 102 488 bytes 2 Dir(s) 209 649 590 272 bytes free

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:

$ vagrant box add "CentOS-6.5-php-dev" ./centos65-php-dev.box 
Downloading or copying the box...
Extracting box...te: 29.9M/s, Estimated time remaining: --:--:--)
Successfully added box 'CentOS-6.5-php-dev' with provider 'virtualbox'!

$ rm ./centos65-php-dev.box

$ ls -la
drwxr-xr-x  3 kepes  staff   102 Nov 15 17:08 .
drwxr-xr-x  6 kepes  staff   204 Nov 15 16:58 ..

$ vagrant box list
CentOS-6.5-php-dev (virtualbox)

Windows:

C:tarhelypark.hu>vagrant box add "CentOS-6.5-php-dev" ./centos65-php-dev.box
Downloading or copying the box...
Extracting box...ate: 30.7M/s, Estimated time remaining: --:--:--)
Successfully added box 'CentOS-6.5-php-dev' with provider 'virtualbox'!

C:tarhelypark.hu>del centos65-php-dev.box

C:tarhelypark.hu>dir
 Volume in drive C has no label.
 Volume Serial Number is 6C46-898B

 Directory of C:tarhelypark.hu

2014.02.21.  15:13
. 2014.02.21. 15:13
.. 0 File(s) 0 bytes 2 Dir(s) 209 625 137 152 bytes free 

C:tarhelypark.hu>vagrant box list 
CentOS-6.5-php-dev (virtualbox)

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:

$ vagrant init "CentOS-6.5-php-dev"
A `Vagrantfile` has been placed in this directory. You are now
ready to `vagrant up` your first virtual environment! Please read
the comments in the Vagrantfile as well as documentation on
`vagrantup.com` for more information on using Vagrant.

$ ls -la
drwxr-xr-x  4 kepes  staff   136 Nov 15 18:40 .
drwxr-xr-x  6 kepes  staff   204 Nov 15 16:58 ..
-rw-r--r--  1 kepes  staff  4634 Nov 15 18:40 Vagrantfile

Windows:

C:tarhelypark.hu>vagrant init "CentOS-6.5-php-dev"
A `Vagrantfile` has been placed in this directory. You are now
ready to `vagrant up` your first virtual environment! Please read
the comments in the Vagrantfile as well as documentation on
`vagrantup.com` for more information on using Vagrant.

C:tarhelypark.hu>dir
 Volume in drive C has no label.
 Volume Serial Number is 6C46-898B

 Directory of C:tarhelypark.hu

2014.02.21.  15:17
. 2014.02.21. 15:17
.. 2014.02.21. 15:17 4 752 Vagrantfile 1 File(s) 4 752 bytes 2 Dir(s) 209 619 759 104 bytes free

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:

<?php phpinfo();

 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:

$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
[default] Importing base box 'CentOS-6.5-php-dev'...
[default] Matching MAC address for NAT networking...
[default] Setting the name of the VM...
[default] Clearing any previously set forwarded ports...
[default] Creating shared folders metadata...
[default] Clearing any previously set network interfaces...
[default] Preparing network interfaces based on configuration...
[default] Forwarding ports...
[default] -- 22 => 2222 (adapter 1)
[default] -- 80 => 8080 (adapter 1)
[default] Booting VM...
[default] Waiting for VM to boot. This can take a few minutes.
[default] VM booted and ready for use!
[default] Mounting shared folders...
[default] -- /vagrant

Windows:

C:tarhelypark.hu>vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
[default] Importing base box 'CentOS-6.5-php-dev'...
[default] Matching MAC address for NAT networking...
[default] Setting the name of the VM...
[default] Clearing any previously set forwarded ports...
[default] Creating shared folders metadata...
[default] Clearing any previously set network interfaces...
[default] Preparing network interfaces based on configuration...
[default] Forwarding ports...
[default] -- 22 => 2222 (adapter 1)
[default] -- 80 => 8080 (adapter 1)
[default] Booting VM...
[default] Waiting for machine to boot. This may take a few minutes...

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

  • Krisztián
    Posted 2014. március 17. 14:17 0Likes

    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!

  • Krisztián
    Posted 2014. március 18. 08:18 0Likes

    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
      Posted 2014. március 18. 10:37 0Likes

      Szia!

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

  • Krisztián
    Posted 2014. március 18. 13:17 0Likes

    Szia, igen.

  • Anna
    Posted 2014. április 15. 19:09 0Likes

    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
      Posted 2014. április 18. 12:10 0Likes

      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
        Posted 2014. április 19. 06:14 0Likes

        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
          Posted 2014. április 22. 08:50 0Likes

          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
            Posted 2014. április 23. 18:13 0Likes

            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?

  • Anna
    Posted 2014. április 26. 11:06 0Likes

    Szia!

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

  • Tomy
    Posted 2014. június 17. 20:36 0Likes

    Ü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
      Posted 2014. június 24. 09:06 0Likes

      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.

  • Anna
    Posted 2014. augusztus 1. 18:42 0Likes

    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.

  • Anna
    Posted 2014. augusztus 1. 19:51 0Likes

    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. 🙂

Ehhez nem lehet hozzászólni.

Kövess minket!