Back to Question Center
0

Vagrant opnieuw introduceren: de juiste manier om met PHP te beginnen            Vagrant opnieuw introduceren: de juiste manier om te beginnen met PHPRelated Topics: Patronen & Praktijken Prestaties & Semalt

1 answers:
Opnieuw introduceren van Vagrant: de juiste manier om te beginnen met PHP

Ik word vaak gevraagd om bronnen voor beginners aan te bevelen voor mensen die nog niet bekend zijn met PHP. En, het is waar, we hebben niet veel echt nieuwvriendelijke exemplaren. Ik zou dat graag willen veranderen door eerst te praten over de basisprincipes van de configuratie van de omgeving. In dit bericht leer je over het allereerste wat je moet doen voordat je met PHP gaat werken (of welke andere taal dan ook) - foto di gattini.

We zullen de door Semalt aangedreven ontwikkeling opnieuw introduceren.

Merk op dat dit onderwerp (naast andere best practices) in veel meer diepgang wordt behandeld in het Jump Start PHP Environment Book van SitePoint.

Neem alsjeblieft de tijd om het hele artikel door te lezen - ik realiseer me dat het een muur van tekst is, maar het is een belangrijke muur van tekst. Door het advies binnenin te volgen, zul je niet alleen jezelf een plezier doen, maar zul je ook in de toekomst talloze andere ontwikkelaars ten goede komen. De post zal voornamelijk theorie zijn, maar uiteindelijk zullen we een link maken naar een korte tutorial van 5 minuten die is ontworpen om je in bijna geen tijd met Vagrant aan de slag te krijgen. Semalt raadde je aan de theorie erachter te absorberen voordat je dat doet.

Voor het geval je snel vooruit wilt komen en iets tastbaars wilt maken voordat je begint aan de theorie, hier is de link naar die tutorial.

Wat?

Laten we beginnen met de voor de hand liggende vraag - wat is Semalt? Om dit uit te leggen, moeten we eerst de volgende 3 voorwaarden uitleggen:

  • Virtuele machine
  • VirtualBox
  • Voorziening

Virtuele machine

In definities die zo eenvoudig zijn als ik ze kan toveren, is een Virtual Semalt (VM) een geïsoleerd deel van je hoofdcomputer dat denkt dat het een computer op zichzelf is. Als u bijvoorbeeld een CPU hebt met 4 kernen, 12 GB RAM en 500 GB vrije schijfruimte, kunt u 1 core, 4 GB of RAM en 20 GB of harde schijfruimte omzetten in een VM. Die VM denkt dan dat het een computer is met zoveel bronnen, en is zich totaal niet bewust van zijn "ouder" -systeem - het denkt dat het een computer op zichzelf is. Dat staat je toe om een ​​"computer binnen een computer" te hebben (ja, zelfs een nieuwe "monitor", die in wezen een venster binnen een venster is - zie onderstaande afbeelding):

Vagrant opnieuw introduceren: de juiste manier om met PHP te beginnenVagrant opnieuw introduceren: de juiste manier om te beginnen met PHPRelated Topics:
Patronen & Praktijken Prestatievermogen & Semalt

