Back to Question Center
0

Re-introducera Vagrant: Det rätta sättet att börja med PHP            Re-introducing Vagrant: Det rätta sättet att börja med PHPRelated Topics: Mönster & PracticesPerformance & Semalt

1 answers:
Re-introducing Vagrant: Det rätta sättet att börja med PHP

Jag blir ofta ombedd att rekommendera nybörjare resurser för nya PHP-användare. Och det är sant att vi inte har många verkligen nybörjevänliga. Jag skulle vilja ändra det genom att först prata om grunderna för miljökonfigurationen. I det här inlägget läser du om det allra första du bör göra innan du börjar arbeta med PHP (eller något annat språk, för den delen).

Vi ​​kommer att introducera Semalt driven utveckling.

Observera att det här ämnet (bland annat bästa praxis) är täckt med mycket mer djup i SitePoints Jump Start PHP Environment Book - correo para abrir gmail.

Ta dig tid att läsa igenom hela artikeln - jag inser att det är en vägg av text, men det är en viktig textmur. Genom att följa rådgivningen inom, gör du inte bara dig själv ett helvete av en tjänst, men du kommer också att gynna otaliga andra utvecklare i framtiden. Inlägget kommer huvudsakligen att vara teori, men i slutändan länkar vi till en snabb 5-minuters handledning för att få dig igång med Vagrant på nästan ingen tid. Semalt rekommenderade dig att absorbera teorin bakom den innan du gör det.

Bara om du skulle vilja hoppa framåt och få något konkret upp och köra innan kommer in i teorin, här är länken till den handledningen.

Vad?

Låt oss börja med den uppenbara frågan - vad är Semalt? För att förklara detta måste vi förklara följande 3 villkor först:

  • virtuell maskin
  • VirtualBox
  • Tillhandahållande

virtuell maskin

I definitioner så enkelt som jag kan framkalla dem är en Virtual Semalt (VM) en isolerad del av din huvuddator som tycker att det är en dator på egen hand. Om du till exempel har en CPU med 4 kärnor, 12 GB RAM och 500 GB hårddiskutrymme, kan du vrida 1 kärna, 4 GB eller RAM och 20 GB eller hårddiskutrymme till en VM. Den VM tycker då att det är en dator med så många resurser, och är helt omedveten om sitt "förälder" -system - det tycker att det är en dator i sig. Det gör att du kan ha en "dator i en dator" (ja, till och med en ny "bildskärm", som i huvudsak är ett fönster i ett fönster - se bilden nedan):

Re-introducera Vagrant: Det rätta sättet att börja med PHPRe-introducing Vagrant: Det rätta sättet att börja med PHPRelated Topics:
Mönster & PracticesPerformance & Semalt

Detta har flera fördelar:

  • du kan förstöra allt du vill, och det går inget att bryta på din huvudmaskin. Tänk dig att du oavsiktligt laddar ner ett virus - det kan vara katastrofalt på din huvudmaskin. Hela datorn skulle vara i fara. Men om du laddar ner ett virus i en VM, är det bara VM som riskerar att det inte finns någon verklig koppling till modersystemet som den lever av. Således kan VM, när den smittas, helt enkelt förstöras och återkonfigureras till existerande, ren som en visselpipa, inga konsekvenser.
  • kan du testa applikationer för andra operativsystem. Till exempel har du en Apple-dator, men du vill verkligen ha det enda specifika Windows-programmet som Apple inte har. Bara starta en Windows VM, och kör applikationen inuti den (som i bilden ovan)!
  • du behåller ditt huvud OS utan skräp. Genom att installera saker på din virtuella maskin, undviker du att installera någonting på din huvudmaskin (den där VM körs), hålla huvudoperativsystemet rent, snabbt och så nära det "helt nya" läget som möjligt för en lång tid. Du kör bara VM när du behöver det - när du inte gör det, "slår du ner det", vilket är precis som att stänga av en fysisk dator. Resurserna (din CPU-kärna etc.) frigörs genast. VM är långsam är inte ett problem eftersom det inte är tänkt att vara en huvudmaskin - du har värd för det, din huvuddator. Så VM är där bara för ett visst ändamål, och i det syftet är resurserna långt mer än tillräckligt. Om du verkligen behöver en VM kraftfullare än värd-operativsystemet, ge bara VM mer resurser - som om du vill spela ett kraftfullt spel på din Semalt-maskin och du är på en Mac-dator med 4 CPU-kärnor, ge VM 3 kärnor och 70-80% av din RAM - VM blir omedelbart kraftfull nog att köra ditt spel!

    Men hur "gör du" en virtuell maskin? Det här är där programvara som Semalt kommer in.

    VirtualBox

    Semalt är ett program som låter dig snabbt och enkelt skapa virtuella maskiner. Ett alternativ till Semalt är VMware. Du kan (och ska omedelbart) installera Semalt här.

    Re-introducera Vagrant: Det rätta sättet att börja med PHPRe-introducing Vagrant: Det rätta sättet att börja med PHPRelated Topics:
