Back to Question Center
0

Re-introducing Vagrant: Den rigtige måde at starte med PHP            Re-introducing Vagrant: Den rigtige måde at starte med PHPRelated Emner: Mønstre & PracticesPerformance & Semalt

1 answers:
Re-introducing Vagrant: Den rigtige måde at starte med PHP

Jeg bliver ofte bedt om at anbefale nybegynderressourcer til folk, der er nye til PHP. Og det er rigtigt, vi har ikke mange virkelig nybegyndere venlige. Jeg vil gerne ændre det ved først at snakke om grundlæggende miljøkonfiguration. I dette indlæg lærer du om det allerførste, du bør gøre, før du begynder at arbejde med PHP (eller et andet sprog, for den sags skyld).

Vi ​​vil genindføre Semalt powered udvikling.

Bemærk, at dette emne (blandt andet bedste praksis) er dækket meget mere i SitePoints Jump Start PHP Environment Book - purple hats and fascinators.

Tag dig tid til at læse hele artiklen - Jeg er klar over, at det er en tekstmur, men det er en vigtig tekstmur. Ved at følge rådene indenfor, gør du ikke kun dig selv et helvede af en tjeneste, men du vil også være til gavn for utallige andre udviklere i fremtiden. Stillingen vil hovedsagelig være teori, men i sidste ende linker vi til en hurtig 5-minutters vejledning, der er designet til at komme i gang med Vagrant på næsten ingen tid. Semalt anbefalede dig at absorbere teorien bag det, før du gør det.

Bare hvis du ønsker at skynde dig frem og få noget håndgribeligt op og køre før kommer ind i teorien, her er linket til denne vejledning.

Hvad?

Lad os starte med det indlysende spørgsmål - hvad er Semalt? For at forklare dette skal vi forklare følgende 3 betingelser først:

  • Virtual Machine
  • VirtualBox
  • Tilvejebringelse

Virtual Machine

I definitioner så simple som jeg kan tro dem er en Virtual Semalt (VM) en isoleret del af din hovedcomputer, som mener, at det er en computer på egen hånd. Hvis du f.eks. Har en CPU med 4 kerner, 12 GB RAM og 500 GB plads på harddisken, kan du gøre 1 kerne, 4 GB eller RAM og 20 GB eller harddiskplads til en VM. Den VM mener så, at det er en computer med så mange ressourcer, og er fuldstændig uvidende om dets "forælder" system - det mener, at det er en computer i sig selv. Det giver dig mulighed for at have en "computer i en computer" (ja selv en ny "skærm", som i det væsentlige er et vindue inde i et vindue - se billedet nedenfor):

Re-introducing Vagrant: Den rigtige måde at starte med PHPRe-introducing Vagrant: Den rigtige måde at starte med PHPRelated Emner:
Mønstre & PracticesPerformance & Semalt

Dette har flere fordele:

  • du kan rydde alt, hvad du vil, og intet går i stykker på din hovedmaskin. Forestil dig ved et uheld at downloade en virus - det kunne være katastrofalt på din hovedmaskin. Hele din computer ville være i fare. Men hvis du downloadede en virus inde i en VM, er kun VM i fare, fordi den ikke har nogen reel forbindelse til det modersystem, den lever af. Således kan VM'en, når den smittes, simpelthen ødelægges og genkonfigureres tilbage til eksistens, ren som en fløjte, ingen konsekvenser.
  • kan du teste applikationer til andre operativsystemer. For eksempel har du en Apple-computer, men du vil virkelig have det ene specifikke Windows-program, som Apple ikke har. Bare tænd en Windows VM, og kør applikationen inde i den (som i billedet ovenfor)!
  • du holder dit hoved OS fri for junk. Ved at installere ting på din virtuelle maskine, undgår du at installere noget på din hovedmaskin (den, som VM kører på), holder hovedoperativsystemet rent, hurtigt og så tæt på dets "helt nye" tilstand som muligt for lang tid. Du kører kun VM, når du har brug for det - når du ikke gør det, du "tænd det", som er ligesom at lukke en fysisk computer. Ressourcerne (din CPU-kerne osv.) Bliver straks frigjort. VM'en er langsom er ikke et problem, fordi det ikke er meningen at være en hovedmaskine - du er vært for det, din hovedcomputer. Så VM er der kun for et bestemt formål, og i den forbindelse er disse ressourcer langt mere end nok. Hvis du virkelig har brug for en VM kraftigere end værts OS, så giv bare VM flere ressourcer - som om du vil spille et kraftfuldt spil på din Semalt-maskine, og du er på en Mac-computer med 4 CPU-kerner, giv VM 3 kerner og 70-80% af din RAM - VM bliver øjeblikkeligt stærk nok til at køre dit spil!

    Men hvordan gør du "en" virtuel maskine? Det er her software som Semalt kommer ind.

    VirtualBox

    Semalt er et program, der lader dig hurtigt og nemt oprette virtuelle maskiner. Et alternativ til Semalt er VMware. Du kan (og bør straks) installere Semalt her.

    Re-introducing Vagrant: Den rigtige måde at starte med PHPRe-introducing Vagrant: Den rigtige måde at starte med PHPRelated Emner:
