sql >> Databasteknik >  >> NoSQL >> MongoDB

Hur man distribuerar MongoDB på Heroku

MongoDB Atlas är enkelt och gratis att installera och distribuera MongoDB på Heroku. MongoDB Atlas kallas vanligtvis för multimolndataapplikationsplattformen. Det är en integrerad data- och moln-DB-tjänst som förenklar och accelererar hur användare bygger med data.

När du börjar bygga mer komplexa molnbaserade appar tenderar det att välja rätt verktyg och tjänster att vara ganska överväldigande. Det är dock inte fallet när du väljer den bästa moln DB-tjänsten, eftersom MongoDB Atlas är din bästa lösning.

Å andra sidan är Heroku en plattform som en tjänst (PaaS) som ger utvecklare möjligheten att köra, bygga, manipulera och använda appar i molnet. Heroku stöder en mängd programmeringsspråk.

Denna artikelguide kommer att illustrera hur man distribuerar MongoDB på Heroku. Vi kommer att använda MongoDB Atlas-versionen eftersom den enkelt integreras med de flesta Heroku-applikationer. Denna process kan tyckas komplicerad till en början, men du kommer att inse att ingenting är komplicerat när du dyker djupt in i den. Allt som behövs är att ställa in din MongoDB Atlas-klusteranslutningssträng till en känd Heroku-konfigurationsvariabel, och du är klar.

Atlas-utgåvan är en fullt hanterad moln MongoDB-tjänst som automatiserar MongoDB-klusterhantering i molnet. Det erbjuder användarna automatisk skalning, automatiska säkerhetskopieringar, komplett hantering av sviterna, analysverktyg och ett toleransfel för flera A-Ö. MongoDB Atlas är bland de mest sofistikerade DBaaS.

Följ stegen häri för att lära dig hur du får upp MongoDB och kör snabbt. Du kommer också att kunna se hur du ansluter MongoDB Atlas-klustret till Heroku-apparna genom att följa den djupgående guiden i den här artikeln.

Hur man distribuerar MongoDB på Heroku

Den här artikelguiden förutsätter att du har följande förutsättningar:

  1. Du är väl insatt i MongoDB och har skrivit MongoDB-applikationer
  2. Du är bekant med Heroku och har distribuerat Heroku-applikationer tidigare
  3. Du har installerat Heroku CLI
  4. Du är insatt i Git och har installerat det.

Med de nämnda förutsättningarna, låt oss lära oss mer om ämnet som diskuterats ovan.

Konfigurera MongoDB Atlas Cluster

Först ska vi titta på hur man ställer in MongoDB Atlas Cluster i mindre än fem steg.

Steg 1:Skapa ett MongoDB Atlas-konto

Obs! Om du redan har skapat ett MongoDB-konto med din e-postadress, hoppa över registreringsprocessen och logga in på ditt konto.

Att registrera sig för ett nytt MongoDB Atlas-konto är väldigt enkelt. Du kan välja att använda din e-postadress eller ditt Google-konto för att registrera dig.

Processen är helt gratis; därför behöver du inte oroa dig för att ådra dig ytterligare avgifter.

Följ den här länken för att registrera dig för ett MongoDB Atlas-konto gratis. Fyll bara i dina uppgifter och klicka på knappen "Kom igång gratis" för att få ditt kostnadsfria Atlas-konto.

När du har ett Atlas-konto, fortsätt till nästa steg

Steg 2:Skapa ditt projekt och din organisation

MongoDB Atlas kommer som standard att uppmana dig att skapa en organisation och ett projekt efter att registreringsprocessen har slutförts. Fyll snabbt i de nödvändiga uppgifterna för att slutföra denna process och gå vidare till nästa steg. Organisationen och projektet kommer att användas för att distribuera ditt kluster i framtiden.

Steg 3:Implementera kluster

I denna fas kommer du att välja ett kluster från olika klusteralternativ. För den här artikelguidens skull kommer vi att använda alternativet "Delat kluster", som är det kostnadsfria klusteralternativet som tillhandahålls av MongoDB Atlas. Under alternativet "Delat kluster" klickar du på "Skapa."

Du kommer att bli ombedd att välja några alternativ för ditt kluster på nästa sida, som markerats nedan:

Molnleverantör och region

Här måste du välja var ditt kluster ska distribueras till. Det är viktigt att välja en region som ligger närmast din applikation. Helst bör du välja en konstant region för att minimera latensrelaterade problem. Vi kommer att använda denna region, "N. Virginia (us-east-1), med AWS som vår källmolnleverantör för den här guiden. Vi valde AWS som vår molnleverantör eftersom vi kommer att distribuera på Heroku och vara värd för deras infrastruktur på AWS.

Klusternivå

