Sådan distribueres en Node-applikation og en database til Heroku

Heroku er en skybaseret, fuldt administreret platform som en tjeneste (PaaS) til opbygning, kørsel og administration af apps. Platformen er fleksibel og designet med DX-support til dig og dit teams foretrukne udviklingsstil og til at hjælpe dig med at forblive fokuseret og produktiv.

Udviklere, teams og virksomheder i alle størrelser bruger Heroku til at implementere, administrere og skalere apps. Uanset om du bygger en simpel prototype eller et forretningskritisk produkt, giver Heroku's fuldt administrerede platform dig den enkleste vej til at levere apps hurtigt.

Med funktioner som Heroku Runtime, Heroku Postgres (SQL), Heroku Redis, tilføjelsesprogrammer, dataklip, app-metrics, smarte containere, Enterprise-grade support, GitHub-integration og meget mere giver Heroku udviklere frihed til at fokusere på deres kerneprodukt uden forstyrrelse af vedligeholdelse af servere, hardware eller infrastruktur.

En af Heroku's kerneegenskaber er implementering, administration og skalering af apps med dine yndlingssprog [Node, Ruby, Python, Java, PHP, Go og mere].

I denne artikel viser jeg dig, hvordan du tager en eksisterende Node.js-app og distribuerer den til Heroku - alt fra at oprette din Heroku-konto til at tilføje en database til din implementerede applikation.

Forudsætninger

I min tidligere artikel skrev jeg om "Bygning af en SlackBot med Node.js og SlackBots.js", og jeg lovede at skrive en opfølgende artikel for at vise, hvordan du er vært for SlackBot på enten Heroku, Zeit eller Netlify og offentliggøre den til Slack Apps butik. Nå, dette er opfølgningsartiklen, men uden delen "Publishing to Slack Apps". Vi dækker det i en anden artikel.

Jeg antager, at du allerede har / kender følgende:

  • Læs min tidligere artikel
  • Bygget inspireNuggets SlackBot
  • Git, Node og npm installeret
  • En gratis Heroku-konto
  • Heroku CLI installeret

Bonus

Hvis du ikke allerede har npm, Node og Heroku CLI eller en Heroku-konto, er her en hurtig bonus [Ja, du er velkommen :)].

Installation af npm og node

  • Node.js er en JavaScript-runtime bygget på Chrome's V8 JavaScript-motor.
  • npm er pakkehåndtering for Node.js. Et open source-projekt oprettet for at hjælpe JavaScript-udviklere med let at dele pakkede moduler med kode.

Du kan blot downloade Node.js her. Bare rolig, npm kommer med Node.js, så dette installeres begge ✨

Oprettelse af en gratis Heroku-konto

Gå venligst her og udfyld tilmeldingsformularen. Det er ret simpelt.

Installation af Heroku CLI

Heroku Command Line Interface (CLI) gør det nemt at oprette og administrere dine Heroku apps direkte fra terminalen. Det er en vigtig del af brugen af ​​Heroku. [Nå, du kan beslutte at bruge GitHub-integrationsfunktionen og Heroku Dashboard, men ja, du bør lære at bruge CLI]

Heroku CLI kræver Git, det populære versionskontrolsystem. Hvis du ikke allerede har Git installeret, skrev jeg denne artikel for at hjælpe dig.

Heroku CLI til Mac OS

brew tap heroku/brew && brew install heroku 

eller download installationsprogrammet.

Heroku CLI til Ubuntu

sudo snap install --classic heroku 

Heroku CLI til Windows

Download installationsprogrammet til 64-bit eller 32-bit.

Andre installationsmetoder

Læs dette.

Kom godt i gang med Heroku CLI

  • Bekræft din installation
heroku --version 

heroku / 7.30.1 linux-x64 node-v11.14.0

  • Log ind på din Heroku-konto

Der er to måder at gøre dette på:

  • Webbaseret godkendelse
heroku login 

Følg instruktionerne, og log ind via din webbrowser, og vend derefter tilbage til din terminal.

  • CLI-godkendelse

Dette er en sikrere mulighed, da den gemmer din e-mail-adresse og et API-token til ~/.netrcfremtidig brug.

heroku login -i 

Implementering af din Node.js-app

Jeg formoder, at du allerede har bygget SlackBot. Hvis du ikke har gjort det, skal du klone det færdige projekt.

Projektet er en simpel Slackbot, der viser tilfældige inspirerende techie-citater og vittigheder til udviklere / designere.

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

Lad os nu installere vores app til Heroku ??. Jeg viser dig to måder at gøre dette på:

Implementere via Heroku Git

Dette gøres via Heroku CLI.

Checklist️ Tjekliste
  • Angiv den version af Node.js, der skal bruges til at køre din applikation på Heroku i din package.jsonfil.
"engines": { "node": "10.16.0" }, 
  • Angiv dit start script.

    Du skal blot oprette en Procfile(uden filtypenavn) og tilføje

web: node index.js 

