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
- använda Heroku CLI
- Visa aktuella config var värden
- Ställ in en config var
- ta bort en config var
- använda Heroku instrumentpanelen
- använda plattformen API
- åtkomst till config var-värden från kod
- exempel
- Config var-policyer
- tillägg och config vars
- lokal inställning
- Produktions-och utvecklingslägen
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:
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_URL
config 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.