I det här underavsnittet kommer du att se de tillgängliga klusternivåerna för det klusteralternativ vi valde, i det här fallet de delade klusteralternativen. Här kommer du att se en jämförelse av RAM, lagring, nivåer Baspris och vCPU. Dessa jämförelser hjälper dig att välja rätt nivå som passar ditt projekt. Vi lämnar det till standardnivån "M0 Sandbox" för den här guiden.

Ytterligare inställningar

Det här avsnittet beror på vilken nivå du väljer. Du kan få några ytterligare inställningar beroende på vilken nivå du väljer. Dessa inställningar inkluderar säkerhetskopieringsalternativ och MongoDB-versioner som ska distribueras. Välj MongoDB version 4.4 och lämna säkerhetskopieringsalternativet avstängt.

Klusternamn

Detta är det sista alternativet. Här skulle det hjälpa om du namngav ditt kluster. Jag kommer att kalla vårt kluster "Leafix". Kom ihåg att du inte kommer att få ändra det när du väl har skapat klustret.

Obs:Det är tillrådligt att granska de valda alternativen och göra nödvändiga ändringar innan du skapar klustret med knappen "Skapa kluster".

Steg 4:Skapa en DB-användare för ditt nyskapade kluster

MongoDB Atlas kräver att klienter autentiseras som MongoDB-databasanvändare för att komma åt kluster. Följ stegen för att skapa en DB-användare för ditt kluster.

  • Navigera till avsnittet "Databasåtkomst". Den finns under fliken "Säkerhet" på vänster sida.
  • Klicka på alternativet "Lägg till en ny databasanvändare".
  • En uppmaning visas. Ange din autentiseringsmetod och databasanvändarbehörigheter
  • Använd "Lösenord" som din autentiseringsmetod och ange lösenordet och användarnamnet.

Obs! Det rekommenderas starkt att autogenerera ett starkt lösenord från Atlas för att förhindra osäkerhetsrelaterade komplikationer. När du har autogenererat lösenordet, kopiera och spara det på en bekväm plats för att enkelt återställa det i framtiden. Detta steg är viktigt eftersom vi kommer att kräva lösenordet när vi ansluter till klustret.

  • Ge användaren flest privilegier genom att välja alternativet "Atlas admin".
  • När du är klar klickar du på "Lägg till användare" för att skapa en DB-användare.

Steg 5:Ge auktoriserad IP-adress klusteråtkomst

Detta är det sista steget när du ställer in MongoDB Atlas-klustret. Det här avsnittet kommer att välja de IP-adresser som tillåter oss att komma åt Atlas-klustret. För att bevilja auktorisering, följ stegen som nämns här:

  1. Under Säkerhet väljer du Nätverksåtkomst.
  2. Välj sedan "Lägg till IP-adress."
  3. Välj "Tillåt åtkomst var som helst" och klicka på knappen "Bekräfta" för att slutföra processen.

Det är allt. Du har framgångsrikt konfigurerat ditt MongoDB Atlas-kluster.

Obs :Du vill inte tillåta den här typen av IP-adressåtkomst i en produktionsmiljö på grund av säkerhetsproblem. Du måste identifiera den exakta IP-adressen för din applikation och uttryckligen ställa in IP-adressintervallet. Denna process är skräddarsydd för att förbättra ditt klusters säkerhet.

Ansluter till ditt kluster

För att ansluta till ditt nyskapade kluster, följ den här guiden:

  1. Under avsnittet "Datalagring" i det vänstra navigeringsfältet klickar du på "Kluster."
  2. Klicka på fliken "Anslut".
  3. Välj din drivrutinsversion och kopiera sedan endast anslutningssträngen

När du är klar uppdaterar du anslutningssträngen. Återigen, glöm inte att lägga till ditt användarnamn och lösenord.

Skapa ett Heroku-konto

Att skapa ett Heroku-konto är väldigt enkelt. Besök först Herokus officiella webbplats och registrera dig precis som vi gjorde för MongoDB Atlas. När du har slutfört ditt Heroku-konto, fortsätt och installera Heroku CLI.

Installera Heroku CLI

Det är viktigt att se till att du har Git installerat på ditt Linux OS eftersom Heroku CLI kräver Git. Git är ett populärt versionskontrollsystem som ofta används av de flesta utvecklare. Att installera Git är väldigt enkelt. Öppna din terminal och utför kommandot nedan:

sudo apt-get install git-all

Utdata:

Det kommandot kommer att installera Git i ditt Linux OS. Efter det, kör detta andra kommando för att installera Heroku på ditt Linux OS:

sudo snap install --classic heroku

Utdata:

Ge terminalen tid att utföra kommandot och installera Heroku helt.

Logga in och skapa en ny applikation på Herokus webbplats