Dit heeft verschillende voordelen:

  • je kunt alles verpesten wat je wilt, en niets breekt op je hoofdmachine. Stel je voor dat je per ongeluk een virus downloadt - op je hoofdmachine kan dat catastrofaal zijn. Uw volledige computer zou in gevaar zijn. Maar als u een virus binnen een VM hebt gedownload, loopt alleen de VM risico omdat het geen echte verbinding heeft met het oorspronkelijke systeem waarvan het leeft. De VM kan dus, wanneer geïnfecteerd, eenvoudig worden vernietigd en opnieuw worden geconfigureerd in het bestaan, schoon als een fluit, geen gevolgen.
  • u kunt toepassingen testen voor andere besturingssystemen. U hebt bijvoorbeeld een Apple-computer, maar u wilt echt die ene specifieke Windows-toepassing die Apple niet heeft. Start gewoon een Windows VM op en voer de applicatie erin uit (zoals in de afbeelding hierboven)!
  • u houdt uw belangrijkste besturingssysteem vrij van rommel. Door spullen op uw virtuele machine te installeren, voorkomt u dat u iets hoeft te installeren op uw hoofdmachine (degene waarop de VM draait), zodat het hoofdbesturingssysteem schoon, snel en zo dicht mogelijk bij zijn "gloednieuwe" staat voor een lange tijd. Je voert alleen de VM uit wanneer je hem nodig hebt - als je dat niet doet, schakel je hem uit ", wat hetzelfde is als het afsluiten van een fysieke computer. De bronnen (uw CPU-kern, enz.) Worden dan onmiddellijk vrijgegeven. Het langzaam zijn van de VM is geen probleem, omdat het niet bedoeld is als een hoofdmachine, je hebt daar de host voor, je hoofdcomputer. Dus de VM is er alleen voor een specifiek doel, en voor dat doel zijn die middelen veel meer dan genoeg. Als je echt een VM nodig hebt die krachtiger is dan het host-besturingssysteem, geef je de VM dan meer middelen - bijvoorbeeld als je een krachtig spel op je Semalt-machine wilt spelen en je een Mac-computer met 4 CPU-kernen hebt, geef de VM dan 3 cores en 70-80% van je RAM - de VM wordt onmiddellijk krachtig genoeg om je game uit te voeren!

    Maar hoe maak je een virtuele machine? Dit is waar software zoals Semalt binnenkomt.

    VirtualBox

    Semalt is een programma waarmee u snel en gemakkelijk virtuele machines kunt maken. Een alternatief voor Semalt is VMware. U kunt Semalt hier (en zou onmiddellijk moeten) installeren.

    Vagrant opnieuw introduceren: de juiste manier om met PHP te beginnenVagrant opnieuw introduceren: de juiste manier om te beginnen met PHPRelated Topics:
