Kategorien

Zuletzt aktualisiert am 09. März 2020

Eine einzelne App wird immer in mehreren Umgebungen ausgeführt, zumindest auf Ihrem Entwicklungscomputer und in der Produktion auf Heroku. Eine Open-Source-App kann in Hunderten von verschiedenen Umgebungen bereitgestellt werden.

Obwohl diese Umgebungen möglicherweise alle denselben Code ausführen, haben sie normalerweise umgebungsspezifische Konfigurationen. Beispielsweise können die Staging- und Produktionsumgebungen einer App unterschiedliche Amazon S3-Buckets verwenden, was bedeutet, dass sie auch unterschiedliche Anmeldeinformationen für diese Buckets benötigen.

Die umgebungsspezifische Konfiguration einer App sollte in Umgebungsvariablen gespeichert werden (nicht im Quellcode der App). Auf diese Weise können Sie die Konfiguration jeder Umgebung isoliert ändern und verhindern, dass sichere Anmeldeinformationen in der Versionskontrolle gespeichert werden. Erfahren Sie mehr über das Speichern von config in der Umgebung.

Auf einem herkömmlichen Host oder wenn Sie lokal arbeiten, legen Sie häufig Umgebungsvariablen in Ihrer .bashrc -Datei fest. Auf Heroku verwenden Sie Konfigurationsvariablen.

Verwalten von Konfigurationsvariablen

Wenn Sie eine Konfigurationsvariable mit einer beliebigen Methode festlegen oder entfernen, wird Ihre App neu gestartet und eine neue Version erstellt.

Config var-Werte sind persistent – sie bleiben über Bereitstellungen und App-Neustarts hinweg bestehen. Wenn Sie einen Wert nicht ändern müssen, müssen Sie ihn nur einmal festlegen.

Verwenden der Heroku-CLI

Mit den heroku config -Befehlen der Heroku-CLI können Sie die Konfigurationsvariablen Ihrer App einfach verwalten.

Aktuelle Konfigurationsvariablen anzeigen

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

Legen Sie eine Konfigurationsvariable fest

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

Entfernen Sie eine Konfigurationsvariable

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

Verwenden des Heroku-Dashboards

Sie können Konfigurationsvariablen auch auf der Registerkarte Settings Ihrer App im Heroku-Dashboard bearbeiten:

 Konfigurationsvariablen im Dashboard

Verwenden der Plattform-API

Sie können die Konfigurationsvariablen Ihrer App programmgesteuert mit der Heroku-Plattform-API mithilfe eines einfachen HTTPS-REST-Clients und JSON-Datenstrukturen verwalten. Sie benötigen ein gültiges Heroku-Zugriffstoken, das einen Benutzer mit den richtigen Berechtigungen für die App darstellt.

Zugriff auf Konfigurationsvariablenwerte aus dem Code

Konfigurationsvariablen werden dem Code Ihrer App als Umgebungsvariablen ausgesetzt. Zum Beispiel in Knoten.js Sie können mit process.env.DATABASE_URL auf die DATABASE_URL -Konfigurationsvariable Ihrer App zugreifen.

Beispiele

Fügen Sie einige Konfigurationsvariablen für Ihre S3-Kontoschlüssel hinzu:

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

Richten Sie Ihren Code so ein, dass er die Variablen zur Laufzeit liest. In Ruby greifen Sie beispielsweise mit dem Muster ENV auf die Umgebungsvariablen zu – jetzt können Sie einen Initialisierer wie folgt schreiben:

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

In Knoten.js, verwenden Sie process.env , um auf Umgebungsvariablen zuzugreifen:

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

In Java können Sie über Aufrufe von System.getenv('key') wie folgt darauf zugreifen:

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

In Python mit der Boto-Bibliothek:

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

Bei der Bereitstellung in Heroku verwendet die App nun die in der Konfiguration festgelegten Schlüssel.

Config var-Richtlinien

  • Config var-Schlüssel sollten nur alphanumerische Zeichen und den Unterstrich (_) verwenden, um sicherzustellen, dass sie von allen Programmiersprachen aus zugänglich sind. Konfigurationsvariablenschlüssel sollten das Bindestrich-Zeichen nicht enthalten.
  • Config var-Daten (die Kombination aller Schlüssel und Werte) dürfen 32 KB für jede App nicht überschreiten.
  • Konfigurationsvariablenschlüssel sollten nicht mit einem doppelten Unterstrich beginnen (__).
  • Der Schlüssel einer Konfigurationsvariablen sollte nicht mit HEROKU_ beginnen, es sei denn, er wird von der Heroku-Plattform selbst festgelegt.

Add-Ons und Konfigurationsvariablen

Wenn Sie ein Add-On für Ihre App bereitstellen, werden der App normalerweise eine oder mehrere Konfigurationsvariablen hinzugefügt. Die Werte dieser Konfigurationsvariablen können jederzeit vom Add-On-Anbieter aktualisiert werden.

Weitere Informationen zu Add-Ons und deren Verwendung von Konfigurationsvariablen finden Sie unter Add-On-Werte können sich ändern.

Lokales Setup

Verwenden Sie das lokale Heroku-Befehlszeilentool, um Ihre App lokal auszuführen.

Produktions- und Entwicklungsmodi

Viele Sprachen und Frameworks unterstützen einen Entwicklungsmodus. Dies ermöglicht in der Regel mehr Debugging sowie dynamisches Neuladen oder Neukompilieren geänderter Quelldateien.

In einer Ruby-Umgebung können Sie beispielsweise eine RACK_ENV -Konfigurationsvariable auf development setzen, um einen solchen Modus zu aktivieren.

Es ist wichtig, diese Konfigurationsvariablen in einer Produktions-Heroku-App zu verstehen und zu verfolgen. Während ein Entwicklungsmodus normalerweise für die Entwicklung geeignet ist, ist er für die Produktion nicht so geeignet, da er die Leistung beeinträchtigen kann.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.