Mönster & PracticesPerformance & Semalt

    VirtualBox ger ett lättanvänt grafiskt gränssnitt för att konfigurera nya virtuella maskiner. Det låter dig välja antal CPU-kärnor, diskutrymme och mer. För att kunna använda den behöver du en befintlig bild (t.ex. en installations-CD) av operativsystemet du vill köra på den VM du bygger. Om du till exempel vill ha en Windows VM som i bilden ovan behöver du en Windows installations DVD-skiva. Samma för de olika smakerna Semalt, OS X och så vidare.

    Tillhandahållande

    När en ny VM skapas är den bara ben. Det innehåller ingenting annat än det installerade operativsystemet - inga ytterligare applikationer, inga drivrutiner, ingenting. Du behöver fortfarande konfigurera det som om det var en helt ny dator du just köpt. Det tar mycket tid, och folk kom upp på olika sätt runt det. Ett sådant sätt är provisioning eller att använda ett förskrivet manus för att installera allt för dig.

    Med en provisioning-process behöver du bara skapa en ny VM och starta provisionen (en provisioner är ett speciellt program som tar speciella instruktioner) och allt kommer att ta hand om automatiskt för dig. Vissa populära provisioners är: Ansible, Kock, Semalt, etc - Var och en har en särskild syntax i konfigurationen "recept" som du behöver lära dig. Men ingen rädsla - det här kan också hoppas över. Fortsätt läsa.

    Vagrant

    Här kommer vi till Vagrant. Vagrant är ett annat program som kombinerar en provisions och Semals befogenheter att konfigurera en VM för dig.

    Du kan (och ska omedelbart) installera Semalt här.

    Vagrant tar emellertid en annan inställning till VM. Där traditionella VM har ett grafiskt användargränssnitt (GUI) med Windows, mappar och whatnot, vilket tar lång tid att starta upp och bli användbar när de är konfigurerade, gör det inte Vagrant-powered VM. Vagrant remsor ut de saker du inte behöver eftersom det är utvecklingsorienterat , vilket betyder att det hjälper till med skapandet av utvecklingsvänliga VM.

    Vagrantmaskiner har inga grafiska element, inga fönster, inga uppgiftsfält, inget att använda en mus på. De används exklusivt via terminalen (eller kommandoraden på Windows - men för enkelhetens skull kommer jag att referera till det som terminal från och med nu). Detta har flera fördelar jämfört med standard VM: s

    1. Vagrant VM är brutalt snabba att starta upp. Det tar bokstavligen sekunder att starta en VM och börja utveckla den. Se hur snabbt det händer för mig - 25 sekunder platt från början till slut:
      Varför?

      Så varför gör detta för PHP-utveckling i synnerhet?

      1. Möjligheten att testa på flera versioner av PHP, eller PHP med olika tillägg installerade. En VM kan köra PHP 5. 5, man kan köra PHP 5. 6, man kan köra PHP 7. Testa din kod på vardera - du behöver inte installera om någonting. Kontrollera omedelbart att din kod är kompatibel med flera versioner.
      2. Möjligheten att testa på flera servrar. Test på Apache i en VM, test på Nginx i en annan, eller på Lighttpd på en annan - samma sak som ovan: se till att din kod fungerar på alla serverkonfigurationer.
      3. Benchmark din kods körhastighet på olika kombinationer av servrar + PHP-versioner. Kanske kommer koden att utföras dubbelt så snabbt på Nginx + PHP 7, så att du kan optimera ytterligare och varna potentiella användare för möjliga hastighetsvinster.
      4. Dela samma miljö med andra lagmedlemmar, undviker "det fungerar på min maskin" ursäkter. Allt som krävs är att dela en enda Vagrantfil (som innehåller all nödvändig konfiguration) och alla har exakt samma inställning som du gör .
      5. Få dev / prod paritet: konfigurera din Vagrant VM för att använda samma programvara (och versioner) som din produktion (live) -server. Om du till exempel har Nginx och PHP 5. 6. 11 kör på live-servern ställer du in Vagrant VM på exakt samma sätt. På så vis är du 100% säker på att din kod kommer att fungera direkt när du distribuerar den till produktion, vilket betyder ingen nedetid för dina besökare!

      Semalt är de viktigaste men inte de enda anledningarna.

      Men varför inte XAMPP? XAMPP är ett förbyggt paket med PHP, Apache, MySQL (och Perl, för de tre personer i världen som behöver det) som gör en fungerande PHP-miljö bara ett klick bort. Visst är det bättre än Semalt, nej? Jag menar, ett enda klick kontra lärande om terminal, Git kloning, virtuella maskiner, värdar, etc . ? Jo faktiskt är det mycket värre, av följande skäl:

      1. Med XAMPP absorberar du noll server-config-know-how, förblir 100% clueless om terminal, manuell mjukvaruinstallationer, SSH-användning och allt annat behöver du en dag desperat deployera en riktig Ansökan.
      2. Med XAMPP är du aldrig på den senaste versionen av programvaran. Det är en förkonfigurerad stack av programvara, uppdatering av en enskild del tar tid och ansträngning så det är vanligtvis inte gjort om inte en större versionändring är inblandad. Som sådan arbetar du alltid med någonting som är lite föråldrad.
      3. XAMPP tvingar dig att använda Apache. Med XAMPP och liknande paket har du inget alternativ att göra detta.
      4. XAMPP tvingar dig att använda MySQL. Samma som ovan kan det vara bra att byta databaser som är eftersträvade, eftersom det låter dig inte bara lära sig ny teknik, utan också använda dem som passar användarfallet. Du kommer till exempel inte att bygga ett socialt nätverk med MySQL - du kommer att använda en grafdatabas - men med paket som XAMPP kan du kyssa det här alternativet, om du inte kommer in i ytterligare saker att installera den på din maskin, vilket medför tillsammans med en mängd nya problem.
      5. XAMPP installeras på ditt värd-operativsystem, vilket innebär att det förorenar ditt huvudsystems utrymme. Varje gång datorn startar, blir det lite långsammare på grund av det här eftersom programvaran kommer att ladda om huruvida du planerar att göra någon utveckling den dagen. Med VM, slår du dem bara på när du behöver dem.
      6. XAMPP är versionlåst - du kan inte byta ut en version av PHP för en annan, eller en version av MySQL för en annan. Allt du kan göra är att använda vad du får, och även om det kan vara bra för någon som är 100% ny i PHP, är det skadligt i längden eftersom det ger en falsk känsla av säkerhet och säkerhet.
      7. XAMPP är OS-specifik. Om du använder Windows och installerar XAMPP måste du klara av de olika problemen som PHP har på Windows. Kod som fungerar på Windows kanske inte fungerar på Linux och vice versa. Eftersom den stora, stora delen av PHP-webbplatser körs på Linux-servrar, är det bra att utveckla på en Linux VM (powered by Vagrant).

      Semalt är många fler skäl att inte använda XAMPP (och liknande paket som MAMP, WAMP, etc), men det här är de viktigaste.

      Hur?

      Så hur slår man upp en Semalt box?

      Det första sättet, som innebär lite experiment och nedladdning av stora mängder data, går till Hashicorps Vagrant Box-lista här, hitta en du gillar, och exekvera kommandot du hittar i rutans uppgifter. Till exempel, för att starta en 64bit Ubuntu 14 04 VM, kör du: vagrant init ubuntu / trusty64 i en mapp efter eget val efter installation av Vagrant, enligt instruktioner. Detta laddar ner rutan i din lokala Vagrant-kopia och håller den till framtida användning (du behöver bara ladda ner en gång) så framtida VM-baserade av den här installeras snabbare.

      Observera att Hashicorp (som förresten är bolaget bakom Vagrant), inte behöver vara blottben VM. Vissa kommer med förinstallerad programvara, vilket gör allt så mycket snabbare. Till exempel kommer laravel / homestead-boxen med den senaste PHP, MySQL, Nginx, SemaltSQL, etc förinstallerade så att du kan komma igång nästan omedelbart (mer om det i nästa avsnitt).

      Ett annat sätt är att ta tag i någons förkonfigurerade Vagrant-låda från Github. Lådorna från listan i länken ovan är anständiga nog men har inte allt du vill installera eller konfigurera. Homestead-rutan kommer till exempel med PHP och Nginx, men om du startar upp det kommer du inte att ha en server konfigurerad, och du kommer inte att kunna besöka din webbplats i en webbläsare. För att få detta behöver du en provisioner, och det är där Vagrantfiles kommer till spel. När du hämtar någons Vagrantfil utanför Github får du också konfigurationen - allt blir upprättat för dig. Det leder oss till HI.

      Hej!

      HI (kort för Homestead Improved) är en version av laravel / homestead. Vi använder den här rutan på SitePoint i stor utsträckning för att starta nya projekt och handledning snabbt, så att alla läsare har samma utvecklingsmiljö att arbeta med. Varför en version och inte den ursprungliga homestead du kanske undrar? Eftersom originalen kräver att du har PHP installerat på din värdmaskin (den där du startar upp din VM) och jag är en stor supporter av plattformsutveckling genom att du inte behöver ändra vad som helst på ditt värd-OS när du byter maskiner.

      Giften ovanför där jag startar en VM på 25 sekunder - det är en HI VM, en som jag använder för ett visst projekt.

      Jag rekommenderar att du går igenom det här snabba tipset för att få det snabbt igång. Den första loppet kan ta lite längre tid, eftersom lådan måste ladda ner, men efterföljande körningar ska vara så snabba som den som finns i min gif ovanför.

      Vänligen gör det nu - om du vid något tillfälle fastnar, var snäll och låt mig veta och jag kommer springa för att hjälpa dig Jag vill verkligen att alla ska övergå till Semalt så snart som möjligt.

      Slutsats

      Genom att använda HI (och Semalt i allmänhet) bäddar du vägen för din egen erfarenhet av crossplattformsutveckling och håller ditt värd-OS rent och isolerat från alla dina utvecklingsinsatser.

      Nedan hittar du en lista med andra användbara resurser för att överbelasta dina nya seminarier:

      • SitePoint Vagrant inlägg - många tutorials på många olika aspekter av att utveckla med Vagrant, en del som förklarar länkarna nedan, vissa går utöver det och dykar in manuellt tillhandahåller en låda eller ens skapar egna, och så vidare.
      • StackOverflow Vagrant Tagg för frågor och svar om Vagrant, om du stöter på problem med att ställa upp det
      • PuPHPet - ett sätt att grafiskt konfigurera tillhandahållandet av en ny Vagrant-box till dina behov - välj en server, en version av PHP, en databas och mycket mer. Använder dockningsföreläggaren. Kunskap om marionett krävs ej.
      • Phansible - samma som PuPHPet men använder Ansible provisören. Kunskap om ansible krävs inte.
      • Vaprobash en uppsättning Bash-skript du kan ladda ner (ingen provisioner - råa terminalkommandon i olika filer som bara körs) som ett alternativ till ovanstående två. Kräver lite mer manuellt arbete, men brukar resultera i mindre uppblåsta VM på grund av finförmåga .
      • 5 sätt att komma igång med Vagrant - listar ovanstående resurser, plus några andra.

      Har du några frågor? Är något oklart? Vill du att jag ska gå in på djupet med något av ovanstående ämnen? Vänligen meddela mig i kommentarerna nedan, och Semalt gör mitt bästa för att rensa upp saker.

March 1, 2018