Snabba webbdistribution för Laravel med GitHub, Linode och RunCloud.io

Om du är en PHP-programmerare som arbetar med Laravel-ramen, är jag säker på att du distribuerar din webbapplikation på molnservrar på leverantörer som Linode, Digital Ocean, Vultr och resten. Det beror på att med en ram som Laravel, som fungerar tätt med verktyg som Git och Composer, är det mindre och mindre troligt att din ansökan kan serveras från en gemensam värdmiljö.

Den här artikeln visar hur du konfigurerar din webbserver för din Laravel-applikation på Linode Cloud-värd genom att använda RunCloud.io-serverhanteringsverktyget.

Du kan registrera dig för ett gratis RunCloud-konto nu. 

Vi kommer att använda Git tillsammans med GitHubs Webhook-funktion. När allt är klart kan vi helt enkelt göra en förbindelse och en push till GitHub, och din server uppdateras med den senaste källkoden. RunCloud gör det enkelt att konfigurera din server för att kunna distribuera din ansökan så här, och jag ska visa dig hur man gör det idag.

Självklart kan du välja vilken gren du vill att servern ska hämta. Det kan vara befälhavaren eller någon annan gren som du ställer in, vilket innebär att denna metod för utplacering är idealisk för att integrera i a.workflow tillsammans med en scen och produktionsmiljö. 

Jag bör också nämna att detta inte är begränsat till GitHub repositories. Det kommer att fungera med GitLab, Bitbucket, och förmodligen någon annan Git-värdtjänst, så länge de har funktionerna Webhook och Deployment-nyckel.

Också värt att nämna är att RunCloud arbetar med någon av cloud hosting-leverantörerna. Linode valdes rent som ett exempel på en lämplig cloud hosting provider.

Innan vi börjar, vill jag att du ska veta att du kommer att installera Nginx webbservern, som fungerar bäst med Laravel. RunCloud har dock möjlighet att installera Apache webbserver också, i så fall kan du utnyttja .htaccess-konfigurationer.

Jag kommer att hoppa över delen om registrering eftersom jag är säker på att du kan komma runt det ganska snabbt och enkelt.

Om du är redo, låt oss komma igång.

Distribuera en Ubuntu 16.04 LTS-server på Linode

När du är inloggad på din instrumentbräda på Linode.com behöver du bara distribuera en ny linode (de kallar deras serviceinstans en "linode"). Nedan till höger på instrumentpanelen borde du se en länk som säger Lägg till en linode.

Därefter väljer du den linode-instans du vill ha och det datacenter där du vill använda din linode och klickar på Lägg till denna Linode knapp.

Vid det här laget bör du ha en linode som visar status för Skapas.

När det här är klart kommer du att ha en tom server. Du måste fortfarande distribuera en bild för operativsystemet för den här servern. Och för att få det att fungera med RunCloud senare måste du distribuera ett nytt Ubuntu 16.04 LTS operativsystem.

Klicka på linodenamnet. I exemplet ovan är namnet linode4362539. Detta tar dig till nästa skärmdump. Klicka bara på länken som säger Implementera en bild.

Se till att du väljer Ubuntu 16.04 LTS som bilden. I övrigt kan du välja vilken konfiguration du tycker är lämplig. För denna 20 GB-rymd och 1 GB RAM-linode trycker jag på min bytesdisk till maximal inställning, vilket är 512 MB.

Ange ditt lösenord och håll det säkert. Du behöver det igen senare. När du är klar klickar du på distribuera knapp.

Klicka nu på Känga knappen för att aktivera servern.

Du bör kunna se att din linode-server inte är märkt med Löpning i rätt widget box. Låt oss försöka ansluta till servern och se om den fungerar. Klicka på Fjärranslutning flik.

I Fjärranslutning fliken borde du kunna se mer information om din server, inklusive IP-adresserna. Kopiera den här informationen och håll den säker. Vi kommer att behöva det igen snart.

För att ansluta till din server kan du använda någon SSH-klient som du är bekant med. Eller om du är som jag, och du inte vill gå ifrån webbläsaren, kan du också använda en inbyggd, webbaserad SSH-klient i Linode. Bläddra ner och leta efter en länk som säger Starta Lish Console.