Vi tror att du har följt artikeln noga och att du har skapat ett Heroku-konto. Om så är fallet, öppna din Heroku Dashboard. Ange informationen du använde när du skapade ditt Heroku-konto för att logga in på din instrumentpanel. När du har loggat in, fortsätt till nästa steg för att skapa en ny applikation:

  1. Navigera till heroku.com/apps
  2. Välj Ny>Skapa ny app> Välj region>Skapa app.
  3. Ha tålamod medan appen skapas.
  4. När processen är klar kommer du att omdirigeras till din instrumentpanel. Välj avsnittet "Distribuera"

Ansluter Heroku-applikationen till lokala arkiv

Följ implementeringsguiderna i den här artikelns distributionsavsnitt som du tidigare valde.

Fortfarande, logga in på Heroku i avsnittet "Deploy" som vi valde tidigare.

Kör följande kommandon (även angivna i avsnittet Deploy) för att ansluta till Heroku och bygga en ny Dyno från din server/projektrotkatalog:

Obs! Vinkelparenteserna "<> ” som används i exemplen nedan betecknar värdena för identifierare/parameter/argument från användaren. När du kör kommandona bör du utelämna dem.

# Lägg till Heroku fjärrkontroll

heroku git:remote -a <name-of-the-newly-created-app>

# Ta en titt på tillgängliga fjärrkontroller.

# Anslutningen till det nya "heroku" fjärrlagret bör vara synligt.

git remote -v

# På utvecklingsgrenen, begå det senaste arbetet.

git add .

git commit -m 'Write a clear, meaningful commit message here.'

git push origin <development-branch-name>

# Filialer ska checkas ut till masterfilialen.

git checkout master

# Uppdateringar från utvecklingsgrenen slås samman.

git merge <development-branch-name>

git push heroku master

Konfigurera Heroku för att ansluta till MongoDB Atlas Cluster med hjälp av konfigurationsvariabler

Vi hade väldigt roligt när vi snabbt satte upp vårt Atlas-kluster, men vi tror att du kommer att gilla det här avsnittet ännu mer!

Heroku-applikationer som är Atlas-stödda är enkla att bygga upp. Konstruera en konfigurationsvar på applikationsnivå som innehåller ditt kluster anslutningssträng. Du kan säkert komma åt den konfigurationsvarianten i din applikation när den väl har konfigurerats!

Så här gör du:

Steg 1:Öppna Heroku CLI och logga in.

heroku login

Detta kommando tar dig till Heroku-inloggningssidan i din webbläsare. Klicka på knappen "Logga in" om du redan är inloggad. Du kan också använda flaggan -i för att logga in från kommandoraden.

Steg 2:Gör en kopia av min demo-app

Jag har konstruerat en prototyp av Node-applikation som använder MongoDB Atlas och som jag skulle vilja publicera till Heroku för att fortsätta den här lektionen. Klona den och gå sedan till följande katalog:

git clone https://github.com/adriennetacke/mongodb-atlas-heroku-leaflix-demo.git

cd mongodb-atlas-heroku-leaflix-demo

Utdata:

Steg 3:Bygg en Heroku-app

heroku create leaflix

Utdata:

Som du kan se har jag gett mitt blad ett namn.

Hämta din Atlas Cluster-anslutningssträng

Gå tillbaka till instrumentpanelen för ditt Atlas-kluster för att hämta vår anslutningssträng.

  • Välj "Anslut" från rullgardinsmenyn.
  • Välj "Anslut din applikation" från rullgardinsmenyn.

Anslutningssträngen vi behöver för att ansluta till vårt kluster hittar du här. Skriv ner anslutningssträngen.

Klistra in anslutningssträngen i en editor; vi kommer att göra några ändringar innan vi tilldelar den till en Heroku-konfigurationsvariabel.

Atlas har enkelt inkluderat användarnamnet för databasanvändaren vi tidigare skapat, som du kan se. Ersätt "lösenordet" med din personliga databasanvändares lösenord och "dbname" med "sample_mflix", vilket är exempeldataset som vår demo-app kommer att använda för att slutföra anslutningssträngen och göra den giltig.

Obs:Om du inte har lösenordet för din databasanvändare, generera ett automatiskt och använd det i anslutningssträngen. Om du autogenererar den igen, kom ihåg att uppdatera den! Gå till Databasåtkomst> Klicka på "Redigera" på databasanvändaren du vill hitta lösenordet för> Återställ ditt lösenord> Autogenerera ett annat säkert lösenord.

Skapa en MONGODB_URI-konfigurationsvariabel

Nu när vi har skapat den korrekt är det dags att spara vår anslutningssträng i en Heroku-konfigurationsvariabel. Ställ in MONGODB_URI-konfigurationsvariabeln till vår anslutningssträng:

heroku config:set MONGODB_URI="mongodb+srv://yourUsername:[email protected]/sample_mflix?retryWrites=true&w=majority"

Här är några viktiga punkter att tänka på:

  • Detta kommando består endast av en rad.
  • Eftersom vår anslutningssträngs format innehåller specialtecken måste den omges av citattecken.

Så enkelt är det! Du har framgångsrikt lagt till ditt Atlas-kluster anslutningssträng till en Heroku-konfigurationsvariabel, så att du kan komma åt den på ett säkert sätt efter att din app har distribuerats till Heroku.

Obs! Du kan också ange den här konfigurationsvarianten i Heroku Dashboards fliken "Inställningar" för din app. Gå till Leaflix> Inställningar i dina appar. Klicka på knappen "Reveal Config Vars" i avsnittet Config Vars och ange din config-variant där.

Det sista steget är att ändra din applikations kod för att ge åtkomst till dessa variabler.

Använda Heroku config var-värden för att ansluta din app till ett MongoDB Atlas Cluster

Du kommer att märka att vi har hårdkodat vår Atlas-klusteranslutningssträng i vår demoapplikation. Vi måste omarbeta vår kod för att använda den tidigare genererade Heroku-konfigurationsvariabeln.

Miljövariabler används för att exponera konfigurationsvariabler för din applikations kod. Språket du väljer för att komma åt dessa variabler avgör hur du kommer åt dem; till exempel i Java skulle du använda System.getenv('nyckel') samtal, och i Ruby skulle du använda ENV['nyckel'] samtal.

Eftersom vi vet att vår applikation är skriven i Node kan vi använda variabeln process.env i Node.js för att ansluta till vårt Atlas-kluster. Ändra uri-konstanten i server.js-filen till:

const uri = process.env.MONGODB_URI;

Det avslutar vår diskussion. Vår applikation kommer säkert åtkomst till vår Atlas-klusteranslutningssträng när den väl har distribuerats eftersom vi har lagt till den som en Heroku-konfigurationsvar.

Spara filen, utför ändringen och distribuera sedan till Heroku.

git commit -am "fix: refactor hard-coded connection string to Heroku config var"

git push heroku master

Din applikation har nu distribuerats! Med detta kommando kan du dubbelkolla att minst en instans av Leaflix körs:

heroku ps:scale web=1

Du vet att minst en instans är igång om du får ett meddelande som säger:"Skalning av dynos ... klar, kör webben på 1:Free."

Slutligen, navigera till din app webbplats. Du kan göra det genom att följa stegen nedan:

heroku open

När du trycker på "Behöver du ett skratt?" knappen kommer vår programvara att välja en film baserad på kategorin "Komedi" i genreområdet. Om allt är i sin ordning bör du se något så här:datasetet sample_mflix används i det här exemplet, som kommer direkt från vårt Atlas-kluster.

Konfigurera IP-adresser för Heroku i MongoDB Atlas

Vårt kluster är redan i drift och vår app är nu live på Heroku!

Vi ställer in vårt kluster för att acceptera anslutningar från vilken IP-adress som helst för att ta oss igenom artikelguiden. Du föredrar att enbart begränsa åtkomsten till din applikation, och det finns några alternativ på Heroku för att göra det.

Det första alternativet är att använda ett tillägg för att ge din applikation en statisk utgående IP-adress som du kan använda för att begränsa åtkomsten i Atlas. Några exempel finns här.

Ett annat alternativ är att använda Heroku Private Spaces och använda utrymmets statiska utgående IP-adresser. Detta är ett dyrare val, men det eliminerar ett extra tillägg.

Det finns olika dokument och artiklar där ute som hävdar att du kan använda AWS eller Heroku IP-intervall för att ge tillgång till IP:er som kommer från ditt AWS-område eller Heroku Dynos i dessa regioner. Även om detta är tänkbart, rekommenderas det inte eftersom sådana intervall kan ändras med tiden. Så istället föreslår vi att du använder en av de två metoderna som anges ovan.

Du kan använda IP-adresserna för din applikation för att konfigurera din brandvägg i Atlas när du väl har dem.

Ta bort alla befintliga IP-intervall från ditt Atlas-kluster och lägg sedan till dem i din tillåtna lista. Du kan göra det genom att följa proceduren vi använde för att "Lägga till IP-adresser och ta bort befintliga IP-intervall."

Det är allt! Du har framgångsrikt distribuerat MongoDB på Heroku


  1. Hur får jag det datum då en MongoDB-samling skapades med MongoDB C#-drivrutinen?

  2. $filter inuti $project MongoDB med vårdata

  3. Hur jämför man två mongodb-samlingar?

  4. MongoDB $toDouble