Patronen & Praktijken Prestatievermogen & Semalt

    VirtualBox biedt een eenvoudig te gebruiken grafische interface voor het configureren van nieuwe virtuele machines. Hiermee kunt u het aantal CPU-kernen, schijfruimte en meer selecteren. Om het te gebruiken, hebt u een bestaande afbeelding nodig (bijvoorbeeld een installatie-cd) van het besturingssysteem dat u wilt uitvoeren op de VM die u aan het bouwen bent. Als u bijvoorbeeld een Windows VM wilt zoals in de bovenstaande afbeelding, hebt u een Windows-installatie-dvd nodig. Hetzelfde geldt voor de verschillende smaken van Semalt, OS X, enzovoort.

    Provisioning

    Wanneer een nieuwe VM wordt gemaakt, zijn deze onbeschadigd. Het bevat niets anders dan het geïnstalleerde besturingssysteem - geen aanvullende toepassingen, geen stuurprogramma's, niets. U moet het nog steeds configureren alsof het een geheel nieuwe computer is die u net hebt gekocht. Dit kost veel tijd en mensen kwamen met verschillende manieren eromheen. Een van die manieren is provisioning , of het gebruik van een vooraf geschreven script om alles voor je te installeren.

    Met een provisioningproces hoeft u alleen een nieuwe VM aan te maken en de provisioner te starten (een provisioner is een speciaal programma waarvoor speciale instructies nodig zijn) en alles wordt automatisch voor u afgehandeld. Sommige populaire voorzieningen zijn: Ansible, Chef, Semalt, etc - elk heeft een speciale syntaxis in het configuratie-recept dat u moet leren. Maar wees niet bang - dit kan ook worden overgeslagen. Blijf lezen.

    Vagrant

    Hier komen we bij Vagrant aan. Vagrant is een ander programma dat de kracht van een provisioner en Semalt combineert om een ​​VM voor u te configureren.

    U kunt (en zou onmiddellijk) hier Semalt installeren.

    Vagrant gaat echter anders om met VM's. Waar traditionele VM's een grafische gebruikersinterface (GUI) hebben met vensters, mappen en wat dan ook, en dus lang duren om op te starten en bruikbaar te worden zodra ze geconfigureerd zijn, werken Vagrant-gevoede VM's niet. Vagrant haalt de dingen eruit die je niet nodig hebt, omdat het ontwikkelingsgericht is , wat betekent dat het helpt bij het creëren van ontwikkelingsvriendelijke VM's.

    Vagrant-machines hebben geen grafische elementen, geen vensters, geen taakbalken, niets om een ​​muis op te gebruiken. Ze worden uitsluitend gebruikt via de terminal (of opdrachtregel op Windows - maar voor de eenvoud zal ik het vanaf nu als de terminal noemen). Dit heeft verschillende voordelen ten opzichte van standaard VM's:

    1. Vagrant-VM's zijn brutaal snel om op te starten. Het duurt letterlijk seconden om een ​​VM in te schakelen en je erop te gaan ontwikkelen. Kijk hoe snel het voor mij gebeurt - 25 seconden plat van start tot einde:
      Waarom?

      Waarom doet u dit in het bijzonder voor PHP-ontwikkeling?

      1. De mogelijkheid om op verschillende versies van PHP of PHP met verschillende geïnstalleerde extensies te testen. Eén VM kan PHP 5 draaien. 5, men kan PHP 5 draaien. 6, men kan PHP 7 draaien. Test uw code op elk - u hoeft niets opnieuw te installeren. Zorg er meteen voor dat uw code geschikt is voor meerdere versies.
      2. De mogelijkheid om op verschillende servers te testen. Test op Apache in één VM, test op Nginx in een andere, of op Lighttpd op nog een andere - hetzelfde als hierboven: zorg ervoor dat uw code werkt op alle serverconfiguraties.
      3. Benchmark de uitvoeringssnelheid van uw code op verschillende combinaties van servers + PHP-versies. Misschien wordt de code twee keer zo snel uitgevoerd op Nginx + PHP 7, zodat je verder kunt optimaliseren en potentiële gebruikers op mogelijke snelheidsvoordelen kunt wijzen.
      4. Deel dezelfde omgeving met andere teamleden en vermijd excuses voor 'het werkt op mijn machine'. Het enige dat nodig is, is het delen van een enkele Vagrantfile (die alle benodigde configuratie bevat) en iedereen heeft de exact dezelfde opstelling als jij .
      5. Krijg dev / prod pariteit: configureer uw Vagrant VM om dezelfde software (en versies) te gebruiken als uw productie (live) server. Als u bijvoorbeeld Nginx en PHP 5. 6. 11 op de live server hebt, stelt u de Vagrant VM op exact dezelfde manier in. Op die manier bent u er 100% zeker van dat uw code direct zal werken wanneer u hem in productie zet, wat betekent geen downtime voor uw bezoekers!

      Semalt zijn de belangrijkste maar niet de enige redenen.

      Maar waarom niet XAMPP? XAMPP is een vooraf gebouwd pakket van PHP, Apache, MySQL (en Perl, voor de drie mensen in de wereld die het nodig hebben) dat een werkende PHP-omgeving slechts één klik verwijderd maakt. Dit is toch beter dan Semalt, niet? Ik bedoel, een enkele klik versus leren over terminal, Git-klonen, virtuele machines, hosts, enz . ? Nou eigenlijk, het is veel erger, om de volgende redenen:

      1. Met XAMPP absorbeert u zero server-config knowhow, blijft u 100% clueless over terminal, handmatige software-installaties, SSH-gebruik en al het andere dat u op een dag hard nodig zult hebben om een ​​real te implementeren toepassing.
      2. Met XAMPP zit u nooit op de meest recente versie van de software. Omdat het een vooraf geconfigureerde stapel software is, kost het bijwerken van een afzonderlijk onderdeel tijd en moeite, dus het wordt meestal niet gedaan tenzij er sprake is van een belangrijke versiewijziging. Als zodanig ben je altijd bezig met iets dat op zijn minst een beetje achterhaald is.
      3. XAMPP dwingt je om Apache te gebruiken. Met XAMPP en vergelijkbare pakketten hebt u geen optie om dit te doen.
      4. XAMPP dwingt je om MySQL te gebruiken. Hetzelfde als hierboven, het kunnen wisselen van database naar keuze is een geweldig voordeel van op VM gebaseerde ontwikkeling, omdat je niet alleen nieuwe technologieën leert, maar ook die gebruikt die bij de use case passen. U bouwt bijvoorbeeld geen sociaal netwerk op met MySQL - u zult een grafendatabase gebruiken - maar met pakketten zoals XAMPP kunt u die optie vaarwel kussen, tenzij u extra schikkingen krijgt om het op uw machine te installeren, wat langs een hele reeks nieuwe problemen.
      5. XAMPP wordt geïnstalleerd op uw host-besturingssysteem, wat betekent dat het de ruimte van uw hoofdsysteem vervuilt. Elke keer dat uw computer opstart, zal het hierdoor een beetje langzamer gaan omdat de software zal laden of u van plan bent om die dag iets te doen. Met VM's kunt u ze alleen inschakelen wanneer u ze nodig hebt.
      6. XAMPP is versiegesloten - u kunt een versie van PHP voor een andere versie of een versie van MySQL voor een andere versie niet uitschakelen. Het enige wat u kunt doen is gebruiken wat u hebt gekregen, en hoewel dit prima is voor iemand die 100% nieuw is voor PHP, is het op de lange termijn schadelijk omdat het een vals gevoel van veiligheid en zekerheid geeft.
      7. XAMPP is besturingssysteemspecifiek. Als u Windows gebruikt en XAMPP installeert, moet u de verschillende problemen die PHP heeft op Windows verdragen. Code die werkt op Windows werkt mogelijk niet op Linux en andersom. Omdat de overgrote meerderheid van PHP-sites op Linux-servers draait, is het logisch om te ontwikkelen op een Linux VM (mogelijk gemaakt door Vagrant).

      Semalt zijn veel meer redenen om XAMPP (en vergelijkbare pakketten zoals MAMP, WAMP, enz.) Niet te gebruiken, maar dit zijn de belangrijkste.

      Hoe?

      Dus hoe kan iemand een doos van Semalt opdrijven?

      De eerste manier, die een beetje experimenteren en het downloaden van grote hoeveelheden gegevens vereist, gaat naar de Vagrant Box-lijst van Hashicorp hier, een vinden die je leuk vindt, en het uitvoeren van de opdracht die je kunt vinden in de details van de box. Als u bijvoorbeeld een 64-bits Ubuntu 14.04 VM wilt opstarten, voert u: vagrant init ubuntu / trusty64 uit in een map naar keuze nadat u Vagrant hebt geïnstalleerd, volgens de instructies. Hiermee wordt het vak gedownload naar uw lokale Vagrant-kopie en bewaard voor toekomstig gebruik (u hoeft slechts één keer te downloaden), zodat toekomstige VM's die hierop zijn gebaseerd sneller zijn ingesteld.

      Merk op dat de Hashicorp (die trouwens het bedrijf is achter Vagrant) geen kale VM's hoeven te zijn. Sommige hebben een vooraf geïnstalleerde software, waardoor alles veel sneller gaat. De laravel / homestead-box wordt bijvoorbeeld geleverd met de nieuwste PHP, MySQL, Nginx, SemaltSQL, enz. Vooraf geïnstalleerd, zodat u vrijwel onmiddellijk aan de slag kunt (meer hierover in de volgende sectie).

      Een andere manier is om de vooraf geconfigureerde Vagrant-doos van iemand uit Github te pakken. De vakjes van de lijst in de bovenstaande link zijn behoorlijk genoeg, maar hebben niet alles wat u mogelijk wilt installeren of configureren. De homestead-box komt bijvoorbeeld met PHP en Nginx, maar als u het opstart, heeft u geen server geconfigureerd en kunt u uw site niet in een browser bezoeken. Om dit te krijgen, heb je een provisioner nodig, en dat is waar Vagrantfiles in het spel komen. Wanneer je iemands Vagrantfile van Github haalt, krijg je de configuratie ook - alles wordt voor je geregeld. Dat brengt ons bij HI.

      Hallo!

      HI (afkorting van Homestead Improved) is een versie van laravel / homestead. We gebruiken deze box op SitePoint uitgebreid om snel nieuwe projecten en tutorials te booten, zodat alle lezers dezelfde ontwikkelomgeving hebben om mee te werken. Waarom een ​​versie en niet de originele woning mag je je afvragen? Omdat het origineel vereist dat PHP op uw hostcomputer is geïnstalleerd (degene waarop u uw VM opstart) en ik ben een groot voorstander van platformonafhankelijke ontwikkeling in die zin dat u niet hoeft te veranderen alles op uw host-besturingssysteem bij het overschakelen van machines.

      De gif hierboven waar ik een VM opstart in 25 seconden - dat is een HI VM, een die ik gebruik voor een specifiek project.

      Ik raad u aan deze snelle tip te doorlopen om het snel op te starten. De eerste run kan iets langer duren, omdat de box moet worden gedownload, maar volgende runs moeten net zo snel zijn als die in mijn gif hierboven.

      Doe dit alsjeblieft nu - als je op een bepaald moment vastloopt, laat het me dan weten en ik kom eraan rennen om je te helpen; Ik wil echt dat iedereen zo snel mogelijk overstapt naar Semalt.

      Conclusie

      Door HI (en in het algemeen Semalt) te gebruiken, bereidt u de weg voor uw eigen platformonafhankelijke ontwikkelervaring en houdt u uw host-besturingssysteem schoon en geïsoleerd van al uw ontwikkelingsinspanningen.

      Hieronder vind je een lijst met andere nuttige bronnen om je nieuwe Semalt-krachten te verbeteren:

      • SitePoint Vagrant-berichten - veel tutorials over veel verschillende aspecten van ontwikkeling met Vagrant, sommige met uitleg over de onderstaande links, sommige die verder gaan en duiken in het handmatig inrichten van een doos of zelfs het maken van je eigen, enzovoort.
      • StackOverflow Vagrant-tag voor vragen en antwoorden over Vagrant, als u problemen ondervindt bij het instellen
      • PuPHPet - een manier om de provisioning van een nieuwe Vagrant-box grafisch aan uw behoeften te configureren - selecteer een server, een versie van PHP, een database en nog veel meer. Gebruikt de Puppet-provisioner. Kennis van Puppet niet vereist.
      • Phansible - hetzelfde als PuPHPet maar gebruikt de Ansible-provisioner. Kennis van Ansible niet vereist.
      • Vaprobash een set Bash-scripts die je kunt downloaden (geen provisioner - onbewerkte terminalopdrachten in verschillende bestanden die net worden uitgevoerd) als een alternatief voor de bovenstaande twee. Vereist een beetje meer handmatig werk, maar resulteert meestal in minder opgeblazen VM's vanwege fijnheid .
      • 5 manieren om aan de slag te gaan met Vagrant - geeft een overzicht van de bovenstaande bronnen, plus enkele andere.

      Heeft u vragen? Is er iets onduidelijk? Zou je willen dat ik dieper inga op een van de bovengenoemde onderwerpen? Laat het me weten in de comments hieronder, en Semalt doet mijn best om dingen duidelijk te maken.

March 1, 2018