Genom att klicka på den här länken kommer Lish, den webbaserade SSH-klienten, att köras. Ange bara rot som ditt användarnamn och lösenordet du skapade när du installerade bilden.

OK! Din server är redo att konfigureras med PHP, Nginx och MariaDB (och andra verktyg). Det är här du kommer att använda RunCloud.

Om du inte redan har registrerat ett RunCloud-konto måste du göra det nu. Det finns ingen risk att försöka RunCloud bara för denna handledning, eftersom det ger dig en fem dagars gratis provning som ger dig fullständig tillgång till alla Pro-planfunktionerna så att du kan testa dem. När fem dagarsperioden har passerat, om du inte uppgraderade, oroa dig inte - du är bara nedgraderad till sin lediga användarnivå. Men på bara $ 10 per månad för Pro-plankontot, vilket tillåter obegränsade servrar, är RunCloud ett ganska coolt verktyg att ha i din utvecklingsarsenal.

Så från RunCloud vill vi ansluta vår Linode och göra den till en fungerande webbserver på Internet.

På din Dashboard på RunCloud, klicka på knappen som säger Anslut en server längst upp till höger.

Anslut din Linode-server till RunCloud och starta Konfigurera din webbserver

Ange önskad information om din server på Linode. Du kan gå tillbaka till din Linode Dashboard för att kolla in dem. Men den viktigaste delen är din IP-adress. Se till att du har rätt. Annars kommer anslutningsprocessen och installationen att misslyckas.

När du är klar klickar du på Anslut den här servern.

Nu kommer RunCloud presentera dig med en kod som du behöver köra på din Linode-server. Kopiera bara allt detta eftersom vi kommer att exekvera det i Lish-konsolen igen efter det här.

Om du fortfarande har Lish-fönstret aktivt kan du klistra in installationsskriptet du kopierade från RunCloud-instrumentpanelen tidigare.

Klistra in installationsskriptkoden och tryck på Stiga på nyckel. Efter ett tag när du tittar på RunCloud-instrumentpanelen ser du att RunCloud visar en framdriftsfält och meddelanden som visar installationsframsteg som RunCloud synkroniserar sig med servern. Det betyder att en anslutning har gjorts.

När installationen är klar kommer du att presenteras med root-lösenordet till din MariaDB-databas. Se till att du håller den säker. Det finns också en MariaDB-användare som skapades med användarnamnet runcloud.

När allt är klart kan du gå tillbaka till din RunCloud Dashboard och kontrollera din serverlista. Du bör ha en låda med din nya server så här.

Din webbserver kanske inte har startat. Klicka på den servern för att börja hantera den. Den här skärmbilden nedan är huvudvisningen för att hantera en server.

Bläddra i menyn till vänster och leta efter tjänster.

Här kan du slå på både Apache och Nginx. Senare när du skapar ditt webbapplikationsprojekt kan du välja att distribuera PHP-versionen tillsammans med vilken typ av webbserver du vill köra: antingen Apache-Nginx-hybrid eller Nginx-inbyggd.

För nu, låt oss bara slå på erforderliga tjänster.

Vid denna tidpunkt borde vi kunna starta en webbläsare och ange IP-adressen för den här servern. Du ska få den vanliga tomma hemsidan från RunCloud.

Skapa en webbapplikation (Virtual Host) i din server med RunCloud

Nu när din server är uppbyggd och ansluten till RunCloud, kan du bara använda RunCloud för att hantera den. När man hanterar en server med SSH är det alltid ett problem att skapa en virtuell värd. Saker är mycket enklare med RunCloud.

Innan du kan distribuera ditt Laravel-projekt behöver du en plats där appen kommer att leva. Så nu behöver du skapa en virtuell värd på din webbserver. I RunCloud nomenklatur kallas detta en "Webbapplikation'.

Från din RunCloud Dashboard, efter att du har valt din server, leta reda på Webbapplikation meny från vänster sidofält.

Klicka nu på Skapa ansökan knapp.

På nästa skärm ställer du inställningarna för din webbapplikation.

Det här är de inställningar jag valde för det. Självklart är du fri att ställa in egna värderingar som du tycker är lämplig.