Heroku ser først efter denne Procfile. Hvis der ikke findes nogen, vil Heroku forsøge at starte en standardwebproces via start-scriptet i din package.json.

  • Start din app lokalt ved hjælp af den lokale kommando heroku for at være sikker på, at alt fungerer fint
heroku local web 

Din app skal nu køre på // localhost: 5000.

  • Glem ikke at .gitignore
/node_modules .DS_Store /*.env 
? Lad os implementere

Hvordan dette fungerer er, at du allerede har projektet, der arbejder med lokalt, og du har allerede skubbet til GitHub.

  • Løb heroku create

Dybest set opretter denne kommando en ny Heroku-app til dig med noget tilfældigt genereret domæne og tilføjer Heroku til dit lokale Git-arkiv.

  • Kør nu git push heroku master

Dette er den magiske kommando, den skubber din app til Heroku, installerer den der og starter den på dit tildelte domæne.

I eksemplet ovenfor er det //lit-cove-58897.herokuapp.com/

Du kan altid foretage ændringer i dine appindstillinger og domæner i dit Heroku Dashboard

  • Besøg nu din app i din browser
heroku open 
  • Du kan også se oplysninger om din kørende app ved hjælp af en af ​​logningskommandoer. Dette er meget nyttigt i fejlfindingsfejl.
heroku logs --tail 

Implementere via GitHub-integration

Du kan konfigurere GitHub-integration under fanen Implementering af apps i Heroku Dashboard.

Checklist️ Tjekliste
  • Alle tidligere tjeklister gælder her - sørg for, at appen allerede er implementeret i GitHub
? Lad os implementere

Sådan fungerer denne metode er, at du skubber hele dit projekt til GitHub og integrerer det i Heroku. Hver gang du skubber, distribueres den fra GitHub til Heroku. Temmelig sej, ikke?

  • Log ind på dit Heroku Dashboard, og opret en ny app
  • Vælg dit appnavn og din region

Nu er din app oprettet

  • Klik på fanen implementere og rulle til den metode Deployment sektion
  • Klik på Opret forbindelse til GitHub- knappen
  • Nu har du Opret forbindelse til GitHub-sektionen , søg efter lageret og implementer det.
  • Nu blev din app implementeret med succes

Automatisk implementering

Nu er din app implementeret, men du bliver nødt til at fortsætte med at implementere manuelt. Du skal aktivere automatiske implementeringer for en GitHub-gren, så Heroku bygger og distribuerer alle skub til den gren.

  • Rul til den automatiske udruller sektion

Vælg den gren, du vil implementere. Ideelt set skal dette være mastergrenen, men skift dette efter din præference.

Nu vil hvert skub til master(eller den gren, du valgte) installere en ny version af denne app.

Node.js Buildpack

I Heroku er Buildpacks scripts, der køres, når din app implementeres. De bruges til at installere afhængigheder til din app og konfigurere dit miljø.

Efter installation af din app skal du sikre dig, at du tilføjer en Node.js-buildpack til dit projekt.

  • Gå til Indstillinger, og rul til sektionen Buildpack
  • Klik på knappen Tilføj buildpack, og vælg Node.js i Popup-modal.
  • Nu vil den nye buildpack-konfiguration blive brugt, når denne app næste gang implementeres. Foretag nogle ændringer i din app, og tryk på GitHub - den implementeres automatisk.

Tilføjelse af en database til din implementerede app '

Heroku-tilføjelsesmarkedet har et stort antal datalagre, fra Redis- og MongoDB-udbydere til Postgres og MySQL.

Heroku leverer tre administrerede datatjenester til alle kunder i form af tilføjelser:

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

At skrive om disse tre vil gøre denne artikel for lang. Det er ret simpelt, og jeg tilføjer nogle links til Heroku Docs.

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

Konklusion

Hver Heroku-konto tildeles en pulje af gratis dynotimer. Heroku (gratis) dynos er gode til hosting af apps og personlige projekter. Ulempen er dog, at din app falder i søvn, hvis den ikke modtager nogen webtrafik inden for 30 minutter :(.

Du kan bruge eksterne værktøjer til at pinge din server med jævne mellemrum, så den aldrig falder i søvn.

Her er nogle at overveje:

  • Pingmydyno
  • Heroku self ping
  • Wakemydyno
  • Koffein
Heroku er omhyggeligt designet til at hjælpe udviklere med at være så produktive som muligt. Platformen fjerner frustrerende forhindringer og verdslige opgaver, så du kan være fri for distraktion i dit udviklingsflow. Uanset hvor du er på læringsstien, hjælper Heroku dig med at elske appudvikling endnu mere. - Heroku

Heroku-oplevelsen leverer tjenester, værktøjer, arbejdsgange og polyglot-support - alt sammen designet til at forbedre udviklerens produktivitet. Der er mere ved at bruge Heroku, og jeg håber, du udforsker mere og bygger fantastiske ting med Heroku.

Hvis du er studerende, bedes du tilmelde dig GitHub Student Developer Pack for at få en gratis Hobby Dyno i op til to år.

Pakken giver eleverne fri adgang til de bedste udviklerværktøjer ét sted, så du kan lære ved at gøre.