Varför bry sig?
Hashicorp, företaget bakom Vagrant, har ett förvar för många Vagrant lådor vilka är förkonfigurerade virtuella maskinbilder där du kan generera valfritt antal virtuella datorer lokalt. Det löser två problem:
- Eftersom alla börjar med samma bild kan utvecklare bli av Det fungerar på min maskin ursäkt, där en viss app skulle fungera perfekt på en maskin, men inte en annan. Alla utvecklas på olika maskiner men körs på exakt samma konfiguration som virtuell maskin.
- Du behöver inte göra upprepad installation av virtuella maskiner om du bestämmer dig för att bli av med gamla. Vagrant tar hand om hela installationen och installationen av din virtuella dator. Allt från att fördela lagring och minne till att skapa användare som ställer in behörigheter.
På många sätt liknar det Docker-bilder och det löser liknande problem, med den viktigaste skillnaden att den använder virtuella datorer istället för att containrar gör det, bestämt, tyngre och långsammare alternativ. Virtuella maskiner har emellertid sina egna fördelar som bättre nätverksstack och mer flexibilitet när det gäller val av filsystem, etc. så att Vagrant kan fylla i en viss nisch av bärbara virtuella datorer.
Så låt oss komma igång!
Förutsättningar
Först och främst kravet är installationen av VirtualBox, varefter du bör installera Vagrant. Om du redan har VirtualBox installerat ska du bara hämta det senare. Installationsprocessen kan variera mycket beroende på vilket operativsystem din värd kör, så jag uppmanar dig att konsultera de officiella dokumenten för detta:
- Hämta VirtualBox här
- Få Vagrant här
Dessutom, om du använder Windows behöver du en SSH-klient, kanske du vill installera Git Bash som fungerar perfekt på Windows med standardinstallationsalternativen.
1. Vagrant lådor
Vagrant Box är termen för virtuella maskiner som hanteras av Vagrant. Du kan få Vagrant-lådor som bara innehåller operativsystemet som Ubuntu, CentOS, etc. Eller de kan innehålla förkonfigurerade LAMP stack, MEAN stack eller annan programvaruinstallation som kan göra din process för utveckling och testning enklare.
Om du till exempel skriver ett WordPress-tema kan du få en Vagrant-ruta med WordPress-kärnan som redan körs på den. Du kan dela din projektmapp där du har innehållet i ditt tema med den här virtuella datorn. Kontrollera om det nya temat fungerar som förväntat. När du är klar med temat, destory bara rutan och lämnar bara projektfilerna som du nu vet skulle fungera bra i den verkliga världen.
Du kan utforska dessa rutor här. Vi ska börja med en vanlig Ubuntu 16.04 LTS låda. Du kan se det listat som ubuntu / xenial64, om du besöker länken ovan.
Öppna din terminal och skapa en mapp för dina Vagrant-experiment.
$ mkdir vagrant_box$ cd vagrant_box
I den här mappen kan vi initiera vår Vagrant-miljö genom att köra:
$ vagrant init
Detta placerar en Vagrantfil inuti mappen som i huvudsak är ett Ruby-skript som beskriver konfigurationen av din Vagrant Box. Du behöver inte känna Ruby för att använda den här filen, syntaxen är ganska enkel. Vi kommer att täcka det väsentliga när vi går vidare.
Nu kan du köra vagrant up-kommandot och eftersom du kör det för första gången måste det ladda ner Virtual Machine-bilden från appen.vagrantup.com. Det kan ta lång tid beroende på din internetanslutning, men när den laddas ner, efterföljande vandrande upp kommandon för liknande vagrant init ubuntu / xenial64 tar inte så lång tid eftersom bilden nu sparas lokalt på din dator. Se till att du är i samma katalog (vagrant_box) där Vagrantfile placerades tidigare.
$ vagrant uppNär detta är klart kan du ssh in i rutan när användaren vandrar med rootbehörigheter. Kör bara följande:
$ vagrant sshGrattis! Du har precis loggat in i din första Vagrant Box. Nu när vi har börjat, låt oss lära oss några grundläggande vagrantkommandon innan vi gräver in i Vagrantfilen. Skriv bara exit och tryck
Vanligt Vagrant-kommando
Om du vill stoppa körrutan kör du kommandot:
$ vagrant stoppFör att starta om kan du använda vagrant up
Om du vill kan du också använda
$ vagrant stänga av$ vagrant CV
Dessa kommer att stänga av den virtuella datorn och återställa den säkert. Om du gör ändringar i Vagrantfilen och vill att ändringarna ska visas, använd kommandot:
$ vagrant omladdningKom ihåg att köra alla kommandon från samma katalog där din Vagrantfile finns. Du kan skapa fler vandrande rutor om du skapar nya kataloger någon annanstans och kör vagrant init i dem. Du kommer att hantera dem från deras respektive mappar. De kan baseras på samma ubuntu / xenial bild vi fick tidigare, eller så kan du ta med mer bild.
För att lista alla vagrerande rutor och deras status (kör eller stoppas), använd kommandot:
$ vagrant global statusFör att ta bort en vagrant box och allt dess privata innehåll kör du från boxens katalog (där dess respektive Vagrantfile finns):
$ vagrant förstöraBasbilden som du laddade ner tidigare finns fortfarande om du vill skapa nya rutor senare. Om du vill se alla bilder som sparas lokalt, kör:
$ vagrant box-listaFör att radera själva rutan, kör:
$ vagrant box ta bortEfter detta måste du ladda ner rutan igen om behovet av det skulle uppstå.
Inspektera Vagrantfilen
Vid första anblicken kan det tyckas att det finns många alternativ i en Vagrantfil. Även om det mycket väl kan vara sant är det intressant att notera hur mycket du kan åstadkomma med bara lite tweaking.
1. Den delade mappen
De flesta vagrantlådor kommer med förkonfigurerade delade mappar. Till exempel, om du inspekterar Vagrantfilen skapade vi första gången vi sprang vagrant init du kommer att märka posten, som är en kommenterad rad,
# config.vm.synced_mapp "... / data", "/ vagrant"Den synkroniserade mappen kan nås av både den vagrerande rutan och värdmaskinen. Det första argumentet efter konfigurera.vm.synkroniserad_mapp indikerar sökvägen till mappen på värden och det andra argumentet indikerar sökvägen där mappen kommer att monteras på rutan för gästvandrare. Som standard delas också mappen där du skapade Vagrantfilen med rutan vagrant.
Låt oss verifiera detta genom att ssh-in i vår vagrant box.
$ vagrant sshHär listar du filsystemen.
$ df -h
Du kan se att det finns ett stort filsystem luffare monterad på /luffare väg. Anledningen till att den är så stor beror på att Vagrantfile-mappen på min värdmaskin är på en partition som är 632 GB stor och mappen där borta kan växa till den storleken också. Eftersom det är samma mapp som delas med rutan, ger den en vansinnig mängd lagring.
Du kan inspektera innehållet i /luffare och de är desamma som du ser på din värd, nämligen en Vagrantfile och en annan loggfil.
Du kan lägga till mer delad mapp där kommentaren som förklarar syntaxen för den delade mappen visas.
Såhär,
I detta fall en mapp med namnet Delad mapp håller på att läggas till, vilket är en katalog ovan, därav den dubbla punkten före den. Den här mappen är monterad på / var / www / html på insidan av lådan. Det är här de flesta webbservrar som apache och nginx letar efter webbinnehållet som de vill servera.
Du kan helt enkelt få in dina projektfiler, din html, css och js Delad mapp där du arbetar på den på din värdmaskin med grafiska textredigerare som Atom och VSCode . Den vagrerande rutan kommer att fungera som produktionsservern som skulle servera dessa filer.
Nu är frågan, hur ser vi dessa html-filer serveras som en webbsida. Vilket värdnamn du ska ange i webbläsaren?
2. Nätverk
Som standard ger vagrant några användbara konfigurationer. Förfrågan som skickas av din webbläsare till localhost på port 8080 vidarebefordras till port 80 i din vagrantbox. Så om du har en webbserver som körs på din vagrantbox som lyssnar på port 80 (standard http-port) kan du se den webbsidan genom att besöka http: // localhost: 8080
Å andra sidan kanske du vill undvika all vidarebefordran av localhost-port, i vilket fall du kan öppna Vagrantfilen och avmarkera följande rad:
konfigurera.vm.nätverk "privat_nätverk", ip: "192.168.33.10 "Spara ändringarna du gjort och kör vagrant omladdning för att starta om rutan med ny konfiguration. Nu har den en dedikerad privat ip-adress 192.168.33.10 som endast din värd kan komma åt. Så du kan nu öppna webbläsaren och ange http: // 192.168.33.10 och du kan se webbsidorna serveras på standardport 80 på http.
Slutsats
Som du kan se kan Vagrant hjälpa dig att köra dina applikationer lokalt eftersom de skulle köras i produktion samtidigt som du kan arbeta med dem med IDE och textredigerare som du inte skulle ha på en typisk server. Användning av delade mappar och privat nätverk förbättrar avsevärt denna förmåga hos Vagrant.
Låt oss veta om du har fler frågor angående denna handledning eller om det finns något annat ämne som du vill att vi ska täcka.