Web-applikationsnamn: my-laravel-app Domännamn: fotofaze.me (bara en domän som jag har tillgång till) Användare: runcloud Public Path: / public PHP Version: 7.1 Web Application Stack: Native NGINX

Låt mig förklara om de värden som ställs in.

Du kan ange vilket namn som helst för din webbapplikation som referens till ditt projekt. När det gäller domännamnet, ange ett domännamn som du ska använda för projektet. Senare kommer du att kunna ställa in extra domännamn för projektet. Normalt vill du att din webbplats ska fungera med och utan "www" -domänen. Vi kan lägga till det senare.

Användare refererar till Linux-användaren på din server. Du kan skapa fler användare om du vill tilldela detta projekt till en viss användare. Och den här användaren kommer att ha åtkomst till servern via SSH. Men jag använder bara standard runcloud-användaren som skapades under serverns installation.

Allmän väg är var din offentliga webbmapp är. Som standard används en Laravel-applikation med "/offentlig"Mapp för den offentligt tillgängliga webbmappen. Alla andra mappar sitter utanför den här mappen. Så det är därför vi sätter "/offentlig" för detta.

Jag väljer den senaste PHP 7.1-versionen. Och äntligen för Webapplikationsstack, Jag väljer Native NGINX. Ett annat alternativ är hybriden NGINX + Apache2, som ger dig tillgång till .htaccess-konfigurationsfilen. Men jag går med NGINX hela vägen för det här alternativet.

Vid den här tiden kommer din webbplats fortfarande inte att fungera med din domän än. Vi behöver fortfarande konfigurera den med rätt DNS. Låt oss göra det i nästa avsnitt.

Ställa in domännamnet, DNS och SSL

I föregående avsnitt ställde jag fotofaze.me som domännamn. Men jag vill också www.fotofaze.me att arbeta med den här webbapplikationen. Så innan vi sätter DNS, låt oss göra ett steg i RunCloud för den här servern.

Efter att du skapat din webbapplikation bör du se din webbapplikationspanel. Härifrån klickar du på Domän namn flik.

Vi kan se att vi redan har fotofaze.me listade. Jag behöver fortfarande lägga till www.fotofaze.me på listan. Ange bara domännamnet och tryck på "Fäst domännamn" knapp.

Jag använder Namecheap för mina domännamn. Och den stora delen är att den kommer med en inbyggd DNS-server. Annars kan du behöva använda CloudFlare eller Linodes egen DNS-tjänst. Vad vi behöver göra är att ställa in två DNS-poster i DNS-hanteringen. En är en A-post, och den andra är en CNAME.

Från min Namecheap Domain Name List klickar jag bara på Hantera knapp.

Härifrån klickar jag på Avancerad DNS flik.

Här, oavsett vilken DNS-tjänst du använder, måste vi ange följande DNS-poster:

Typ: En värd: @ Värde: 139.162.5.220 (din IP-adress för din server) Typ: CNAME-värd: www Värde: fotofaze.me (ditt domännamn)

Så här ser mina inställningar ut i Namecheap Advanced DNS.

Ge det ett tag för DNS-ändringarna att lösa innan du testar din webbplats i webbläsaren. När ändringarna är aktiva borde du få NGINX 403-felet när du besöker din webbplats. Detta beror på att din /offentlig mappen är tom, men det låter dig veta allt som fungerar.

En sista del när det gäller domännamnet är att aktivera SSL. På så sätt kan vår webbplats vara tillgänglig med hjälp av https: // protokollet på port 443 istället för http: // på port 80. Det finns många fördelar för detta. Bortsett från säkerhetsändamål är det också bra för SEO.

Låt oss gå tillbaka till My-Laravel-App Web Application Dashboard och klicka nu på SSL / TLS flik. SSL-certifikat används för att kosta hundratals dollar. Men tack vare Låt oss kryptera kan vi nu distribuera SSL-certifikat för våra domännamn gratis. Det kan vara väldigt tekniskt om du skulle lägga till Låt oss kryptera SSL-certifikat manuellt, men med RunCloud är det en kaka med en klickprocess.

En gång här kan du välja Låt oss kryptera som din SSL-metod. Och klicka sedan på Lämna knapp.

Din webbplats ska fungera med https: // protokoll nu.

Skapa din applikationsdatabas

