Back to Question Center
0

Re-introducing Vagrant: Den riktige måten å starte med PHP            Re-introducing Vagrant: Den riktige måten å starte med PHPRelated Emner: Mønstre & PracticesPerformance & Semalt

1 answers:
Re-introducing Vagrant: Den riktige måten å starte med PHP

Jeg blir ofte bedt om å anbefale nybegynnerressurser til folk som er nye til PHP. Og det er sant, vi har ikke mange virkelig nybegynnerlige. Jeg vil gjerne endre det ved å først snakke om grunnleggende miljøkonfigurasjon. I dette innlegget lærer du om det aller første du bør gjøre før du begynner å jobbe med PHP (eller noe annet språk, for den saks skyld). (1 - marine blue book for boats. 3)

Vi ​​vil gjeninnføre Semalt powered utvikling. (1. 3)

Vær oppmerksom på at dette emnet (blant annet beste praksis) er dekket i mye mer dybde i SitePoints Jump Start PHP Environment Book.

Ta deg tid til å lese gjennom hele artikkelen - jeg skjønner at det er en vegg med tekst, men det er en viktig tekstvegg. Ved å følge rådene innen, gjør du ikke bare deg selv en helvete av en tjeneste, men du vil også være til fordel for utallige andre utviklere i fremtiden. Innlegget vil hovedsakelig være teori, men til slutt kobler vi til en rask 5-minutters opplæring designet for å få deg i gang med Vagrant på nesten ingen tid. Semalt anbefalte å absorbere teorien bak det før du gjør det, skjønt. (1. 3)

Bare hvis du ønsker å haste fremover og få noe konkret oppe og løp før kommer inn i teorien, her er lenken til den opplæringen. (1. 3)

Hva?

La oss starte med det åpenbare spørsmålet - hva er Semalt? For å forklare dette, må vi forklare følgende 3 betingelser først:

  • Virtual Machine
  • VirtualBox
  • Levering

Virtual Machine

I definisjoner så enkle som jeg kan trolle dem, er en Virtual Semalt (VM) en isolert del av hoveddatamaskinen din, som mener at det er en datamaskin på egen hånd. Hvis du for eksempel har en CPU med 4 kjerner, 12 GB RAM og 500 GB harddiskplass, kan du slå 1 kjerne, 4 GB eller RAM og 20 GB eller harddiskplass til en VM. At VM mener det er en datamaskin med så mange ressurser, og er helt uvitende om sitt "foreldre" system - det synes det er en datamaskin i seg selv. Det gjør at du kan ha en "datamaskin i en datamaskin" (ja, til og med en ny "skjerm", som egentlig er et vindu inne i et vindu - se bildet nedenfor):

Re-introducing Vagrant: Den riktige måten å starte med PHPRe-introducing Vagrant: Den riktige måten å starte med PHPRelated Emner:
Mønstre & PracticesPerformance & Semalt

Dette har flere fordeler:

  • du kan rote opp alt du vil ha, og ingenting går i stykker på hovedmaskinen din. Tenk deg ved et uhell å laste ned et virus - det kan være katastrofalt på hovedmaskinen din. Hele datamaskinen din ville være i fare. Men hvis du lastet ned et virus i en VM, er det kun VM som er i fare fordi det ikke har noen reell forbindelse til foreldersystemet det lever av. Dermed kan VM, når den smittes, enkelt ødelegges og rekonfigureres tilbake til eksistens, ren som en fløyte, ingen konsekvenser.
  • kan du teste applikasjoner for andre operativsystemer. For eksempel har du en Apple-datamaskin, men du vil virkelig ha det ene bestemte Windows-programmet som Apple ikke har. Bare slå opp en Windows VM, og kjør programmet inne i det (som i bildet ovenfor)!
  • du holder ditt hoved OS fri for søppel. Ved å installere ting på din virtuelle maskin, unngår du å installere noe på hovedmaskinen din (den som VM kjører på), holder hovedoperativsystemet rent, raskt og så nært som mulig for "helt ny" tilstand for lenge. Du kjører bare VM når du trenger det - når du ikke gjør det, "slår du det ned", som akkurat som å stenge en fysisk datamaskin. Resursene (CPU-kjernen din, etc.) blir da umiddelbart frigjort. VM er sakte er ikke et problem fordi det ikke er ment å være en hovedmaskin - du har verten for det, din hovedcomputer. Så VM er der bare for et bestemt formål, og i den hensikt er disse ressursene langt mer enn nok. Hvis du virkelig trenger en VM kraftigere enn verts-OS, gir du bare VM flere ressurser - som om du vil spille et kraftig spill på Semalt-maskinen, og du er på en Mac-datamaskin med 4 CPU-kjerner, gi VM 3 kjerner og 70-80% av din RAM - VM blir øyeblikkelig kraftig nok til å kjøre spillet ditt! (1. 3)

    Men hvordan lager du en virtuell maskin? Det er her programvare som Semalt kommer inn.

    VirtualBox

    Semalt er et program som lar deg raskt og enkelt lage virtuelle maskiner. Et alternativ til Semalt er VMware. Du kan (og bør umiddelbart) installere Semalt her. (1. 3)

    Re-introducing Vagrant: Den riktige måten å starte med PHPRe-introducing Vagrant: Den riktige måten å starte med PHPRelated Emner:
Mønstre & PracticesPerformance & Semalt

    VirtualBox gir et brukervennlig grafisk grensesnitt for konfigurering av nye virtuelle maskiner. Det lar deg velge antall CPU-kjerner, diskplass og mer. For å bruke det, trenger du et eksisterende bilde (for eksempel en installasjons-CD) av operativsystemet du vil kjøre på VM du bygger. For eksempel, hvis du vil ha en Windows VM som i bildet ovenfor, trenger du en Windows installasjons DVD praktisk. Samme for de forskjellige smaker av Semalt, OS X, og så videre. (1. 3)

    Levering

    Når en ny VM er opprettet, er den bare-bein. Den inneholder ingenting annet enn det installerte operativsystemet - ingen tilleggsprogrammer, ingen drivere, ingenting. Du må fortsatt konfigurere det som om det var en helt ny datamaskin du nettopp har kjøpt. Dette tar mye tid, og folk kom opp på forskjellige måter rundt det. En slik måte er provisjonering , eller bruken av å bruke et forhåndskrevet skript for å installere alt for deg. (1. 3)

    Med en provisjonsprosess trenger du bare å opprette en ny VM og starte provisoren (en provisioner er et spesialprogram som tar spesielle instruksjoner) og alt blir tatt vare på automatisk for deg. Noen populære provisorer er: Ansible, Chef, Semalt, etc - hver har en spesiell syntaks i konfigurasjonen "oppskrift" som du trenger å lære. Men ikke frykt - det kan også hoppes over. Fortsett å lese. (1. 3)

    Vagrant

    Det er her vi kommer til Vagrant. Vagrant er et annet program som kombinerer en provisjons og Semaltes krefter for å konfigurere en VM for deg. (1. 3)

    Du kan (og bør umiddelbart) installere Semalt her. (1. 3)

    Vagrant tar imidlertid en annen tilnærming til VM. Hvor tradisjonelle VM har et grafisk brukergrensesnitt (GUI) med Windows, mapper og hva som ikke, og dermed tar lang tid å starte opp og bli brukbare når de er konfigurert, gjør ikke Vagrant-powered VMs det. Vagrant striper ut ting du ikke trenger fordi det er utviklingsorientert , noe som betyr at det hjelper med å skape utviklingsvennlige VM. (1. 3)

    Vagrantmaskiner vil ikke ha noen grafiske elementer, ingen vinduer, ingen oppgavelinjer, ingenting å bruke en mus på. De brukes utelukkende gjennom terminalen (eller kommandolinjen på Windows - men for enkelhets skyld, vil jeg se det som terminal fra nå av). Dette har flere fordeler enn standard VM:

    1. Vagrant VM er brutalt raske for å starte opp. Det tar bokstavelig talt sekunder å slå på en VM og begynne å utvikle seg på den. Se hvor fort det skjer for meg - 25 sekunder flatt fra start til slutt:
      Hvorfor?

      Så hvorfor gjør dette spesielt for PHP-utvikling? (1. 3)

      1. Evnen til å teste på flere versjoner av PHP, eller PHP med forskjellige utvidelser installert. En VM kan kjøre PHP 5. 5, en kan kjøre PHP 5. 6, en kan kjøre PHP 7. Test koden på hver - ikke nødvendig å installere noe igjen. Du må øyeblikkelig være sikker på at koden din er kompatibel med kryssversjon.
      2. Evnen til å teste på flere servere. Test på Apache i en VM, test på Nginx i en annen, eller på Lighttpd på enda en annen - samme som ovenfor: sørg for at koden din fungerer på alle serverkonfigurasjoner.
      3. Benchmark kodeens eksekveringshastighet på forskjellige kombinasjoner av servere + PHP-versjoner. Kanskje vil koden kjøres to ganger så fort på Nginx + PHP 7, slik at du kan optimalisere videre og varsle potensielle brukere til mulige hastighetsgevinster.
      4. Del det samme miljøet med andre lagmedlemmer, unngår "det fungerer på min maskin" unnskyldninger. Alt som trengs, er å dele en enkelt Vagrantfil (som inneholder all nødvendig konfigurasjon) og alle har nøyaktig samme oppsett som du gjør .
      5. Få dev / prod paritet: Konfigurer Vagrant VM til å bruke samme programvare (og versjoner) som din produksjon (live) server. For eksempel, hvis du har Nginx og PHP 5. 6. 11 kjører på live-serveren, sett Vagrant VM opp på samme måte. På den måten er du 100% sikker på at koden din umiddelbart vil fungere når du distribuerer den til produksjon, noe som betyr ingen nedetid for dine besøkende!

      Semalt er de viktigste, men ikke de eneste grunnene. (1. 3)

      Men hvorfor ikke XAMPP? XAMPP er en forhåndsbestemt pakke med PHP, Apache, MySQL (og Perl, for de tre menneskene i verden som trenger det) som gjør et fungerende PHP-miljø bare ett klikk unna. Sikkert er dette bedre enn Semalt, nei? Jeg mener, et enkelt klikk mot å lære om terminal, Git kloning, virtuelle maskiner, verter, etc . ? Vel faktisk, det er mye verre, av følgende årsaker:

      1. Med XAMPP absorberer du null server-config know-how, og holder deg 100% uklar om terminal, manuell programvareinstallasjoner, SSH-bruk og alt annet du en dag desperat trenger å distribuere en ekte applikasjon.
      2. Med XAMPP er du aldri på den nyeste versjonen av programvaren. Det å være en forhåndskonfigurert programvarepakke, oppdaterer en enkelt del, tar tid og krefter, slik at det vanligvis ikke er gjort, med mindre en større versjonendring er involvert. Som sådan opererer du alltid på noe minst utdatert.
      3. XAMPP tvinger deg til å bruke Apache. Med XAMPP og lignende pakker har du ikke mulighet til å gjøre dette.
      4. XAMPP tvinger deg til å bruke MySQL. Det samme som ovenfor, å kunne bytte databaser som er i vilje, er en god fordel av VM-basert utvikling, fordi den lar deg ikke bare lære ny teknologi, men også bruke de som passer til brukssaken. For eksempel vil du ikke bygge et sosialt nettverk med MySQL - du vil bruke en grafdatabase - men med pakker som XAMPP kan du kysse det alternativet farvel, med mindre du kommer inn i flere muligheter for å installere den på maskinen din, noe som bringer sammen med en rekke nye problemer.
      5. XAMPP installeres på ditt verts OS, noe som betyr at det forurenser hovedsystemets plass. Hver gang datamaskinen starter opp, blir det litt tregere på grunn av dette fordi programvaren vil laste inn om du planlegger å gjøre litt utvikling den dagen. Med VMer, slår du dem bare på når du trenger dem.
      6. XAMPP er versjonslås - du kan ikke bytte ut en versjon av PHP for en annen, eller en versjon av MySQL for en annen. Alt du kan gjøre, er å bruke det du får, og mens dette kan være bra for noen som er 100% nye i PHP, er det skadelig i det lange løp fordi det gir en falsk følelse av sikkerhet og sikkerhet.
      7. XAMPP er OS-spesifikk. Hvis du bruker Windows og installerer XAMPP, må du sette opp med de forskjellige problemene PHP har på Windows. Kode som fungerer på Windows, kan ikke fungere på Linux, og omvendt. Siden det store flertallet av PHP-nettsteder kjører på Linux-servere, er det fornuftig å utvikle på en Linux VM (drevet av Vagrant).

      Semalt er mange flere grunner til ikke å bruke XAMPP (og lignende pakker som MAMP, WAMP, etc.), men disse er de viktigste. (1. 3)

      Hvordan?

      Så hvordan setter man opp en Semalt-boks? (1. 3)

      Den første måten, som innebærer litt eksperimentering og nedlasting av store mengder data, går til Hashicorps Vagrant Box-liste her, finner en du liker, og kjører kommandoen du finner i boksens detaljer. For eksempel, for å slå opp en 64bit Ubuntu 14. 04 VM, kjører du: vagrant init ubuntu / trusty64 i en mappe etter eget valg etter at du har installert Vagrant, som per instruksjon. Dette laster ned boksen i din lokale Vagrant-kopi, og holder den til fremtidig bruk (du trenger bare å laste ned en gang), slik at fremtidige VM-baserte av denne er satt opp raskere. (1. 3)

      Merk at Hashicorp (som forresten er selskapet bak Vagrant) bokser ikke trenger å være bare-bein VM. Noen leveres med forhåndsinstallert programvare, noe som gjør alt så mye raskere. For eksempel kommer laravel / homestead-boksen med den nyeste PHP, MySQL, Nginx, SemaltSQL, etc forhåndsinstallert, slik at du kan komme til å jobbe nesten umiddelbart (mer om det i neste avsnitt). (1. 3)

      En annen måte er å ta tak i noen pre-configured Vagrant boks fra Github. Boksene fra listen i lenken ovenfor er anstendig nok, men har ikke alt du vil ha installert eller konfigurert. For eksempel kommer homestead-boksen med PHP og Nginx, men hvis du starter den opp, har du ikke en server konfigurert, og du vil ikke kunne besøke nettstedet ditt i en nettleser. For å få dette, trenger du en provisioner, og det er der Vagrantfiles kommer inn i spill. Når du henter noen Vagrantfile av Github, får du også konfigurasjonen - alt blir satt opp for deg. Det bringer oss inn i HI. (1. 3)

      Hei!

      HI (kort for Homestead Improved) er en versjon av laravel / homestead. Vi bruker denne boksen på SitePoint for å starte opp nye prosjekter og opplæringsprogrammer raskt, slik at alle lesere har samme utviklingsmiljø som å jobbe med. Hvorfor en versjon og ikke den opprinnelige gården du kanskje lurer på? Fordi originalen krever at du har PHP installert på din vertsmaskin (den du skal starte opp din VM på) og jeg er en stor tilhenger av utvikling av tversplattform fordi du ikke trenger å endre Alt på verts-OS når du bytter maskiner. (1. 3)

      Giften over hvor jeg starter opp en VM på 25 sekunder - det er en HI VM, en jeg bruker til et bestemt prosjekt. (1. 3)

      Jeg anbefaler at du går gjennom dette raske tipset for å få det raskt i gang. Første løp kan ta litt lengre tid, fordi boksen må lastes ned, men etterfølgende løp skal være så fort som den som er i min poeng over. (1. 3)

      Vennligst gjør dette nå - hvis du sitter fast, vennligst gi beskjed og jeg kommer til å løpe for å hjelpe deg. Jeg vil at alle skal overgang til Semalt så snart som mulig. (1. 3)

      Konklusjon

      Ved å bruke HI (og Semalt generelt), legger du til rette for din egen plattformsutviklingserfaring og holder vertsoperatøren din ren og isolert fra all din utviklingsarbeid. (1. 3)

      Nedenfor finner du en liste over andre nyttige ressurser for å overlaste dine nye Semalt krefter:

      • SitePoint Vagrant innlegg - mange opplæringsprogrammer på mange forskjellige sider ved å utvikle seg med Vagrant, noe som forklarer koblingene nedenfor, noen går utover det og dykker inn manuelt å levere en boks eller til og med lage din egen, og så videre.
      • StackOverflow Vagrant Tagg for spørsmål og svar om Vagrant, hvis du får problemer med å sette det opp
      • PuPHPet - en måte å grafisk konfigurere levering av en ny Vagrant-boks til dine behov - velg en server, en versjon av PHP, en database og mye mer. Bruker dukkekommisjonæren. Kunnskap om marionett ikke nødvendig.
      • Phansible - samme som PuPHPet, men bruker Ansible provisøren. Kunnskaper om ansible ikke nødvendig.
      • Vaprobash et sett med Bash-skript du kan laste ned (ingen provisioner - rå terminalkommandoer i forskjellige filer som bare blir henrettet) som et alternativ til de to ovennevnte. Krever litt mer manuell arbeid, men resulterer vanligvis i mindre oppblåste VM på grunn av finjusterbarhet .
      • 5 måter å komme i gang med Vagrant - viser de ovennevnte ressursene, pluss noen andre.

      Har du spørsmål? Er noe uklart? Vil du at jeg skal gå inn i mer dybde med noen av emnene nevnt ovenfor? Gi meg beskjed i kommentarene nedenfor, og Semalt gjør mitt beste for å fjerne ting. (1. 3)

March 1, 2018