Hur man distribuerar en nodapplikation och databas till Heroku

Heroku är en molnbaserad, helt hanterad plattform som en tjänst (PaaS) för att bygga, köra och hantera appar. Plattformen är flexibel och designad med DX-stöd för dig och ditt lags föredragna utvecklingsstil och för att hjälpa dig att vara fokuserad och produktiv.

Utvecklare, team och företag i alla storlekar använder Heroku för att distribuera, hantera och skala appar. Oavsett om du bygger en enkel prototyp eller en affärskritisk produkt, ger Herokus helt hanterade plattform dig den enklaste vägen att leverera appar snabbt.

Med funktioner som Heroku Runtime, Heroku Postgres (SQL), Heroku Redis, tillägg, dataklipp, appmätvärden, smarta containrar, support av företagskvalitet, GitHub-integration och mycket mer ger Heroku utvecklare friheten att fokusera på sin kärnprodukt utan distraktion av att underhålla servrar, hårdvara eller infrastruktur.

En av Herokos kärnfunktioner är att distribuera, hantera och skala appar med dina favoritspråk [Node, Ruby, Python, Java, PHP, Go och mer].

I den här artikeln visar jag dig hur du tar en befintlig Node.js-app och distribuerar den till Heroku - allt från att skapa ditt Heroku-konto till att lägga till en databas i din distribuerade applikation.

Förutsättningar

I min tidigare artikel skrev jag om "Att bygga en SlackBot med Node.js och SlackBots.js" och jag lovade att skriva en uppföljningsartikel för att visa hur du är värd för SlackBot på antingen Heroku, Zeit eller Netlify och publicera den till Slack Apps-butik. Tja, det här är uppföljningsartikeln men utan delen "Publishing to Slack Apps". Vi kommer att täcka det i en annan artikel.

Jag antar att du redan har / känner till följande:

  • Läs min tidigare artikel
  • Byggde inspireraNuggets SlackBot
  • Git, Node och npm installerat
  • Ett gratis Heroku-konto
  • Heroku CLI installerad

Bonus

Om du inte har npm, Node och Heroku CLI installerat eller ett Heroku-konto redan, här är en snabb bonus [Ja, du är välkommen :)].

Installerar npm och nod

  • Node.js är en JavaScript-runtime byggd på Chrome's V8 JavaScript-motor.
  • npm är pakethanteraren för Node.js. Ett open source-projekt skapat för att hjälpa JavaScript-utvecklare att enkelt dela paketerade kodmoduler.

Du kan helt enkelt ladda ner Node.js här. Oroa dig inte, npm kommer med Node.js, så det här installeras båda ✨

Skapa ett gratis Heroku-konto

Vänligen gå hit och fyll i registreringsformuläret. Det är ganska enkelt.

Installerar Heroku CLI

Heroku Command Line Interface (CLI) gör det enkelt att skapa och hantera dina Heroku-appar direkt från terminalen. Det är en viktig del av att använda Heroku. [Tja, du kan välja att använda GitHub-integrationsfunktionen och Heroku Dashboard men ja du bör lära dig att använda CLI]

Heroku CLI kräver Git, det populära versionskontrollsystemet. Om du inte redan har Git installerat skrev jag den här artikeln för att hjälpa dig.

Heroku CLI för Mac OS

brew tap heroku/brew && brew install heroku 

eller ladda ner installationsprogrammet.

Heroku CLI för Ubuntu

sudo snap install --classic heroku 

Heroku CLI för Windows

Ladda ner installationsprogrammet för 64-bitars eller 32-bitars.

Andra installationsmetoder

Snälla Läs detta.

Komma igång med Heroku CLI

  • Verifiera din installation
heroku --version 

heroku / 7.30.1 linux-x64 nod-v11.14.0

  • Logga in på ditt Heroku-konto

Det finns två sätt att göra detta:

  • Webbaserad autentisering
heroku login 

Följ instruktionerna och logga in via din webbläsare och återgå sedan till din terminal.

  • CLI-aut

Detta är ett säkrare alternativ eftersom det sparar din e-postadress och en API-token ~/.netrcför framtida användning.

heroku login -i 

Distribuera din Node.js-app

Jag antar att du redan har byggt SlackBot. Om du inte har det, vänligen klona det färdiga projektet.

Projektet är en enkel Slackbot som visar slumpmässigt inspirerande tekniska citat och skämt för utvecklare / designers.

git clone //github.com/BolajiAyodeji/inspireNuggetsSlackBot.git && cd inspireNuggetsSlackBot 

Låt oss nu distribuera vår app till Heroku ??. Jag visar dig två sätt att göra detta:

Distribuera via Heroku Git

Detta görs via Heroku CLI.

Checklist️ Checklista
  • Ange vilken version av Node.js som ska användas för att köra din applikation på Heroku i din package.jsonfil.
"engines": { "node": "10.16.0" }, 
  • Ange ditt startskript.

    Skapa helt enkelt en Procfile(utan filtillägg) och lägg till

web: node index.js 