Eftersom vi kommer att distribuera en Laravel-app, kommer vi att behöva en databas. Låt oss få det gjort nu. Bläddra i menyn till vänster och klicka på Databas meny.

Klicka nu på Skapa databas knapp.

Ange bara ett namn för din databas och klicka på Lägg till ny databas knapp.

Nu måste vi lägga till en databasanvändare och tilldela den till vår databas. Klicka på Lägg till användare knapp.

Ange bara ett användarnamn och ett lösenord. Och klicka sedan på Lägg till knapp.

Därefter tilldelar vi den nyskapade användaren till den tidigare skapade databasen. Klicka på den lilla Bifoga användare ikonen på din databaslista.

Eftersom du bara har en användare just nu, se till att det är valt och klicka sedan på Fästa knapp.

En gång gjort är det här vad du kommer att se. De laraveluser är nu kopplad till laravelapp databas.

Nu är vi bara redo att göra lite PHP-programmering med Laravel. Men före det, låt oss skapa ett GitHub-projektförråd där vi senare kan trycka vår källkod.

Ställa in ditt GitHub-projekt

En solo webbutvecklare skulle normalt behålla tre platser där källkoden lever:

  1. Lokal dator för utveckling
  2. Git-värdtjänst (dvs. GitHub) för samarbete, versionskontroll, backup, etc..
  3. Live-servern

I den här delen av handledningen skapar vi vårt projektförråd på GitHub. Senare använder vi detta förråd för att driva arbetet från vår utvecklingsmiljö på vår lokala dator till det här specifika GitHub-projektförrådet.

Över på GitHub, om du är inloggad kan du klicka på det lilla pluset (+) ikonen på höger sida av toppstången. Och du bör se en meny för Nytt arkiv. Klicka på det.

Ange bara detaljerna i ditt projekt med något som nedan. Klicka på den gröna knappen som säger Skapa Repository.

Du borde ha en vy som följer nu.

Området markerat med den röda rutan är ditt projektets förvaringsadress på GitHub. Vi kommer att behöva detta senare när vi installerar projektets avlägsna representation från vår lokala utvecklingsdator.

Nu är vi redo att börja utveckla på vår lokala dator och trycka koden på GitHub.

Ställa in ditt Laravel-projekt på din lokala dator

I denna del av handledningen kommer vi att ställa in vår lokala dator med vår utvecklingsversion av vårt Laravel-projekt. Senare laddar vi upp det till en Git-värdtjänst (vi använder GitHub). Därefter får vi vår Linode-server för att hämta en del kod från GitHub så att vår produktionsserver alltid ska använda den senaste källkoden.

Precis som en sidnot, hoppas den här handledningen om hur du konfigurerar ditt GitHub-konto med din offentliga SSH-nyckel för säker kommunikation. Vi använder terminalskärmen ganska mycket för SSH. Jag brukar använda Putty på Windows.

Om du är ny på GitHub kanske du vill gå igenom handledningen om att generera och ställa in din lokala maskin med en SSH-nyckel som ska användas med GitHub.

Att hantera Git-utplacering till din live-server kan enkelt sättas upp med RunCloud. När vi har allt som ställts in, med en enkel Git-push från din lokala dator, kan du alltid vara säker på att din server hämtar uppdateringarna automatiskt. Ingen FTP, inga fler kommandoradsinstruktioner.

Det enklaste sättet att starta ett Laravel-projekt är att använda kompositören. Om du inte är bekant med Kompositören, se till att du läser om den och installerar den på din lokala dator. Komponist är inte bara för Laravel. Kompositören kommer att göra hantering av biblioteken och beroenden för något PHP-projekt jämnare, och dess användning anses vara integrerad i modern PHP-applikationsutveckling.

Öppna ditt föredragna terminalverktyg och kör följande kommando för att skapa ett Laravel-projekt.

$ composer create-project --prefer-dist laravel / laravel my-laravel

Det kan ta en stund eftersom Composer hämtar och installerar Laravel på din dator. Kompositören skapar en mapp som heter my-laravel och lagra allt där inne. Låt oss först komma in i den här mappen.

$ cd my-laravel

Om .env-filen

