kategorier

Senast uppdaterad 09 Mars 2020

en enda app körs alltid i flera miljöer, inklusive åtminstone på din utvecklingsmaskin och i produktion på Heroku. En öppen källkodsapp kan distribueras till hundratals olika miljöer.

även om dessa miljöer alla kan köra samma kod, har de vanligtvis miljöspecifika konfigurationer. Till exempel kan en apps staging-och produktionsmiljöer använda olika Amazon S3-hinkar, vilket innebär att de också behöver olika referenser för dessa hinkar.

en app miljöspecifika konfiguration bör lagras i miljövariabler (inte i appens källkod). Detta låter dig ändra varje Miljös konfiguration isolerat och förhindrar att säkra referenser lagras i versionskontroll. Läs mer om att lagra config i miljön.

på en traditionell värd eller när du arbetar lokalt ställer du ofta in miljövariabler i filen .bashrc. På Heroku använder du config vars.

hantera config vars

när du ställer in eller tar bort en config var med någon metod startas din app om och en ny version skapas.

Config var–värden är beständiga-de förblir på plats över distributioner och app startar om. Om du inte behöver ändra ett värde behöver du bara ställa in det en gång.

använda Heroku CLI

kommandona heroku config för Heroku CLI gör det enkelt att hantera appens config vars.

Visa aktuella config var värden

$ heroku configGITHUB_USERNAME: joesmithOTHER_VAR: production$ heroku config:get GITHUB_USERNAMEjoesmith

Ställ in en config var

$ heroku config:set GITHUB_USERNAME=joesmithAdding config vars and restarting myapp... done, v12GITHUB_USERNAME: joesmith

ta bort en config var

$ heroku config:unset GITHUB_USERNAMEUnsetting GITHUB_USERNAME and restarting myapp... done, v13

använda Heroku instrumentpanelen

du kan också redigera config vars från appens Settings flik i Heroku instrumentpanelen:

Config Vars i instrumentpanelen

använda plattformen API

du kan hantera appens config vars programmatiskt med Heroku Platform API med hjälp av en enkel HTTPS REST klient och JSON datastrukturer. Du behöver en giltig Heroku – åtkomsttoken som representerar en användare med rätt behörigheter i appen.

åtkomst till config var-värden från kod

Config vars exponeras för appens kod som miljövariabler. Till exempel i Nod.js du kan komma åt appens DATABASE_URLconfig var med process.env.DATABASE_URL.

exempel

Lägg till några config vars för dina S3-kontonycklar:

$ cd myapp$ heroku config:set S3_KEY=8N029N81 S3_SECRET=9s83109d3+583493190Setting config vars and restarting myapp... done, v14S3_KEY: 8N029N81S3_SECRET: 9s83109d3+583493190

Ställ in din kod för att läsa vars vid körning. I Ruby får du till exempel tillgång till miljövariablerna med ENV – mönstret-så nu kan du skriva en initialiserare som så:

AWS::S3::Base.establish_connection!( :access_key_id => ENV, :secret_access_key => ENV)

i Nod.js, använd process.env för att komma åt miljövariabler:

const aws = require('aws-sdk');let s3 = new aws.S3({ accessKeyId: process.env.S3_KEY, secretAccessKey: process.env.S3_SECRET});

i Java kan du komma åt det via samtal till System.getenv('key'), som så:

S3Handler = new S3Handler(System.getenv("S3_KEY"), System.getenv("S3_SECRET"))

i Python, med hjälp av Boto-biblioteket:

from boto.s3.connection import S3Connections3 = S3Connection(os.environ, os.environ)

nu, vid distribution till Heroku, kommer appen att använda tangenterna i config.

Config var-policyer

  • config var-tangenter bör endast använda alfanumeriska tecken och understreck (_) för att säkerställa att de är tillgängliga från alla programmeringsspråk. Config var nycklar bör inte innehålla bindestreck.
  • Config var-data (kombinationen av alla tangenter och värden) får inte överstiga 32 kB för varje app.
  • Config var nycklar bör inte börja med en dubbel understrykning (__).
  • en config var-nyckel bör inte börja med HEROKU_ om den inte ställs in av Heroku-plattformen själv.

tillägg och config vars

om du tillhandahåller ett tillägg för din app lägger det vanligtvis till en eller flera config vars i appen. Värdena för dessa config vars kan uppdateras av tilläggsleverantören när som helst.

se tilläggsvärden kan ändras för att lära dig mer om tillägg och hur de använder config vars.

lokal inställning

använd Heroku lokala kommandoradsverktyg för att köra din app lokalt.

Produktions-och utvecklingslägen

många språk och ramverk stöder ett utvecklingsläge. Detta möjliggör vanligtvis mer felsökning, såväl som dynamisk omlastning eller omkompilering av ändrade källfiler.

i en Ruby-miljö kan du till exempel ställa in en RACK_ENV config var till development för att aktivera ett sådant läge.

det är viktigt att förstå och hålla reda på dessa config vars på en Produktions Heroku app. Medan ett utvecklingsläge vanligtvis är bra för utveckling, är det inte så bra för produktion, eftersom det kan försämra prestanda.

Lämna ett svar

Din e-postadress kommer inte publiceras.