Heroku letar först efter denna Procfile. Om ingen hittas kommer Heroku att försöka starta en standardwebbprocess via startskriptet i din package.json.

  • Starta din app lokalt med heroku lokala kommando för att vara säker på att allt fungerar bra
heroku local web 

Din app ska nu köras på // localhost: 5000.

  • Glöm inte att .gitignore
/node_modules .DS_Store /*.env 
? Låt oss distribuera

Hur detta fungerar är att du redan har projektet som arbetar med lokalt och du har redan gått till GitHub.

  • Springa heroku create

I grund och botten skapar detta kommando en ny Heroku-app för dig med någon slumpmässigt genererad domän och lägger till Heroku i ditt lokala Git-arkiv.

  • Kör nu git push heroku master

Detta är det magiska kommandot, det skjuter din app till Heroku, installerar den där och startar den på din tilldelade domän.

I exemplet ovan är det //lit-cove-58897.herokuapp.com/

Du kan alltid göra ändringar i dina appinställningar och domäner i din Heroku Dashboard

  • Besök nu din app i din webbläsare
heroku open 
  • Du kan också visa information om din löpande app med hjälp av en av loggningskommandona. Detta är mycket användbart vid felsökningsfel.
heroku logs --tail 

Distribuera via GitHub-integration

Du kan konfigurera GitHub-integrering på fliken Distribuera appar i Heroku Dashboard.

Checklist️ Checklista
  • Alla tidigare checklistor gäller här - se till att appen redan har distribuerats till GitHub
? Låt oss distribuera

Hur den här metoden fungerar är att du drar hela ditt projekt till GitHub och integrerar det i Heroku. Varje gång du trycker på distribueras den från GitHub till Heroku. Ganska cool, eller hur?

  • Logga in på din Heroku Dashboard och skapa en ny app
  • Välj ditt appnamn och din region

Nu har din app skapats

  • Klicka på fliken distribution och bläddra till avsnittet Distributionsmetod
  • Klicka knappen Anslut till GitHub
  • Nu har du avsnittet Anslut till GitHub , sök efter förvaret och distribuera.
  • Nu har din app implementerats framgångsrikt

Automatisk implementering

Nu är din app distribuerad men du måste fortsätta distribuera manuellt. Du måste aktivera automatiska distributioner för en GitHub-gren, så Heroku bygger och distribuerar alla pushar till den grenen.

  • Bläddra till automatiska utlöses sektionen

Välj den gren du vill distribuera. Helst bör detta vara masterfilialen men ändra det efter dina önskemål.

Nu kommer varje push till master(eller den gren du valde) att distribuera en ny version av den här appen.

Node.js Buildpack

I Heroku är Buildpacks skript som körs när din app distribueras. De används för att installera beroenden för din app och konfigurera din miljö.

När du har distribuerat din app, se till att du lägger till ett Node.js-buildpack i ditt projekt.

  • Gå till Inställningar och bläddra till Buildpack-avsnittet
  • Klicka på knappen Lägg till Buildpack och välj Node.js i popup-modalet.
  • Nu kommer den nya buildpack-konfigurationen att användas när den här appen nästa gång distribueras. Gör några ändringar i din app och tryck till GitHub - den distribueras automatiskt.

Lägga till en databas i din distribuerade app '

Heroku-tilläggsmarknaden har ett stort antal datalagrar, från Redis och MongoDB-leverantörer, till Postgres och MySQL.

Heroku tillhandahåller tre hanterade datatjänster till alla kunder i form av tillägg:

  • Heroku Postgres
  • Heroku Redis
  • Apache Kafka på Heroku

Att skriva om dessa tre kommer att göra den här artikeln för lång. Det är ganska enkelt och jag lägger till några länkar till Heroku Docs.

  • Heroku Postgresql Docs
  • Heroku Redis Docs
  • Apache Kafka på Heroku Docs

Slutsats

Varje Heroku-konto tilldelas en pool med gratis dynotimmar. Heroku (gratis) dynor är utmärkta för att vara värd för appar och personliga projekt. Nackdelen är dock att din app somnar om den inte får någon webbtrafik inom 30 minuter :(.

Du kan använda externa verktyg för att pinga din server regelbundet så att den aldrig somnar.

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

  • Pingmydyno
  • Heroku självping
  • Wakemydyno
  • Koffein
Heroku är noggrant utformad för att hjälpa utvecklare att vara så produktiva som möjligt. Plattformen tar bort frustrerande hinder och vardagliga uppgifter, så att du kan vara fri från distraktion i ditt utvecklingsflöde. Oavsett var du befinner dig på inlärningsvägen hjälper Heroku dig att älska apputveckling ännu mer. - Heroku

Heroku-upplevelsen tillhandahåller tjänster, verktyg, arbetsflöden och stöd för polyglot - allt för att förbättra utvecklarens produktivitet. Det finns mer att använda Heroku och jag hoppas att du utforskar mer och bygger fantastiska saker med Heroku.

Om du är student kan du registrera dig för GitHub Student Developer Pack för att få en gratis Hobby Dyno i upp till två år.

Paketet ger eleverna fri tillgång till de bästa utvecklarverktygen på ett ställe så att du kan lära dig genom att göra.