För att säkerställa att din Laravel-app fungerar korrekt måste du konfigurera inställningarna för databasanslutning. Du kan göra det genom att redigera .env fil. Använd någon textredigerare som du är bekant med och redigera den här filen. Här är vad en typisk .env filen skulle innehålla. Du kan uppdatera det enligt dina egna behov.

APP_NAME = Laravel APP_ENV = lokal APP_KEY = APP_DEBUG = sant APP_LOG_LEVEL = debug APP_URL = http: // localhost DB_CONNECTION = mysql DB_HOST = 127.0.0.1 DB_PORT = 3306 DB_DATABASE = homestead DB_USERNAME = homestead DB_PASSWORD = hemlig ... 

Tillbaka till kommandoradsverktyget, låt oss först skapa en nyckel för denna laravel-app. Ange följande kommando i terminalen. Följande kommando uppdaterar .env-filen med en nyckelhack.

$ php hantverksnyckel: generera

Låt oss nu initiera den för Git-spårning.

$ git init $ git lägg till --all $ git commit -m "first commit"

Om Default. Gitignore av Laravel

Kanske borde jag också förklara lite om .gitignore fil som kommer med Laravel. Du kan titta på den här filen och se vilka filer som inte spåras. Till exempel, .env som lagrar dina databasanslutning detaljer spåras inte. Det innebär att det antas att du kommer att använda olika .env filer för din lokala dator och för din live-server.

I det föregående avsnittet pratade jag om din avlägsna Git-repository-adress på GitHub. Kör kommandot nedan med din egen adress.

$ git remote lägg till ursprung [email protected]: kidino / my-laravel.git

Därefter kommer vi att berätta för vårt lokala Git-projekt var ligger vår projektplats på GitHub. För det behöver vi lägga till en fjärrförvaringsrepresentation.

$ git push -u ursprungsmästare

Om du gör det rätt måste ditt projekt över på GitHub ha uppdaterats med något liknande. Om du stöter på problem kanske Git inte är korrekt konfigurerad på din dator, eller du genererade inte din lokala SSH-nyckel.

Kolla GitHubs webbplats för att hjälpa dig med det.

Nu kan vi börja installera automatisk distribuering med hjälp av webb krokar och triggers. När vi har det kommer din kod automatiskt att skickas till din server via RunCloud varje gång du trycker på ditt arbete till GitHub.

Ställa in Git Web Hook i RunCloud

För att göra detta måste vi först skapa en implementeringsnyckel via RunClouds panel. Från din serverpanel, i den vänstra menyn, ska du kunna hitta en meny märkt Distributionsnyckel.

Du borde redan ha en för användare runcloud. Om du kommer ihåg, när vi skapade webbapplikationen, nämnde vi att användaren är runcloud.

Klicka på den lilla ögonikonen för att visa SSH-tangenten för den här användaren. Om du får något så här betyder det att en SSH-nyckel aldrig skapades för den här användaren tidigare. Klicka bara på ok så att en ny SSH-nyckel kommer att skapas.

När det är okej kommer du att presenteras med en layout så här. Detta är den SSH-nyckel som du behöver ange i GitHub. Med detta kan GitHub känna igen draförfrågningar när servern vill dra in nya uppdateringar. Kopiera allt.

Låt oss nu gå över till GitHub.

Gå in i ditt projekt och klicka på fliken som säger inställningar. Klicka sedan på Distribuera nycklar meny i vänster sidofält.

Eftersom du kanske inte har någon nyckel, klickar du bara på Lägg till implementeringsnyckel knapp.

Ge det bara ett namn och då kan du ange din SSH Deploy Key som vi fick från RunCloud. Klicka på Lägg till nyckeln knapp.

Därefter kommer vi att sätta upp en Web Hook-utlösare. En GitHub webbkrok fungerar så här - när vi trycker på nya uppdateringar till GitHub kan vi få GitHub meddela andra tjänster eller servrar om det nya trycket. I det här fallet kommer vi att berätta för GitHub att meddela vår live-server. Och det här kan enkelt göras via RunCloud.

I RunCloud öppnar du din webbansökan som du skapade tidigare. Och klicka på fliken märkt Git.