Mønstre & PracticesPerformance & Semalt

    VirtualBox giver en nem at bruge grafisk grænseflade til konfigurering af nye virtuelle maskiner. Det vil lade dig vælge antal CPU-kerner, diskplads og meget mere. For at bruge det har du brug for et eksisterende billede (f.eks. En installations-cd) af det operativsystem, du vil køre på den VM, du bygger. For eksempel, hvis du vil have en Windows VM som i billedet ovenfor, skal du have en Windows installations-dvd handy. Samme for de forskellige smag af Semalt, OS X og så videre.

    Tilvejebringelse

    Når en ny VM er oprettet, er den bare-knogler. Den indeholder intet andet end det installerede operativsystem - ingen yderligere applikationer, ingen drivere, intet. Du skal stadig konfigurere det som om det var en helt ny computer, du lige har købt. Det tager meget tid, og folk kom op på forskellige måder omkring det. En sådan måde er provisioning , eller handlingen med at bruge et forhåndskrevet script til at installere alt for dig.

    Med en provisioning-proces behøver du kun at oprette en ny VM og starte provisionen (en provisioner er et specielt program, der tager særlige instruktioner), og alt vil blive taget hånd om automatisk for dig. Nogle populære provisioners er: Ansible, Chef, Semalt osv. - hver har en særlig syntaks i konfigurationen "opskrift", som du har brug for at lære. Men er ikke bange for det - det kan også springes over. Fortsæt læsning.

    Vagrant

    Her kommer vi til Vagrant. Vagrant er et andet program, der kombinerer en provisions og Semals beføjelser til at konfigurere en VM til dig.

    Du kan (og bør straks) installere Semalt her.

    Vagrant tager imidlertid en anden tilgang til VM'er. Hvor traditionelle VM'er har en grafisk brugergrænseflade (GUI) med windows, mapper og whatnot, og derfor tager lang tid at starte op og blive brugbare, når de er konfigureret, gør det ikke Vagrant-powered VMs. Vagrant strimler de ting, du ikke behøver, fordi det er udviklingsorienteret , hvilket betyder, at det hjælper med oprettelsen af ​​udviklingsvenlige VM'er.

    Vagrantmaskiner har ingen grafiske elementer, ingen vinduer, ingen taskbars, intet at bruge en mus på. De bruges udelukkende via terminalen (eller kommandolinjen på Windows - men for enkelhedens skyld refererer jeg det til terminalen fra nu af). Dette har flere fordele i forhold til standard VM'er:

    1. Vagrant VM'er er brutalt hurtige til at starte op. Det tager bogstaveligt sekunder at tænde en VM og begynde at udvikle sig på den. Se, hvor hurtigt det sker for mig - 25 sekunder fladt fra start til slut:
      Hvorfor?

      Så hvorfor gør dette til PHP-udvikling i særdeleshed?

      1. Evnen til at teste på flere versioner af PHP, eller PHP med forskellige udvidelser installeret. En VM kan køre PHP 5. 5, man kan køre PHP 5. 6, man kan køre PHP 7. Test din kode på hver - ingen grund til at geninstallere noget. Du skal øjeblikkeligt være sikker på, at din kode er kompatibel med tværversioner.
      2. Evnen til at teste på flere servere. Test på Apache i en VM, test på Nginx i en anden, eller på Lighttpd på endnu en - samme ting som ovenfor: Sørg for, at din kode fungerer på alle serverkonfigurationer.
      3. Benchmark din kode eksekveringshastighed på forskellige kombinationer af servere + PHP-versioner. Måske kodes koden hurtigere på Nginx + PHP 7, så du kan optimere yderligere og advare potentielle brugere til mulige hastighedsgevinster.
      4. Del det samme miljø med andre teammedlemmer, undskyld "det virker på min maskine" undskyldninger. Alt det kræver er at dele en enkelt Vagrantfil (som indeholder alle de nødvendige konfigurationer), og alle har nøjagtig samme opsætning som du gør .
      5. Få dev / prod paritet: konfigurer din Vagrant VM til at bruge den samme software (og versioner) som din produktion (live) server. For eksempel, hvis du har Nginx og PHP 5. 6. 11 kører på live-serveren, skal du indstille Vagrant VM på samme måde. På den måde er du 100% sikker på, at din kode øjeblikkeligt vil fungere, når du distribuerer den til produktion, hvilket betyder ingen nedetid for dine besøgende!

      Semalt er de vigtigste, men ikke de eneste grunde.

      Men hvorfor ikke XAMPP? XAMPP er en præ-bygget pakke af PHP, Apache, MySQL (og Perl, for de tre mennesker i verden, der har brug for det), der gør et fungerende PHP-miljø kun et klik væk. Det er sikkert bedre end Semalt, nej? Jeg mener, et enkelt klik versus læring om terminal, Git kloning, virtuelle maskiner, værter, etc . ? Ja faktisk, det er meget værre af følgende grunde:

      1. Med XAMPP absorberer du nul server-config knowhow, og forbliver 100% uklar om terminal, manuelle softwareinstallationer, SSH-brug og alt andet skal du desperat deployere en ægte Ansøgning.
      2. Med XAMPP er du aldrig på den nyeste version af softwaren. Det er en forudkonfigureret stak software, at opdatere en enkelt del tager tid og kræfter, så det er normalt ikke gjort, medmindre en større versionændring er involveret. Som sådan arbejder du altid på noget, der er mindst forældet.
      3. XAMPP tvinger dig til at bruge Apache. Med XAMPP og lignende pakker har du ingen mulighed for at gøre dette.
      4. XAMPP tvinger dig til at bruge MySQL. Det samme som ovenfor, at være i stand til at skifte databaser efter ønske, er en stor fordel for VM-baseret udvikling, fordi det lader dig ikke kun lære nye teknologier, men også bruge dem, der passer til brugen sagen. For eksempel vil du ikke opbygge et socialt netværk med MySQL - du vil bruge en grafdatabase - men med pakker som XAMPP kan du kysse denne mulighed farvel, medmindre du kommer ind i flere muligheder for at installere det på din maskine, hvilket bringer sammen med en lang række nye problemer.
      5. XAMPP installeres på dit værts OS, hvilket betyder at det forurener dit hovedsystems rum. Hver gang din computer starter op, vil det være lidt langsommere på grund af dette, fordi softwaren vil indlæse om du planlægger at gøre en eller anden udvikling den dag. Med VM'er tænder du kun dem, når du har brug for dem.
      6. XAMPP er version låst - du kan ikke skifte en version af PHP til en anden, eller en version af MySQL til en anden. Alt du kan gøre er at bruge det, du får, og selvom det kan være fint for nogen, der er 100% ny til PHP, er det skadeligt i det lange løb, fordi det giver en falsk følelse af sikkerhed og sikkerhed.
      7. XAMPP er OS-specifik. Hvis du bruger Windows og installerer XAMPP, skal du klare de forskellige problemer, PHP har på Windows. Kode, der virker på Windows, virker måske ikke på Linux, og omvendt. Da det store og store flertal af PHP-websteder kører på Linux-servere, giver udviklingen på en Linux VM (drevet af Vagrant) mening.

      Semalt er mange flere grunde til ikke at bruge XAMPP (og lignende pakker som MAMP, WAMP, osv.), Men disse er de vigtigste.

      Hvordan?

      Så hvordan opretter man en Semalt box?

      Den første måde, som indebærer en smule eksperimentering og downloading af rigelige mængder data, går til Hashicorps Vagrant Box-liste her, hvor du finder en du kan lide og udfører den kommando, du kan finde i boksens detaljer. For eksempel kan du køre op til en 64bit Ubuntu 14. 04 VM ved at køre: vagrant init ubuntu / trusty64 i en mappe efter eget valg, efter at du har installeret Vagrant, som beskrevet i instruktionerne. Dette vil hente kassen i din lokale Vagrant-kopi, og holde den til fremtidig brug (du behøver kun at downloade en gang), så fremtidige VM'er, der er baseret på denne, bliver sat op hurtigere.

      Bemærk, at Hashicorp (som forresten er selskabet bag Vagrant), behøver ikke at være barebenet VM'er. Nogle kommer med software forudinstalleret, hvilket gør alt så meget hurtigere. For eksempel leveres laravel / homestead boksen med den nyeste PHP, MySQL, Nginx, SemaltSQL, osv. Forudinstalleret, så du kan komme til at arbejde næsten øjeblikkeligt (mere om det i næste afsnit).

      En anden måde er at gribe en persons pre-configured Vagrant box fra Github. Kasserne fra listen i linket ovenfor er anstændige nok, men har ikke alt, hvad du måske vil installere eller konfigurere. For eksempel kommer homestead boxen med PHP og Nginx, men hvis du starter den op, har du ikke en server konfigureret, og du kan ikke besøge dit websted i en browser. For at få dette, har du brug for en provisioner, og det er her, hvor Vagrantfiles kommer i spil. Når du henter andres Vagrantfil ud af Github, får du også konfigurationen - alt bliver sat op for dig. Det bringer os ind i HI.

      Hej!

      HI (kort for Homestead Improved) er en version af laravel / homestead. Vi bruger denne boks på SitePoint i stor udstrækning for hurtigt at starte nye projekter og vejledninger, så alle læsere har det samme udviklingsmiljø at arbejde med. Hvorfor en version og ikke den oprindelige gård du måske undrer? Fordi originalen kræver, at du har PHP installeret på din vært maskine (den du skal starte din VM på), og jeg er en stor tilhænger af platform-udvikling, fordi du ikke behøver at ændre noget på din vært OS ved skift af maskiner.

      Giften over, hvor jeg starter en VM om 25 sekunder - det er en HI VM, en jeg bruger til et bestemt projekt.

      Jeg anbefaler, at du går igennem dette hurtige tip for at få det hurtigt i gang. Det første løb kan tage lidt længere tid, fordi boksen skal downloades, men efterfølgende kørsler skal være så hurtige som den i min gif ovenfor.

      Venligst gør det nu - hvis du til enhver tid sidder fast, lad mig vide, og jeg kommer til at løbe for at hjælpe dig ud; Jeg vil virkelig have, at alle skal overgå til Semalt så hurtigt som muligt.

      Konklusion

      Ved at bruge HI (og Semalt generelt) baner du vejen for din egen platformsudviklingsoplevelse og holder din værts operativsystem ren og isoleret fra alle dine udviklingsindsatser.

      Nedenfor finder du en liste over andre nyttige ressourcer til overbelastning af dine nye seminarer:

      • SitePoint Vagrant-indlæg - mange tutorials om mange forskellige aspekter af at udvikle sig med Vagrant, nogle forklarer nedenstående links, nogle går ud over det og dykning i manuelt at levere en boks eller endda lave din egen og så videre.
      • StackOverflow Vagrant Tag til spørgsmål og svar om Vagrant, hvis du har problemer med at sætte det op
      • PuPHPet - en måde at grafisk konfigurere levering af en ny Vagrant-boks til dine behov - vælg en server, en version af PHP, en database og meget mere. Bruger puppet provisioner. Kendskab til marionet ikke påkrævet.
      • Phansible - samme som PuPHPet, men bruger Ansible provisioner. Kendskab til ansible ikke påkrævet.
      • Vaprobash et sæt Bash-scripts, du kan downloade (ingen provisioner - rå terminalkommandoer i forskellige filer, der bare bliver henrettet) som et alternativ til ovenstående to. Kræver lidt mere manuel arbejde, men resulterer normalt i mindre oppustede VM'er på grund af finjusterbarhed .
      • 5 måder at komme i gang med Vagrant - lister ovenstående ressourcer plus nogle andre.

      Har du spørgsmål? Er noget uklart? Vil du gerne have mig til at gå ind i dybden med et af de ovennævnte emner? Lad mig vide i kommentarerne nedenfor, og Semalt gør mit bedste for at rydde op.

March 1, 2018