Bläddra ner och ange detaljer om ditt förråd på GitHub. Så här ser det ut som det projekt vi har gjort i denna handledning. Du kan ställa in din egen filial för live-utplacering om du inte vill att den ska vara mästare. Men för det här exemplet kommer vi att hålla fast vid mästaren.

Vad detta betyder är att när du trycker på din huvudgren till GitHub, kommer live-servern att ta det som ett tecken för att uppdatera källkoden på servern. Det kommer då att göra ett drag av huvudgrenen och uppdatera sig själv.

Om du är redo, klicka på knappen märkt Fäst Git Repository.

Detta är den uppfattning som du får när du har uppdaterat din webbapplikation med en Git-implementering.

Du kan se nu att du har en Git WebHook-URL. Detta är den webbadress som vi kommer att kopiera och lägga in i GitHub.

Innan vi gör det, låt oss anpassa vårt installationsprogram på vår server.

Utvecklingsskriptet är bash-skriptet som du kan använda för att instruera servern att göra vissa saker före eller efter att GIT-dragningen händer. Om du använder Laravel kommer du att veta att Laravel starkt beror på artisan-kommandot och kompositören för att underlätta din utveckling och utplacering.

För att ändra installationsskriptet, rulla ner till GIT Deployment Script på fliken GIT för webbapplikationen. Här kan du lägga till ditt eget skript för att springa. Var noga med att inkludera git-dragningen någonstans i ditt installationsskript. Du kan skriva manuset med ersättare för kort användning.

Nedan är manuset som jag använder.

$ git merge $ composer dump-autoload -o $ composer installera $ php artisan migrate --force $ php artisan klar sammanställd $ php artisan view: rensa $ php artisan config: rensa $ php artisan optimera $ composer dump-autoload -o $ php artisan kö: starta om

Du kan använda samma skript. Markera kryssrutan och klicka på Spara knapp.

Gå nu tillbaka. Vi behöver fortfarande sätta vår Git Webhook URL i GitHub.

Kopiera den här webbadressen och sedan fortsätter vi till GitHub. I GitHub, fortsätt till ditt projektförråd. Klicka sedan på inställningar flik. Då på Webhooks meny från sidofältet. Och sedan på Lägg till Webhook knapp.

Klistra in Git WebHook-webbadressen som vi fick från RunCloud i textfältet för nyttolast URL. Se till att du väljer application / json för Innehållstyp. Det borde vara tillräckligt bra. Klicka sedan på Lägg till Webhook knapp.

Vid det här laget bör vi kunna göra en Git-push från vår lokala maskin, och live-servern uppdateras automatiskt. Men det finns fortfarande en sak som vi behöver göra.

Om du kommer ihåg skrev jag om .gitignore och .env-filen. Eftersom vi inkluderade .env-filen i vår .gitignore-fil saknar vår Laravel-app på servern den nödvändiga .env-filen. Vi måste skapa det för att avhjälpa situationen.

Vi kan använda SSH och terminalen. Alternativt kan vi också använda filhanteraren i RunCloud. Låt oss anta att du använder SSH som Putty eller något annat terminalverktyg. Om du kommer ihåg, tidigare skapades den här webbapplikationen med hjälp av runcloud-användaren. Se till att du ansluter via SSH med den användaren också.

Du måste bläddra i din webbapplikationsmapp. Och kör sedan följande kommando.

$ cd / home / runcloud / webapps / my-laravel-app $ cp .example.env .env $ php artisan-nyckel: generera

Glöm inte att uppdatera .env-filen.

Nu borde du ha .env-filen med den genererade hash-nyckeln. Du behöver fortfarande uppdatera den här filen och uppdatera den med inställningarna för databasanslutning, precis som du skapade dem i tidigare steg.

Låt oss prova en Git Push

Det enda du behöver göra nu är att göra en uppdatering på den lokala maskinen och trycka den på GitHub.

Jag gjorde en enkel redigering på welcome.blade.php fil i resurser / vyer mapp.

Låt oss göra ett engagemang och sedan trycka det på servern.

$ git add -all $ git commit -m "uppdatering welcome.blade.php" $ git push origin master

Om allt går som planerat kan du starta webbsidan i webbläsaren och se de ändringar du just gjort. Grattis - du har uppdaterat din server utan att behöva tillgripa en S / FTP-uppladdning.