{"id":56446,"date":"2024-03-29T07:00:00","date_gmt":"2024-03-29T14:00:00","guid":{"rendered":"https:\/\/dhblog.dream.press\/blog\/?p=56446"},"modified":"2025-01-16T16:29:18","modified_gmt":"2025-01-17T00:29:18","slug":"umgebungsvariablen","status":"publish","type":"post","link":"https:\/\/www-dev.dreamhost.com\/blog\/de\/umgebungsvariablen\/","title":{"rendered":"Was sind Umgebungsvariablen: Ein gr\u00fcndlicher Leitfaden f\u00fcr Anf\u00e4nger"},"content":{"rendered":"\n<p>Umgebungsvariablen erm\u00f6glichen die Konfiguration von Anwendungen ohne Code\u00e4nderung. Sie trennen externe Daten von der Anwendungslogik, was f\u00fcr aufstrebende Entwickler (und auch einige erfahrene) ziemlich r\u00e4tselhaft bleiben kann.<\/p>\n\n\n\n<p>Durch diesen praktischen Leitfaden werden wir den Schleier um Umgebungsvariablen l\u00fcften, damit Sie verstehen k\u00f6nnen, was sie beinhalten, warum sie wichtig sind und wie Sie Umgebungsvariablen selbstbewusst nutzen k\u00f6nnen.<\/p>\n\n\n\n<p>Holen Sie sich Ihr Lieblingsgetr\u00e4nk (und vielleicht einige Kekse), denn wir werden uns damit befassen. Lassen Sie uns die Konzepte von Umgebungsvariablen von Grund auf neu entpacken.<\/p>\n\n\n\n<h2 id=\"what\" class=\"wp-block-heading\">Was sind Umgebungsvariablen?<\/h2>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"1600\" height=\"851\" data-src=\"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2024\/03\/01-What-Are-Environment-Variables.jpg\" alt=\"Beispiel f\u00fcr Umgebungsvariablen, die ein Beispiel f\u00fcr einen dynamischen Wert wie $SUGAR und den entsprechenden Wert zeigen: 1 Tasse Zucker\" class=\"wp-image-43783 lazyload\" data-srcset=\"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2024\/03\/01-What-Are-Environment-Variables.jpg.webp 1600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2024\/03\/01-What-Are-Environment-Variables-300x160.jpg 300w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2024\/03\/01-What-Are-Environment-Variables-1024x545.jpg 1024w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2024\/03\/01-What-Are-Environment-Variables-768x408.jpg 768w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2024\/03\/01-What-Are-Environment-Variables-1536x817.jpg 1536w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2024\/03\/01-What-Are-Environment-Variables-600x319.jpg.webp 600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2024\/03\/01-What-Are-Environment-Variables-1200x638.jpg.webp 1200w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2024\/03\/01-What-Are-Environment-Variables-730x388.jpg.webp 730w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2024\/03\/01-What-Are-Environment-Variables-1460x777.jpg.webp 1460w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2024\/03\/01-What-Are-Environment-Variables-784x417.jpg.webp 784w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2024\/03\/01-What-Are-Environment-Variables-1568x834.jpg.webp 1568w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2024\/03\/01-What-Are-Environment-Variables-877x466.jpg.webp 877w\" data-sizes=\"(max-width: 1600px) 100vw, 1600px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1600px; --smush-placeholder-aspect-ratio: 1600\/851;\" \/><\/figure>\n\n\n\n<p>Umgebungsvariablen sind dynamische benannte Werte, die das Verhalten von laufenden Prozessen auf einem Computer beeinflussen k\u00f6nnen. Einige Schl\u00fcsseleigenschaften von Umgebungsvariablen sind:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Benannt<\/strong>: Haben beschreibende Variablennamen wie <em>APP_MODE<\/em> und <em>DB_URL<\/em>.<\/li>\n\n\n\n<li><strong>Extern<\/strong>: Werte werden au\u00dferhalb des App-Codes \u00fcber Dateien, Befehlszeilen und Systeme festgelegt.<\/li>\n\n\n\n<li><strong>Dynamisch<\/strong>: Kann Variablen aktualisieren, ohne Apps neu zu starten.<\/li>\n\n\n\n<li><strong>Konfiguriert<\/strong>: Code basiert auf Variablen, definiert diese jedoch nicht.<\/li>\n\n\n\n<li><strong>Entkoppelt<\/strong>: Keine Notwendigkeit, Codekonfigurationen zu \u00e4ndern, sobald Variablen festgelegt sind.<\/li>\n\n\n<\/ul>\n\n\n\n<p><strong>Hier ist eine Analogie<\/strong>. Stellen Sie sich vor, Sie folgen einem Rezept f\u00fcr Schokoladenkekse. Das Rezept k\u00f6nnte lauten:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>1 Tasse Zucker hinzuf\u00fcgen<\/li>\n\n\n\n<li>1 St\u00fcck weiche Butter hinzuf\u00fcgen<\/li>\n\n\n\n<li>2 Eier hinzuf\u00fcgen<\/li>\n\n\n<\/ul>\n\n\n\n<p>Anstelle dieser fest codierten Werte k\u00f6nnten Sie stattdessen Umgebungsvariablen verwenden:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>F\u00fcge $SUGAR Tasse Zucker hinzu<\/li>\n\n\n\n<li>F\u00fcge $BUTTER St\u00fccke weiche Butter hinzu<\/li>\n\n\n\n<li>F\u00fcge $EGGS Eier hinzu<\/li>\n\n\n<\/ul>\n\n\n\n<p>Bevor Sie die Cookies machen, w\u00fcrden Sie diese Umgebungsvariablennamen auf Werte Ihrer Wahl setzen:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>SUGAR=1 \nBUTTER=1\nEGGS=2<\/code><\/pre>\n\n\n\n<p>Also, wenn Sie dem Rezept folgen, w\u00fcrden Ihre Zutaten sich wie folgt zusammenstellen:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>1 Tasse Zucker hinzuf\u00fcgen<\/li>\n\n\n\n<li>1 St\u00fcck weiche Butter hinzuf\u00fcgen<\/li>\n\n\n\n<li>2 Eier hinzuf\u00fcgen<\/li>\n\n\n<\/ul>\n\n\n\n<p>Dies erm\u00f6glicht Ihnen, das Cookie-Rezept zu konfigurieren, ohne den Rezeptcode zu \u00e4ndern.<\/p>\n\n\n\n<p>Das gleiche Konzept gilt f\u00fcr Berechnung und Entwicklung. Umgebungsvariablen erm\u00f6glichen es Ihnen, die Umgebung zu \u00e4ndern, in der ein Prozess ausgef\u00fchrt wird, ohne den zugrunde liegenden Code zu \u00e4ndern. Hier sind einige h\u00e4ufige Beispiele:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Die Umgebung auf &#8220;development&#8221; oder &#8220;production&#8221; einstellen<\/li>\n\n\n\n<li>API-Schl\u00fcssel f\u00fcr externe Dienste konfigurieren<\/li>\n\n\n\n<li>Geheime Schl\u00fcssel oder Anmeldeinformationen \u00fcbergeben<\/li>\n\n\n\n<li>Bestimmte Funktionen ein- und ausschalten<\/li>\n\n\n<\/ul>\n\n\n\n<p>Umgebungsvariablen bieten gro\u00dfe Flexibilit\u00e4t. Sie k\u00f6nnen denselben Code in mehrere Umgebungen bereitstellen, ohne den Code selbst zu \u00e4ndern. Aber lassen Sie uns weiter verstehen, warum sie wertvoll sind.<\/p>\n\n\n\n<h2 id=\"why\" class=\"wp-block-heading\">Warum sind Umgebungsvariablen wertvoll?<\/h2>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"1600\" height=\"1050\" data-src=\"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2024\/03\/02-Why-Are-Environment-Variables-Valuable.jpg\" alt=\"Umgebungsvariablen sind wertvoll, um Anwendungscode von Konfigurationen zu trennen, die Anwendungskonfiguration zu vereinfachen, Geheimnisse und Zugangsdaten zu verwalten und Konsistenz zu f\u00f6rdern\" class=\"wp-image-43784 lazyload\" data-srcset=\"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2024\/03\/02-Why-Are-Environment-Variables-Valuable.jpg.webp 1600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2024\/03\/02-Why-Are-Environment-Variables-Valuable-300x197.jpg 300w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2024\/03\/02-Why-Are-Environment-Variables-Valuable-1024x672.jpg 1024w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2024\/03\/02-Why-Are-Environment-Variables-Valuable-768x504.jpg 768w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2024\/03\/02-Why-Are-Environment-Variables-Valuable-1536x1008.jpg 1536w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2024\/03\/02-Why-Are-Environment-Variables-Valuable-600x394.jpg.webp 600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2024\/03\/02-Why-Are-Environment-Variables-Valuable-1200x788.jpg.webp 1200w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2024\/03\/02-Why-Are-Environment-Variables-Valuable-730x479.jpg.webp 730w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2024\/03\/02-Why-Are-Environment-Variables-Valuable-1460x958.jpg.webp 1460w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2024\/03\/02-Why-Are-Environment-Variables-Valuable-784x515.jpg.webp 784w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2024\/03\/02-Why-Are-Environment-Variables-Valuable-1568x1029.jpg.webp 1568w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2024\/03\/02-Why-Are-Environment-Variables-Valuable-877x576.jpg.webp 877w\" data-sizes=\"(max-width: 1600px) 100vw, 1600px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1600px; --smush-placeholder-aspect-ratio: 1600\/1050;\" \/><\/figure>\n\n\n\n<p>Betrachten Sie Umgebungsvariablen wie Anwendungskn\u00f6pfe, die verwendet werden, um Einstellungen vorzunehmen. Wir werden in K\u00fcrze ausgezeichnete Anwendungsf\u00e4lle erkunden.<\/p>\n\n\n\n<p>Lassen Sie uns die Intuition verst\u00e4rken, warum Umgebungsvariablen wichtig sind!<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Grund #1: Sie trennen Anwendungscode von Konfigurationen<\/h3>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"1600\" height=\"710\" data-src=\"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2024\/03\/03-They-Separate-Application-Code-From-Configurations.jpg\" alt=\"Grund #1 sie trennen Anwendungscode von Konfigurationen, indem sie diese beiden Elemente als separate Boxen in der Grafik darstellen\" class=\"wp-image-43785 lazyload\" data-srcset=\"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2024\/03\/03-They-Separate-Application-Code-From-Configurations.jpg.webp 1600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2024\/03\/03-They-Separate-Application-Code-From-Configurations-300x133.jpg 300w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2024\/03\/03-They-Separate-Application-Code-From-Configurations-1024x454.jpg 1024w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2024\/03\/03-They-Separate-Application-Code-From-Configurations-768x341.jpg 768w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2024\/03\/03-They-Separate-Application-Code-From-Configurations-1536x682.jpg 1536w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2024\/03\/03-They-Separate-Application-Code-From-Configurations-600x266.jpg.webp 600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2024\/03\/03-They-Separate-Application-Code-From-Configurations-1200x533.jpg.webp 1200w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2024\/03\/03-They-Separate-Application-Code-From-Configurations-730x324.jpg.webp 730w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2024\/03\/03-They-Separate-Application-Code-From-Configurations-1460x648.jpg.webp 1460w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2024\/03\/03-They-Separate-Application-Code-From-Configurations-784x348.jpg.webp 784w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2024\/03\/03-They-Separate-Application-Code-From-Configurations-1568x696.jpg.webp 1568w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2024\/03\/03-They-Separate-Application-Code-From-Configurations-877x389.jpg.webp 877w\" data-sizes=\"(max-width: 1600px) 100vw, 1600px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1600px; --smush-placeholder-aspect-ratio: 1600\/710;\" \/><\/figure>\n\n\n\n<p>Das direkte Einprogrammieren von Konfigurationen und Zugangsdaten in Ihren Code kann zu allerlei Problemen f\u00fchren:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Zuf\u00e4llige Commits in die Versionskontrolle<\/li>\n\n\n\n<li>Neuaufbau und Neubereitstellung von Code nur um einen Wert zu \u00e4ndern<\/li>\n\n\n\n<li>Konfigurationsprobleme beim \u00dcbertragen zwischen Umgebungen<\/li>\n\n\n<\/ul>\n\n\n\n<p>Das f\u00fchrt auch zu unordentlichem Code:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import os\n\n# Fest vorgegebene Konfiguration\nDB_USER = 'appuser' \nDB_PASS = 'password123'\nDB_HOST = 'localhost'\nDB_NAME = 'myappdb'\n\ndef connect_to_db():\n  print(f\"Verbindung zu {DB_USER}:{DB_PASS}@{DB_HOST}\/{DB_NAME}\")  \n\nconnect_to_db()<\/code><\/pre>\n\n\n\n<p>Dies verkn\u00fcpft Gesch\u00e4ftslogik mit Konfigurationsdetails. Enge Kopplung macht die Wartung im Laufe der Zeit m\u00fchsam:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u00c4nderungen erfordern das Modifizieren des Quellcodes<\/li>\n\n\n\n<li>Risiko des Ver\u00f6ffentlichens von Geheimnissen in der Quellcodeverwaltung<\/li>\n\n\n<\/ul>\n\n\n\n<p>Die Verwendung von Umgebungsvariablen reduziert diese Probleme. Zum Beispiel k\u00f6nnen Sie die Umgebungsvariablen DB_USER und DB_NAME festlegen.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># .env Datei\nDB_USER=appuser\nDB_PASS=password123  \nDB_HOST=localhost\nDB_NAME=myappdb<\/code><\/pre>\n\n\n\n<p>Der Anwendungscode kann bei Bedarf auf die Umgebungsvariablen zugreifen, wodurch der Code sauber und einfach bleibt.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import os\n\n# Konfiguration aus Umgebung laden \nDB_USER = os.environ&#091;'DB_USER']\nDB_PASS = os.environ&#091;'DB_PASS'] \nDB_HOST = os.environ&#091;'DB_HOST']\nDB_NAME = os.environ&#091;'DB_NAME']\n\ndef connect_to_db():\n  print(f\"Verbindung zu {DB_USER}:{DB_PASS}@{DB_HOST}\/{DB_NAME}\")\n  \nconnect_to_db()<\/code><\/pre>\n\n\n\n<p>Umgebungsvariablen trennen die Konfiguration sauber vom Code, indem sie sensible Werte in die Umgebung abstrahieren.<\/p>\n\n\n\n<p>Sie k\u00f6nnen denselben Code von der Entwicklung in die Produktion \u00fcbertragen, ohne etwas zu \u00e4ndern. Die Umgebungsvariablen k\u00f6nnen sich zwischen den Umgebungen unterscheiden, ohne den Code zu beeinflussen.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Grund #2: Sie vereinfachen die Konfiguration von Anwendungen<\/h3>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"1600\" height=\"777\" data-src=\"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2024\/03\/04-They-Simplify-Configuring-Applications.jpg\" alt=\"Anwendung mit drei verschiedenen Umgebungszweigen: Entwicklung, Staging, Produktion\" class=\"wp-image-43787 lazyload\" data-srcset=\"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2024\/03\/04-They-Simplify-Configuring-Applications.jpg.webp 1600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2024\/03\/04-They-Simplify-Configuring-Applications-300x146.jpg 300w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2024\/03\/04-They-Simplify-Configuring-Applications-1024x497.jpg 1024w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2024\/03\/04-They-Simplify-Configuring-Applications-768x373.jpg 768w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2024\/03\/04-They-Simplify-Configuring-Applications-1536x746.jpg 1536w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2024\/03\/04-They-Simplify-Configuring-Applications-600x291.jpg.webp 600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2024\/03\/04-They-Simplify-Configuring-Applications-1200x583.jpg.webp 1200w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2024\/03\/04-They-Simplify-Configuring-Applications-730x355.jpg.webp 730w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2024\/03\/04-They-Simplify-Configuring-Applications-1460x709.jpg.webp 1460w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2024\/03\/04-They-Simplify-Configuring-Applications-784x381.jpg.webp 784w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2024\/03\/04-They-Simplify-Configuring-Applications-1568x761.jpg.webp 1568w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2024\/03\/04-They-Simplify-Configuring-Applications-877x426.jpg.webp 877w\" data-sizes=\"(max-width: 1600px) 100vw, 1600px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1600px; --smush-placeholder-aspect-ratio: 1600\/777;\" \/><\/figure>\n\n\n\n<p>Umgebungsvariablen vereinfachen die Anpassung von Konfigurationen, ohne den Code zu ber\u00fchren:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># .env file:\nDEBUG=true<\/code><\/pre>\n\n\n\n<p>Hier ist, wie wir es innerhalb der Skriptdatei verwenden k\u00f6nnten:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Scriptinhalt:\nimport os\n\nDEBUG = os.environ.get('DEBUG') == 'true' \n\nif DEBUG:\n   print(\"Im DEBUG-Modus\")<\/code><\/pre>\n\n\n\n<p>Das Umschalten des Debug-Modus erfordert nur ein Update der .env-Datei \u2013 es sind keine Code\u00e4nderungen, Neubauten oder Neuver\u00f6ffentlichungen erforderlich. \u201eEnv vars\u201c kurz gesagt, helfen auch, nahtlos \u00fcber Umgebungen hinweg zu deployen:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import os\n\n# Abrufen der Umgebungsvariablen zur Bestimmung der aktuellen Umgebung (Produktion oder Staging)\ncurrent_env = os.getenv('APP_ENV', 'Staging')  # Standardm\u00e4\u00dfig auf 'Staging' gesetzt, falls nicht festgelegt\n\n# Produktions-API-Schl\u00fcssel\nPROD_API_KEY = os.environ&#091;'PROD_API_KEY']\n\n# Staging-API-Schl\u00fcssel\nSTG_API_KEY = os.environ&#091;'STG_API_KEY']\n\n# Logik, die api_key basierend auf der aktuellen Umgebung festlegt\nif current_env == 'production':\n    api_key = PROD_API_KEY\nelse:\n    api_key = STG_API_KEY\n\n# Initialisierung des API-Clients mit dem entsprechenden API-Schl\u00fcssel\napi = ApiClient(api_key)<\/code><\/pre>\n\n\n\n<p>Derselbe Code kann separate <a target=\"_blank\" href=\"https:\/\/www.dreamhost.com\/glossary\/web-design\/api\/\" rel=\"noopener\">API<\/a>-Schl\u00fcssel f\u00fcr Produktion vs Staging ohne \u00c4nderungen verwenden.<\/p>\n\n\n\n<p>Und zuletzt erm\u00f6glichen sie Funktionswechsel ohne neue Bereitstellungen:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>NEW_FEATURE = os.environ&#091;'NEW_FEATURE'] == 'true'\n\nif NEW_FEATURE:\n   enableNewFeature()<\/code><\/pre>\n\n\n\n<p>Das \u00c4ndern der <em>NEW_FEATURE<\/em> Variable aktiviert sofort Funktionen in unserem Code. Die Schnittstelle zum Aktualisieren von Konfigurationen h\u00e4ngt von den Systemen ab:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/www.dreamhost.com\/blog\/de\/cloud-entwicklungsumgebung\/\" target=\"_blank\" rel=\"noopener\">Cloud<\/a>-Plattformen wie Heroku verwenden Web-Armaturenbretter<\/li>\n\n\n\n<li>Server verwenden OS-Befehlswerkzeuge<\/li>\n\n\n\n<li>Lokale Entwicklung kann .env-Dateien verwenden<\/li>\n\n\n<\/ul>\n\n\n\n<p>Umgebungsvariablen sind vorteilhaft beim Erstellen von Anwendungen, da sie es Benutzern erm\u00f6glichen, Elemente nach ihren Anforderungen zu konfigurieren.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Grund #3: Sie verwalten Geheimnisse und Anmeldedaten<\/h3>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"1600\" height=\"777\" data-src=\"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2024\/03\/05-They-Help-Manage-Secrets-And-Credentials.jpg\" alt=\"Anwendungscode verzweigt zu Umgebungsvariablen mit f\u00fcnf Zweigen, die jeweils als Geheimnisse gekennzeichnet sind\" class=\"wp-image-43788 lazyload\" data-srcset=\"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2024\/03\/05-They-Help-Manage-Secrets-And-Credentials.jpg.webp 1600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2024\/03\/05-They-Help-Manage-Secrets-And-Credentials-300x146.jpg 300w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2024\/03\/05-They-Help-Manage-Secrets-And-Credentials-1024x497.jpg 1024w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2024\/03\/05-They-Help-Manage-Secrets-And-Credentials-768x373.jpg 768w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2024\/03\/05-They-Help-Manage-Secrets-And-Credentials-1536x746.jpg 1536w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2024\/03\/05-They-Help-Manage-Secrets-And-Credentials-600x291.jpg.webp 600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2024\/03\/05-They-Help-Manage-Secrets-And-Credentials-1200x583.jpg.webp 1200w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2024\/03\/05-They-Help-Manage-Secrets-And-Credentials-730x355.jpg.webp 730w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2024\/03\/05-They-Help-Manage-Secrets-And-Credentials-1460x709.jpg.webp 1460w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2024\/03\/05-They-Help-Manage-Secrets-And-Credentials-784x381.jpg.webp 784w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2024\/03\/05-They-Help-Manage-Secrets-And-Credentials-1568x761.jpg.webp 1568w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2024\/03\/05-They-Help-Manage-Secrets-And-Credentials-877x426.jpg.webp 877w\" data-sizes=\"(max-width: 1600px) 100vw, 1600px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1600px; --smush-placeholder-aspect-ratio: 1600\/777;\" \/><\/figure>\n\n\n\n<p>Das \u00dcberpr\u00fcfen von Geheimnissen wie API-Schl\u00fcsseln, Passw\u00f6rtern und privaten Schl\u00fcsseln direkt im Quellcode birgt erhebliche <a target=\"_blank\" href=\"https:\/\/www.dreamhost.com\/blog\/de\/tipps-zur-cloud-sicherheit\/\" rel=\"noopener\">Sicherheitsrisiken<\/a>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Vermeiden Sie das Offenlegen von Geheimnissen im Code!\nSTRIPE_KEY = 'sk_live_1234abc'\nDB_PASSWORD = 'password123'\n\nstripe.api_key = STRIPE_KEY \ndb.connect(DB_PASSWORD)<\/code><\/pre>\n\n\n\n<p>Diese Anmeldeinformationen sind jetzt offen gelegt, wenn dieser Code in ein \u00f6ffentliches <a target=\"_blank\" href=\"https:\/\/dreamhost.com\/blog\/how-to-use-wp-with-github\/\" rel=\"noopener\">GitHub-Repository<\/a> eingef\u00fcgt wird!<\/p>\n\n\n\n<p>Umgebungsvariablen verhindern das Austreten von Geheimnissen, indem sie diese externalisieren:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import os\n\nSTRIPE_KEY = os.environ.get('STRIPE_KEY')  \nDB_PASS = os.environ.get('DB_PASS')   \n\nstripe.api_key = STRIPE_KEY  \ndb.connect(DB_PASS)<\/code><\/pre>\n\n\n\n<p>Die tats\u00e4chlichen Geheimwerte werden in einer lokalen .env Datei festgelegt.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># .env Datei\n\nSTRIPE_KEY=sk_live_1234abc\nDB_PASS=password123<\/code><\/pre>\n\n\n\n<p>Vergessen Sie nicht, die .env-Datei in <code>.gitignore<\/code> aufzunehmen, um Geheimnisse aus der Quellenkontrolle herauszuhalten. Dies beinhaltet die Definition der .env-Datei in einer .gitignore-Datei im Wurzelverzeichnis eines Repos, die git anweist, die Datei beim Erstellen eines Commits zu ignorieren.<\/p>\n\n\n\n<p>Dies trennt geheime Definitionen vom Anwendungscode und l\u00e4dt sie w\u00e4hrend der Laufzeit sicher aus gesch\u00fctzten Umgebungen. Das Risiko, Anmeldeinformationen versehentlich preiszugeben, verringert sich erheblich.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Grund #4: Sie f\u00f6rdern die Konsistenz<\/h3>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"1600\" height=\"777\" data-src=\"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2024\/03\/06-They-Promote-Consistency.jpg\" alt=\"Konfiguration mit vier abzweigenden \u00c4sten zu Umgebungsvariablen\" class=\"wp-image-43789 lazyload\" data-srcset=\"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2024\/03\/06-They-Promote-Consistency.jpg.webp 1600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2024\/03\/06-They-Promote-Consistency-300x146.jpg 300w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2024\/03\/06-They-Promote-Consistency-1024x497.jpg 1024w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2024\/03\/06-They-Promote-Consistency-768x373.jpg 768w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2024\/03\/06-They-Promote-Consistency-1536x746.jpg 1536w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2024\/03\/06-They-Promote-Consistency-600x291.jpg.webp 600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2024\/03\/06-They-Promote-Consistency-1200x583.jpg.webp 1200w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2024\/03\/06-They-Promote-Consistency-730x355.jpg.webp 730w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2024\/03\/06-They-Promote-Consistency-1460x709.jpg.webp 1460w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2024\/03\/06-They-Promote-Consistency-784x381.jpg.webp 784w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2024\/03\/06-They-Promote-Consistency-1568x761.jpg.webp 1568w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2024\/03\/06-They-Promote-Consistency-877x426.jpg.webp 877w\" data-sizes=\"(max-width: 1600px) 100vw, 1600px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1600px; --smush-placeholder-aspect-ratio: 1600\/777;\" \/><\/figure>\n\n\n\n<p>Stellen Sie sich vor, Sie h\u00e4tten unterschiedliche Konfigurationsdateien f\u00fcr Entwicklungs-, QA- und Produktionsumgebungen:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Entwicklung\nDB_HOST = 'localhost'\nDB_NAME = 'appdb_dev'\n\n# Produktion\nDB_HOST = 'db.myapp.com'\nDB_NAME = 'appdb_prod'<\/code><\/pre>\n\n\n\n<p>Diese Diskrepanz f\u00fchrt zu subtilen Fehlern, die schwer zu erkennen sind. Code, der in der Entwicklung einwandfrei funktioniert, k\u00f6nnte pl\u00f6tzlich in der Produktion aufgrund von nicht \u00fcbereinstimmenden Konfigurationen ausfallen.<\/p>\n\n\n\n<p>Umgebungsvariablen l\u00f6sen dies, indem sie die Konfiguration an einem Ort zentralisieren:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>DB_HOST=db.myapp.com\nDB_NAME=appdb_prod<\/code><\/pre>\n\n\n\n<p>Nun werden dieselben Variablen konsistent \u00fcber alle Umgebungen hinweg verwendet. Sie m\u00fcssen sich keine Sorgen mehr \u00fcber zuf\u00e4llige oder falsche Einstellungen machen, die in Kraft treten.<\/p>\n\n\n\n<p><strong>Der Anwendungscode bezieht sich einfach auf die Variablen:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import os\n\ndb_host = os.environ&#091;'DB_HOST']\ndb_name = os.environ&#091;'DB_NAME']\n\ndb.connect(db_host, db_name)<\/code><\/pre>\n\n\n\n<p>Unabh\u00e4ngig davon, ob die App lokal oder auf einem Produktionsserver l\u00e4uft, verwendet sie immer den richtigen Datenbankhost und -namen.<\/p>\n\n\n\n<p>Diese Einheitlichkeit reduziert Fehler, verbessert die Vorhersagbarkeit und macht die App insgesamt robuster. Entwickler k\u00f6nnen darauf vertrauen, dass der Code sich in jeder Umgebung identisch verh\u00e4lt.<\/p>\n\n\n\n<div class=\"article-newsletter article-newsletter--gradient\">\n\n\n<h2>Get Content Delivered Straight to Your Inbox<\/h2><p>Subscribe now to receive all the latest updates, delivered directly to your inbox.<\/p><form class=\"nwsl-form\" id=\"newsletter_block_\" novalidate><div class=\"messages\"><\/div><div class=\"form-group\"><label for=\"input_newsletter_block_\"><input type=\"email\"name=\"email\"id=\"input_newsletter_block_\"placeholder=\"Enter your email address\"novalidatedisabled=\"disabled\"\/><\/label><button type=\"submit\"class=\"btn btn--brand\"disabled=\"disabled\"><span>Sign Me Up!<\/span><svg width=\"21\" height=\"14\" viewBox=\"0 0 21 14\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n<path d=\"M13.8523 0.42524L12.9323 1.34521C12.7095 1.56801 12.7132 1.9304 12.9404 2.14865L16.7241 5.7823H0.5625C0.251859 5.7823 0 6.03416 0 6.3448V7.6573C0 7.96794 0.251859 8.2198 0.5625 8.2198H16.7241L12.9405 11.8535C12.7132 12.0717 12.7095 12.4341 12.9323 12.6569L13.8523 13.5769C14.072 13.7965 14.4281 13.7965 14.6478 13.5769L20.8259 7.39879C21.0456 7.17913 21.0456 6.82298 20.8259 6.60327L14.6477 0.42524C14.4281 0.205584 14.0719 0.205584 13.8523 0.42524Z\" fill=\"white\"\/>\n<\/svg>\n<\/button><\/div><\/form><\/div>\n\n\n<h2 id=\"define\" class=\"wp-block-heading\">Wie k\u00f6nnen Sie Umgebungsvariablen definieren<\/h2>\n\n\n\n<p>Umgebungsvariablen k\u00f6nnen an mehreren Stellen definiert werden, was Flexibilit\u00e4t bei der Einstellung und dem Zugriff auf sie \u00fcber Prozesse und Systeme hinweg erm\u00f6glicht.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1. Betriebssystem-Umgebungsvariablen<\/h3>\n\n\n\n<p>Die meisten Betriebssysteme bieten integrierte Mechanismen zur Definition globaler Variablen. Dies macht die Variablen systemweit f\u00fcr alle Benutzer, Anwendungen usw. zug\u00e4nglich.<\/p>\n\n\n\n<p>Auf Linux\/Unix-Systemen k\u00f6nnen Variablen in Shell-Startskripten definiert werden.<\/p>\n\n\n\n<p>Zum Beispiel kann ~\/.bashrc verwendet werden, um benutzerspezifische Variablen festzulegen, w\u00e4hrend \/etc\/environment f\u00fcr systemweite Variablen verwendet wird, auf die alle Benutzer zugreifen k\u00f6nnen.<\/p>\n\n\n\n<p>Variablen k\u00f6nnen auch inline gesetzt werden, bevor Befehle mit dem Export-Befehl ausgef\u00fchrt oder direkt durch den env-Befehl in bash eingestellt werden:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># In ~\/.bashrc\nexport DB_URL=localhost\nexport APP_PORT=3000<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code># In \/etc\/environment\nDB_HOST=localhost\nDB_NAME=mydatabase<\/code><\/pre>\n\n\n\n<p>Variablen k\u00f6nnen auch inline gesetzt werden, bevor Befehle ausgef\u00fchrt werden:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>export TOKEN=abcdef\npython app.py<\/code><\/pre>\n\n\n\n<p>Variablen auf Betriebssystemebene zu definieren macht sie global verf\u00fcgbar, was sehr hilfreich ist, wenn Sie die App ausf\u00fchren m\u00f6chten, ohne von internen Werten abh\u00e4ngig zu sein.<\/p>\n\n\n\n<p>Sie k\u00f6nnen auch definierte Variablen in Skripten oder Befehlszeilenargumenten referenzieren.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>python app.py --db-name $DB_NAME --db-host $DB_HOST --batch-size $BATCH_SIZE<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">2. Definieren von Umgebungsvariablen im Anwendungscode<\/h3>\n\n\n\n<p>Zus\u00e4tzlich zu Betriebssystem-Ebene Variablen k\u00f6nnen Umgebungsvariablen direkt im Anwendungscode definiert und w\u00e4hrend des Betriebs abgerufen werden.<\/p>\n\n\n\n<p>Das <em>os.environ<\/em>-W\u00f6rterbuch in Python enth\u00e4lt alle derzeit definierten Umgebungsvariablen. Wir k\u00f6nnen neue hinzuf\u00fcgen, indem wir einfach Schl\u00fcssel-Wert-Paare hinzuf\u00fcgen:<\/p>\n\n\n\n<p>Umgebungsvariablen k\u00f6nnen auch direkt im Anwendungscode definiert und abgerufen werden. In Python enth\u00e4lt das os.environ W\u00f6rterbuch alle definierten Umgebungsvariablen:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import os\nos.environ&#091;\"API_KEY\"] = \"123456\" \napi_key = os.environ.get(\"API_KEY\")<\/code><\/pre>\n\n\n\n<p>Das os.environ W\u00f6rterbuch erlaubt das dynamische Setzen und Abrufen von Umgebungsvariablen innerhalb von Python-Code.<\/p>\n\n\n\n<p>Die meisten Sprachen werden mit ihren Bibliotheken geb\u00fcndelt, die Zugriff auf Umgebungsvariablen w\u00e4hrend der Laufzeit bieten.<\/p>\n\n\n\n<p>Sie k\u00f6nnen auch Frameworks wie Express, Django und Laravel verwenden, um tiefere Integrationen zu erm\u00f6glichen, wie das automatische Laden von .env-Dateien, die Umgebungsvariablen enthalten.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">3. Erstellen lokaler Konfigurationsdateien f\u00fcr Umgebungsvariablen<\/h3>\n\n\n\n<p>Zus\u00e4tzlich zu systemebenen Variablen k\u00f6nnen Umgebungsvariablen aus lokalen Konfigurationsdateien einer Anwendung geladen werden. Dies h\u00e4lt Konfigurationsdetails getrennt vom Code, auch f\u00fcr lokale Entwicklung und Tests.<\/p>\n\n\n\n<p>Einige beliebte Ans\u00e4tze:<\/p>\n\n\n\n<p><strong>.env Files<\/strong><\/p>\n\n\n\n<p>Das .env Dateiformat, das durch Node.js popul\u00e4r wurde, bietet eine praktische M\u00f6glichkeit, Umgebungsvariablen im Schl\u00fcssel-Wert-Format anzugeben:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># .env\nDB_URL=localhost\nAPI_KEY=123456<\/code><\/pre>\n\n\n\n<p>Web-Frameworks wie Django und Laravel laden automatisch Variablen, die in .env-Dateien definiert sind, in die Anwendungsumgebung. F\u00fcr andere Sprachen wie Python behandeln Bibliotheken wie python-dotenv das Importieren von .env-Dateien:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>from dotenv import load_dotenv\nload_dotenv() # L\u00e4dt .env Variablen\n\nprint(os.environ&#091;'DB_URL']) # localhost<\/code><\/pre>\n\n\n\n<p>Der Vorteil der Verwendung von .env-Dateien besteht darin, dass sie die Konfiguration sauber und getrennt halten, ohne \u00c4nderungen am Code vorzunehmen.<\/p>\n\n\n\n<p><strong>JSON-Konfigurationsdateien<\/strong><\/p>\n\n\n\n<p>F\u00fcr komplexere Konfigurationsanforderungen, die mehrere Umgebungsvariablen umfassen, hilft die Verwendung von JSON- oder YAML-Dateien, die Variablen zu organisieren:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ config.json\n{\n  \"api_url\": \"https:\/\/api.example.com\",\n  \"api_key\": \"123456\", \n  \"port\": 3000\n}<\/code><\/pre>\n\n\n\n<p>Der Anwendungscode kann dann diese JSON-Daten schnell als W\u00f6rterbuch laden, um auf konfigurierte Variablen zuzugreifen:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import json\n\nconfig = json.load('config.json')  \n\napi_url = config&#091;'api_url']\napi_key = config&#091;'api_key'] \nport = config&#091;'port'] # 3000<\/code><\/pre>\n\n\n\n<p>Dies verhindert unordentliche dotenv-Dateien bei der Verwaltung mehrerer App-Konfigurationen.<\/p>\n\n\n\n<h2 id=\"access\" class=\"wp-block-heading\">Wie greifen Sie auf Umgebungsvariablen in verschiedenen Programmiersprachen zu?<\/h2>\n\n\n\n<p>Unabh\u00e4ngig davon, wie wir Umgebungsvariablen definieren, ben\u00f6tigen unsere Anwendungen eine konsistente Methode, um Werte zur Laufzeit zu suchen.<\/p>\n\n\n\n<p>Obwohl verschiedene Methoden existieren, Umgebungsvariablen zu definieren, ben\u00f6tigt der Anwendungscode einen standardisierten Weg, um sie zur Laufzeit unabh\u00e4ngig von der Sprache zugreifen zu k\u00f6nnen. Hier ist eine \u00dcbersicht \u00fcber Techniken, um auf Umgebungsvariablen in beliebten Sprachen zuzugreifen:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Python<\/h3>\n\n\n\n<p>Python stellt das os.environ W\u00f6rterbuch bereit, um definierte Umgebungsvariablen zu zugreifen:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import os\n\ndb = os.environ.get('DB_NAME')\n\nprint(db)<\/code><\/pre>\n\n\n\n<p>Wir k\u00f6nnen eine Variable mit os.environ.get() abrufen, das None zur\u00fcckgibt, wenn sie nicht definiert ist. Oder direkt \u00fcber os.environ() zugreifen, was einen KeyError ausl\u00f6st, wenn sie nicht vorhanden ist.<\/p>\n\n\n\n<p>Zus\u00e4tzliche Methoden wie os.getenv() und os.environ.get() erm\u00f6glichen es, Standardwerte festzulegen, falls nicht gesetzt.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">JavaScript (Node.js)<\/h3>\n\n\n\n<p>In <a target=\"_blank\" href=\"https:\/\/www.dreamhost.com\/blog\/de\/was-ist-nodejs\/\" rel=\"noopener\">Node.js<\/a> JavaScript-Code sind Umgebungsvariablen auf dem globalen process.env-Objekt verf\u00fcgbar:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ Get env var\nconst db = process.env.DB_NAME;\n\nconsole.log(db);<\/code><\/pre>\n\n\n\n<p>Wenn undefiniert, wird process.env undefiniert enthalten. Wir k\u00f6nnen auch Standardwerte bereitstellen wie:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>const db = process.env.DB_NAME || 'defaultdb';<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Ruby<\/h3>\n\n\n\n<p>Ruby-Anwendungen greifen \u00fcber den ENV-Hash auf Umgebungsvariablen zu:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Zugriffsvariable \ndb = ENV&#091;'DB_NAME']  \n\nputs db<\/code><\/pre>\n\n\n\n<p>Wir k\u00f6nnen auch einen Standardwert \u00fcbergeben, wenn der gew\u00fcnschte Schl\u00fcssel nicht existiert:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>db = ENV.fetch('DB_NAME', 'defaultdb')<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">PHP<\/h3>\n\n\n\n<p>PHP stellt globale Methoden getenv(), $_ENV und $_SERVER zur Verf\u00fcgung, um auf Umgebungsvariablen zuzugreifen:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ Umgebungsvariable abrufen\n$db_name = getenv('DB_NAME');\n\n\/\/ Oder auf $_ENV oder $_SERVER Arrays zugreifen \n$db_name = $_ENV&#091;'DB_NAME'];<\/code><\/pre>\n\n\n\n<p>Je nach der Variablenquelle k\u00f6nnen sie in verschiedenen Globals verf\u00fcgbar sein.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Java<\/h3>\n\n\n\n<p>In Java gibt die Methode System.getenv() Umgebungsvariablen zur\u00fcck, auf die zugegriffen werden kann:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>String dbName = System.getenv(\"DB_NAME\");<\/code><\/pre>\n\n\n\n<p>Dies erm\u00f6glicht den Zugriff auf global auf Systemebene in Java definierte Variablen.<\/p>\n\n\n\n<p>Vorl\u00e4ufig einige bew\u00e4hrte Methoden zur Hygiene von Umgebungsvariablen.<\/p>\n\n\n\n<h2 id=\"security\" class=\"wp-block-heading\">Sicherheitsleitfaden f\u00fcr Umgebungsvariablen<\/h2>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"1600\" height=\"800\" data-src=\"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2024\/03\/07-Environment-Variables-Security-Best-Practices.jpg\" alt=\"Speichern Sie niemals sensible Informationen, verwenden Sie umgebungsspezifische Variablen, halten Sie Geheimnisse aus der Versionskontrolle heraus, sichern Sie Geheimnisse auf Produktionsservern, verwenden Sie starke Verschl\u00fcsselungsalgorithmen, wechseln Sie Geheimnisse regelm\u00e4\u00dfig \" class=\"wp-image-43790 lazyload\" data-srcset=\"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2024\/03\/07-Environment-Variables-Security-Best-Practices.jpg.webp 1600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2024\/03\/07-Environment-Variables-Security-Best-Practices-300x150.jpg 300w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2024\/03\/07-Environment-Variables-Security-Best-Practices-1024x512.jpg 1024w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2024\/03\/07-Environment-Variables-Security-Best-Practices-768x384.jpg 768w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2024\/03\/07-Environment-Variables-Security-Best-Practices-1536x768.jpg 1536w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2024\/03\/07-Environment-Variables-Security-Best-Practices-600x300.jpg.webp 600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2024\/03\/07-Environment-Variables-Security-Best-Practices-1200x600.jpg.webp 1200w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2024\/03\/07-Environment-Variables-Security-Best-Practices-730x365.jpg.webp 730w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2024\/03\/07-Environment-Variables-Security-Best-Practices-1460x730.jpg.webp 1460w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2024\/03\/07-Environment-Variables-Security-Best-Practices-784x392.jpg.webp 784w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2024\/03\/07-Environment-Variables-Security-Best-Practices-1568x784.jpg.webp 1568w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2024\/03\/07-Environment-Variables-Security-Best-Practices-877x439.jpg.webp 877w\" data-sizes=\"(max-width: 1600px) 100vw, 1600px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1600px; --smush-placeholder-aspect-ratio: 1600\/800;\" \/><\/figure>\n\n\n\n<p>Wenn es darum geht, Umgebungsvariablen sicher zu verwalten, sollten wir mehrere bew\u00e4hrte Verfahren beachten.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Speichern Sie niemals sensible Informationen im Code<\/h3>\n\n\n\n<p>Zuallererst sollten niemals sensible Informationen wie Passw\u00f6rter, API-Schl\u00fcssel oder Tokens direkt im Code gespeichert werden.<\/p>\n\n\n\n<p>Es mag verlockend sein, einfach ein Datenbankpasswort oder einen Verschl\u00fcsselungsschl\u00fcssel in Ihren Quellcode f\u00fcr den schnellen Zugriff hart zu kodieren, aber widerstehen Sie diesem Drang!<\/p>\n\n\n\n<p>Wenn Sie versehentlich diesen Code in ein \u00f6ffentliches Repository auf GitHub \u00fcbertragen, senden Sie im Grunde Ihre Geheimnisse an die ganze Welt. Stellen Sie sich vor, ein Hacker erlangt Zugriff auf Ihre Produktionsdatenbank-Zugangsdaten, nur weil sie im Klartext in Ihrer Codebasis liegen. Be\u00e4ngstigender Gedanke, nicht wahr?<\/p>\n\n\n\n<p>Verwenden Sie stattdessen immer Umgebungsvariablen, um jegliche Art von sensibler Konfiguration zu speichern. Bewahren Sie Ihre Geheimnisse an einem sicheren Ort wie einer .env-Datei oder einem Tool zur Verwaltung von Geheimnissen auf und referenzieren Sie sie in Ihrem Code \u00fcber Umgebungsvariablen. Zum Beispiel, anstatt so etwas in Ihrem Python-Code zu tun:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>db_password = \"supers3cr3tpassw0rd\"<\/code><\/pre>\n\n\n\n<p>Sie w\u00fcrden dieses Passwort in einer Umgebungsvariablen wie folgt speichern:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># .env file\nDB_PASSWORD=supers3cr3tpassw0rd<\/code><\/pre>\n\n\n\n<p>Und dann greifen Sie in Ihrem Code darauf zu wie folgt:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import os\ndb_password = os.environ.get('DB_PASSWORD')<\/code><\/pre>\n\n\n\n<p>Auf diese Weise bleiben Ihre Geheimnisse sicher, auch wenn Ihr Quellcode kompromittiert wird. Umgebungsvariablen dienen als sichere Abstraktionsschicht.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Umweltspezifische Variablen verwenden<\/h3>\n\n\n\n<p>Ein weiteres Verfahren ist die Verwendung unterschiedlicher Umgebungsvariablen f\u00fcr jede Anwendungsumgebung, wie Entwicklung, Staging und Produktion.<\/p>\n\n\n\n<p>Sie m\u00f6chten nicht versehentlich eine Verbindung zu Ihrer Produktionsdatenbank herstellen, w\u00e4hrend Sie lokal entwickeln, nur weil Sie vergessen haben, eine Konfigurationsvariable zu aktualisieren! Setzen Sie Namensr\u00e4ume f\u00fcr Ihre Umgebungsvariablen f\u00fcr jede Umgebung:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Dev\nDEV_API_KEY=abc123\nDEV_DB_URL=localhost\n\n# Production\nPROD_API_KEY=xyz789\nPROD_DB_URL=proddb.amazonaws.com<\/code><\/pre>\n\n\n\n<p>Dann beziehen Sie sich auf die entsprechenden Variablen in Ihrem Code, abh\u00e4ngig von der aktuellen Umgebung. Viele Frameworks wie Rails bieten f\u00fcr diesen Zweck umgebungsspezifische Konfigurationsdateien an.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Halten Sie Geheimnisse au\u00dferhalb der Versionskontrolle<\/h3>\n\n\n\n<p>Es ist auch entscheidend, Ihre .env- und Konfigurationsdateien, die Geheimnisse enthalten, au\u00dferhalb der Versionskontrolle zu halten. F\u00fcgen Sie .env zu Ihrer <code>.gitignore<\/code> hinzu, damit Sie es nicht versehentlich in Ihr Repository einchecken.<\/p>\n\n\n\n<p>Sie k\u00f6nnen <code>git-secrets<\/code> verwenden, um vor jedem Commit nach sensiblen Informationen zu scannen. F\u00fcr zus\u00e4tzliche Sicherheit verschl\u00fcsseln Sie Ihre Geheimnisse-Datei, bevor Sie sie speichern. Werkzeuge wie Ansible Vault und BlackBox k\u00f6nnen dabei helfen.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Sichere Geheimnisse auf Produktionsservern<\/h3>\n\n\n\n<p>Beim Verwalten von Umgebungsvariablen auf Ihren Produktionsservern sollten Sie vermeiden, diese \u00fcber Kommandozeilenargumente zu setzen, die \u00fcber die Prozesstabelle inspiziert werden k\u00f6nnen.<\/p>\n\n\n\n<p>Verwenden Sie stattdessen die Umgebungsverwaltungstools Ihres Betriebssystems oder Ihrer Container-Orchestrierungsplattform. Zum Beispiel k\u00f6nnen Sie Kubernetes Secrets verwenden, um Geheimnisse sicher zu speichern und Ihren Anwendungs-Pods zug\u00e4nglich zu machen.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Verwenden Sie starke Verschl\u00fcsselungsalgorithmen<\/h3>\n\n\n\n<p>Verwenden Sie robuste und moderne Verschl\u00fcsselungsalgorithmen beim Verschl\u00fcsseln Ihrer Geheimnisse, ob in \u00dcbertragung oder im Ruhezustand. Vermeiden Sie veraltete Algorithmen wie DES oder MD5, die bekannte Schwachstellen haben. W\u00e4hlen Sie stattdessen branchen\u00fcbliche Algorithmen wie AES-256 f\u00fcr symmetrische Verschl\u00fcsselung und RSA-2048 oder ECDSA f\u00fcr asymmetrische Verschl\u00fcsselung.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Regelm\u00e4\u00dfig Geheimnisse rotieren<\/h3>\n\n\n\n<p>Drehen Sie Ihre Geheimnisse regelm\u00e4\u00dfig, besonders wenn Sie vermuten, dass sie kompromittiert worden sein k\u00f6nnten. Behandeln Sie Geheimnisse, wie Sie ein Passwort behandeln w\u00fcrden \u2014 aktualisieren Sie sie alle paar Monate. Ein Geheimnisverwaltungstool wie Hashicorp Vault oder AWS Secrets Manager kann dabei helfen, diesen Prozess zu automatisieren.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Seien Sie vorsichtig mit Protokollierung und Fehlerberichterstattung<\/h3>\n\n\n\n<p>Seien Sie vorsichtig mit Protokollierung und Fehlerberichterstattung. Stellen Sie sicher, dass Sie keine Umgebungsvariablen protokollieren, die sensible Werte enthalten. Wenn Sie ein Fehlerverfolgungstool von Drittanbietern verwenden, konfigurieren Sie es so, dass es sensible Daten bereinigt. Das Letzte, was Sie wollen, ist, dass Ihre Geheimnisse in einem Stack-Trace auf einem Dashboard f\u00fcr Ausnahmeberichte erscheinen!<\/p>\n\n\n\n<h2 id=\"avoid\" class=\"wp-block-heading\">Wann sollte man Umgebungsvariablen vermeiden?<\/h2>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"1600\" height=\"777\" data-src=\"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2024\/03\/08-When-To-Avoid-Environment-Variables_.jpg\" alt=\"Umweltvariable mit 4 Abzweigungen, aber jede mit einem X, das den Weg zu komplexer Konfiguration, sensiblen Informationen, mehreren Umgebungen, Teamfreigabe blockiert\" class=\"wp-image-43791 lazyload\" data-srcset=\"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2024\/03\/08-When-To-Avoid-Environment-Variables_.jpg.webp 1600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2024\/03\/08-When-To-Avoid-Environment-Variables_-300x146.jpg 300w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2024\/03\/08-When-To-Avoid-Environment-Variables_-1024x497.jpg 1024w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2024\/03\/08-When-To-Avoid-Environment-Variables_-768x373.jpg 768w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2024\/03\/08-When-To-Avoid-Environment-Variables_-1536x746.jpg 1536w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2024\/03\/08-When-To-Avoid-Environment-Variables_-600x291.jpg.webp 600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2024\/03\/08-When-To-Avoid-Environment-Variables_-1200x583.jpg.webp 1200w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2024\/03\/08-When-To-Avoid-Environment-Variables_-730x355.jpg.webp 730w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2024\/03\/08-When-To-Avoid-Environment-Variables_-1460x709.jpg.webp 1460w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2024\/03\/08-When-To-Avoid-Environment-Variables_-784x381.jpg.webp 784w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2024\/03\/08-When-To-Avoid-Environment-Variables_-1568x761.jpg.webp 1568w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2024\/03\/08-When-To-Avoid-Environment-Variables_-877x426.jpg.webp 877w\" data-sizes=\"(max-width: 1600px) 100vw, 1600px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1600px; --smush-placeholder-aspect-ratio: 1600\/777;\" \/><\/figure>\n\n\n\n<p>Es gibt mehrere F\u00e4lle, in denen Umgebungsvariablen vermieden werden sollten:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Verwaltung komplexer Konfigurationen<\/h3>\n\n\n\n<p>Die Verwendung von Umgebungsvariablen zur Verwaltung der Konfiguration f\u00fcr komplexe Softwaresysteme kann un\u00fcbersichtlich und fehleranf\u00e4llig werden. Mit der zunehmenden Anzahl an Konfigurationsparametern endet man mit langen Namen f\u00fcr Umgebungsvariablen, die unbeabsichtigt kollidieren k\u00f6nnen. Es gibt auch keine einfache M\u00f6glichkeit, zusammengeh\u00f6rige Konfigurationswerte zu organisieren.<\/p>\n\n\n\n<p>Anstelle von Umgebungsvariablen sollten Sie die Verwendung von Konfigurationsdateien in einem Format wie JSON oder YAML in Betracht ziehen. Diese erm\u00f6glichen es Ihnen:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Gruppieren Sie verwandte Konfigurationsparameter zusammen in einer verschachtelten Struktur.<\/li>\n\n\n\n<li>Vermeiden Sie Namenskonflikte, indem Sie Konfigurationen in Bereiche und Namensr\u00e4ume kapseln.<\/li>\n\n\n\n<li>Definieren Sie benutzerdefinierte Datentypen anstelle von nur Zeichenketten.<\/li>\n\n\n\n<li>Konfigurationen schnell mit einem Texteditor ansehen und \u00e4ndern.<\/li>\n\n\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Speicherung sensibler Informationen<\/h3>\n\n\n\n<p>Obwohl Umgebungsvariablen das Einspeisen externer Konfigurationen wie API-Schl\u00fcssel, Datenbankpassw\u00f6rter usw. erleichtern, kann dies Sicherheitsprobleme verursachen.<\/p>\n\n\n\n<p>Das Problem ist, dass Umgebungsvariablen global in einem Prozess zug\u00e4nglich sind. Wenn also ein Exploit in einem Teil Ihrer Anwendung existiert, k\u00f6nnte dies Geheimnisse gef\u00e4hrden, die in Umgebungsvariablen gespeichert sind.<\/p>\n\n\n\n<p>Ein sichererer Ansatz ist die Verwendung eines Geheimdienstverwaltungsdienstes, der Verschl\u00fcsselung und Zugriffskontrolle handhabt. Diese Dienste erm\u00f6glichen das Speichern sensibler Daten extern und bieten SDKs zum Abrufen von Anwendungswerten.<\/p>\n\n\n\n<p>Denken Sie also daran, eine dedizierte L\u00f6sung zur Verwaltung von Geheimnissen anstelle von Umgebungsvariablen f\u00fcr Anmeldeinformationen und private Schl\u00fcssel zu verwenden. Dies verringert das Risiko, sensible Daten durch Exploits oder unbeabsichtigtes Protokollieren versehentlich offenzulegen.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Arbeiten mit mehreren Umgebungen<\/h3>\n\n\n\n<p>Das Verwalten von Umgebungsvariablen kann m\u00fchsam werden, wenn Anwendungen wachsen und in verschiedenen Umgebungen (dev, staging, staging, prod) eingesetzt werden. Es kann vorkommen, dass Konfigurationsdaten auf verschiedene Bash-Skripte, Deployment-Tools usw. verteilt sind.<\/p>\n\n\n\n<p>Eine Konfigurationsverwaltungsl\u00f6sung hilft dabei, alle umgebungsspezifischen Einstellungen an einem zentralen Ort zu konsolidieren. Dies k\u00f6nnte Dateien in einem Repository, ein dedizierter Konfigurationsserver oder integriert mit Ihren CI\/CD-Pipelines sein.<\/p>\n\n\n\n<p>Wenn das Ziel darin besteht, Umgebungsvariablen nicht zu duplizieren, macht eine einzige Quelle der Wahrheit f\u00fcr Konfigurationen mehr Sinn.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Konfigurationen \u00fcber Teams teilen<\/h3>\n\n\n\n<p>Da Umgebungsvariablen lokal pro Prozess geladen werden, wird das Teilen und Synchronisieren von Konfigurationsdaten \u00fcber verschiedene Teams hinweg, die an derselben Anwendung oder Dienstleistungssuite arbeiten, sehr schwierig.<\/p>\n\n\n\n<p>Jedes Team kann seine Kopie von Konfigurationswerten in verschiedenen Bash-Skripten, Bereitstellungsmanifesten usw. pflegen. Diese dezentralisierte Konfiguration f\u00fchrt zu Folgendem:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Konfigurationsdrift<\/strong>: Ohne eine einzige Quelle der Wahrheit ist es einfach, dass die Konfiguration in verschiedenen Umgebungen inkonsistent wird, da verschiedene Teams unabh\u00e4ngige \u00c4nderungen vornehmen.<\/li>\n\n\n\n<li><strong>Mangel an Sichtbarkeit<\/strong>: Es gibt keine zentralisierte M\u00f6glichkeit, den gesamten Konfigurationsstatus \u00fcber alle Dienste hinweg anzusehen, zu suchen und zu analysieren. Dies macht es extrem schwierig zu verstehen, wie ein Dienst konfiguriert ist.<\/li>\n\n\n\n<li><strong>Audit-Herausforderungen<\/strong>: \u00c4nderungen an Umgebungsvariablen werden nicht auf eine standardisierte Weise verfolgt, was es schwierig macht zu \u00fcberpr\u00fcfen, wer was und wann ge\u00e4ndert hat.<\/li>\n\n\n\n<li><strong>Testschwierigkeiten<\/strong>: Ohne eine M\u00f6glichkeit, Konfigurationen einfach zu erfassen und zu teilen, wird es extrem m\u00fchsam, konsistente Umgebungen f\u00fcr Entwicklung und Tests sicherzustellen.<\/li>\n\n\n<\/ol>\n\n\n\n<p>Anstatt dieses fragmentierten Ansatzes erm\u00f6glicht eine zentralisierte Konfigurationsl\u00f6sung es Teams, die Konfiguration von einer einzigen Plattform oder einem einzigen Repository aus zu verwalten.<\/p>\n\n\n\n<h2 id=\"build\" class=\"wp-block-heading\">Bauen Sie Ihre Apps mit Umgebungsvariablen f\u00fcr die Langzeit<\/h2>\n\n\n\n<p>Wenn Ihre Anwendung w\u00e4chst, sollten Sie \u00fcberlegen, wie Sie m\u00f6glicherweise fortschrittlichere Methoden ben\u00f6tigen, um deren Konfigurationseinstellungen zu verwalten.<\/p>\n\n\n\n<p>Was jetzt einfach erscheint, k\u00f6nnte sp\u00e4ter komplizierter werden. Sie werden wahrscheinlich bessere M\u00f6glichkeiten ben\u00f6tigen, um den Zugriff zu steuern, Team-Einstellungen zu teilen, alles klar zu organisieren und Konfigurationen reibungslos zu aktualisieren.<\/p>\n\n\n\n<p>Malen Sie sich nicht in die Ecke, indem Sie von Anfang an nur Umgebungsvariablen verwenden. Sie sollten planen, wie Sie mit Konfigurationen umgehen, wenn Ihre Anforderungen steigen.<\/p>\n\n\n\n<p>W\u00e4hrend Umgebungsvariablen ideal sind, um umgebungsbezogene Daten wie Anmeldeinformationen, Datenbanknamen, lokale IPs usw. zu verwalten, m\u00f6chten Sie ein System erstellen, das soliden Prinzipien wie Sicherheit, Teilbarkeit, Organisation und der F\u00e4higkeit, sich schnell an Ver\u00e4nderungen anzupassen, folgt.<\/p>\n\n\n\n<p>Die Alternativen, die wir besprochen haben, wie die Verwendung einer dedizierten Konfigurationsdatei oder eines Dienstes, haben wertvolle Funktionen, die mit diesen Prinzipien \u00fcbereinstimmen. Das wird Ihnen helfen, schnell weiterzukommen, ohne verlangsamt zu werden.<\/p>\n\n\n\n<div class=\"article-newsletter article-newsletter--gradient\">\n\n\n<h2>Get Content Delivered Straight to Your Inbox<\/h2><p>Subscribe now to receive all the latest updates, delivered directly to your inbox.<\/p><form class=\"nwsl-form\" id=\"newsletter_block_\" novalidate><div class=\"messages\"><\/div><div class=\"form-group\"><label for=\"input_newsletter_block_\"><input type=\"email\"name=\"email\"id=\"input_newsletter_block_\"placeholder=\"Enter your email address\"novalidatedisabled=\"disabled\"\/><\/label><button type=\"submit\"class=\"btn btn--brand\"disabled=\"disabled\"><span>Sign Me Up!<\/span><svg width=\"21\" height=\"14\" viewBox=\"0 0 21 14\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n<path d=\"M13.8523 0.42524L12.9323 1.34521C12.7095 1.56801 12.7132 1.9304 12.9404 2.14865L16.7241 5.7823H0.5625C0.251859 5.7823 0 6.03416 0 6.3448V7.6573C0 7.96794 0.251859 8.2198 0.5625 8.2198H16.7241L12.9405 11.8535C12.7132 12.0717 12.7095 12.4341 12.9323 12.6569L13.8523 13.5769C14.072 13.7965 14.4281 13.7965 14.6478 13.5769L20.8259 7.39879C21.0456 7.17913 21.0456 6.82298 20.8259 6.60327L14.6477 0.42524C14.4281 0.205584 14.0719 0.205584 13.8523 0.42524Z\" fill=\"white\"\/>\n<\/svg>\n<\/button><\/div><\/form><\/div>\n\n","protected":false},"excerpt":{"rendered":"<p>Dieser anf\u00e4ngerfreundliche Leitfaden erkl\u00e4rt, was Umgebungsvariablen so gro\u00dfartig macht und wie Sie sie zu Ihrem Vorteil nutzen k\u00f6nnen.<\/p>\n","protected":false},"author":1006,"featured_media":43775,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_yoast_wpseo_metadesc":"","toc_headlines":"[[\"what\",\"Was sind Umgebungsvariablen?\"],[\"why\",\"Warum sind Umgebungsvariablen wertvoll?\"],[\"define\",\"Wie k\u00f6nnen Sie Umgebungsvariablen definieren\"],[\"access\",\"Wie greifen Sie auf Umgebungsvariablen in verschiedenen Programmiersprachen zu?\"],[\"security\",\"Sicherheitsleitfaden f\u00fcr Umgebungsvariablen\"],[\"avoid\",\"Wann sollte man Umgebungsvariablen vermeiden?\"],[\"build\",\"Bauen Sie Ihre Apps mit Umgebungsvariablen f\u00fcr die Langzeit\"]]","hide_toc":false,"footnotes":""},"categories":[14497],"tags":[],"class_list":["post-56446","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-webhosting-de"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.3 (Yoast SEO v27.4) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Was sind Umgebungsvariablen: Ein gr\u00fcndlicher Leitfaden f\u00fcr Anf\u00e4nger - DreamHost Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www-dev.dreamhost.com\/blog\/de\/umgebungsvariablen\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Was sind Umgebungsvariablen: Ein gr\u00fcndlicher Leitfaden f\u00fcr Anf\u00e4nger\" \/>\n<meta property=\"og:description\" content=\"Dieser anf\u00e4ngerfreundliche Leitfaden erkl\u00e4rt, was Umgebungsvariablen so gro\u00dfartig macht und wie Sie sie zu Ihrem Vorteil nutzen k\u00f6nnen.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www-dev.dreamhost.com\/blog\/de\/umgebungsvariablen\/\" \/>\n<meta property=\"og:site_name\" content=\"DreamHost Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/DreamHost\/\" \/>\n<meta property=\"article:published_time\" content=\"2024-03-29T14:00:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-01-17T00:29:18+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2024\/03\/1460-x-1095-BLOG-HERO-_What-are-Environment-Variables_A-Thorough-Guide-for-Beginners.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1460\" \/>\n\t<meta property=\"og:image:height\" content=\"1095\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Brian Andrus\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@dreamhost\" \/>\n<meta name=\"twitter:site\" content=\"@dreamhost\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Brian Andrus\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"18 minutes\" \/>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Was sind Umgebungsvariablen: Ein gr\u00fcndlicher Leitfaden f\u00fcr Anf\u00e4nger - DreamHost Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www-dev.dreamhost.com\/blog\/de\/umgebungsvariablen\/","og_locale":"en_US","og_type":"article","og_title":"Was sind Umgebungsvariablen: Ein gr\u00fcndlicher Leitfaden f\u00fcr Anf\u00e4nger","og_description":"Dieser anf\u00e4ngerfreundliche Leitfaden erkl\u00e4rt, was Umgebungsvariablen so gro\u00dfartig macht und wie Sie sie zu Ihrem Vorteil nutzen k\u00f6nnen.","og_url":"https:\/\/www-dev.dreamhost.com\/blog\/de\/umgebungsvariablen\/","og_site_name":"DreamHost Blog","article_publisher":"https:\/\/www.facebook.com\/DreamHost\/","article_published_time":"2024-03-29T14:00:00+00:00","article_modified_time":"2025-01-17T00:29:18+00:00","og_image":[{"width":1460,"height":1095,"url":"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2024\/03\/1460-x-1095-BLOG-HERO-_What-are-Environment-Variables_A-Thorough-Guide-for-Beginners.jpg","type":"image\/jpeg"}],"author":"Brian Andrus","twitter_card":"summary_large_image","twitter_creator":"@dreamhost","twitter_site":"@dreamhost","twitter_misc":{"Written by":"Brian Andrus","Est. reading time":"18 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www-dev.dreamhost.com\/blog\/de\/umgebungsvariablen\/#article","isPartOf":{"@id":"https:\/\/www-dev.dreamhost.com\/blog\/de\/umgebungsvariablen\/"},"author":{"name":"Brian Andrus","@id":"https:\/\/www-dev.dreamhost.com\/blog\/#\/schema\/person\/a3f8817a11ac0b464bfbcb6c505cb82b"},"headline":"Was sind Umgebungsvariablen: Ein gr\u00fcndlicher Leitfaden f\u00fcr Anf\u00e4nger","datePublished":"2024-03-29T14:00:00+00:00","dateModified":"2025-01-17T00:29:18+00:00","mainEntityOfPage":{"@id":"https:\/\/www-dev.dreamhost.com\/blog\/de\/umgebungsvariablen\/"},"wordCount":3016,"publisher":{"@id":"https:\/\/www-dev.dreamhost.com\/blog\/#organization"},"image":{"@id":"https:\/\/www-dev.dreamhost.com\/blog\/de\/umgebungsvariablen\/#primaryimage"},"thumbnailUrl":"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2024\/03\/1460-x-1095-BLOG-HERO-_What-are-Environment-Variables_A-Thorough-Guide-for-Beginners.jpg","articleSection":["Webhosting"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www-dev.dreamhost.com\/blog\/de\/umgebungsvariablen\/","url":"https:\/\/www-dev.dreamhost.com\/blog\/de\/umgebungsvariablen\/","name":"Was sind Umgebungsvariablen: Ein gr\u00fcndlicher Leitfaden f\u00fcr Anf\u00e4nger - DreamHost Blog","isPartOf":{"@id":"https:\/\/www-dev.dreamhost.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www-dev.dreamhost.com\/blog\/de\/umgebungsvariablen\/#primaryimage"},"image":{"@id":"https:\/\/www-dev.dreamhost.com\/blog\/de\/umgebungsvariablen\/#primaryimage"},"thumbnailUrl":"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2024\/03\/1460-x-1095-BLOG-HERO-_What-are-Environment-Variables_A-Thorough-Guide-for-Beginners.jpg","datePublished":"2024-03-29T14:00:00+00:00","dateModified":"2025-01-17T00:29:18+00:00","breadcrumb":{"@id":"https:\/\/www-dev.dreamhost.com\/blog\/de\/umgebungsvariablen\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www-dev.dreamhost.com\/blog\/de\/umgebungsvariablen\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www-dev.dreamhost.com\/blog\/de\/umgebungsvariablen\/#primaryimage","url":"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2024\/03\/1460-x-1095-BLOG-HERO-_What-are-Environment-Variables_A-Thorough-Guide-for-Beginners.jpg","contentUrl":"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2024\/03\/1460-x-1095-BLOG-HERO-_What-are-Environment-Variables_A-Thorough-Guide-for-Beginners.jpg","width":1460,"height":1095,"caption":"What Are Environment Variables: A Thorough Guide For Beginners"},{"@type":"BreadcrumbList","@id":"https:\/\/www-dev.dreamhost.com\/blog\/de\/umgebungsvariablen\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/dhblog.dream.press\/blog\/"},{"@type":"ListItem","position":2,"name":"Was sind Umgebungsvariablen: Ein gr\u00fcndlicher Leitfaden f\u00fcr Anf\u00e4nger"}]},{"@type":"WebSite","@id":"https:\/\/www-dev.dreamhost.com\/blog\/#website","url":"https:\/\/www-dev.dreamhost.com\/blog\/","name":"DreamHost Blog","description":"","publisher":{"@id":"https:\/\/www-dev.dreamhost.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www-dev.dreamhost.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www-dev.dreamhost.com\/blog\/#organization","name":"DreamHost","url":"https:\/\/www-dev.dreamhost.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www-dev.dreamhost.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/dhblog.dream.press\/blog\/wp-content\/uploads\/2019\/01\/dh_logo-blue-2.png","contentUrl":"https:\/\/dhblog.dream.press\/blog\/wp-content\/uploads\/2019\/01\/dh_logo-blue-2.png","width":1200,"height":168,"caption":"DreamHost"},"image":{"@id":"https:\/\/www-dev.dreamhost.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/DreamHost\/","https:\/\/x.com\/dreamhost","https:\/\/www.instagram.com\/dreamhost\/","https:\/\/www.linkedin.com\/company\/dreamhost\/","https:\/\/www.youtube.com\/user\/dreamhostusa"]},{"@type":"Person","@id":"https:\/\/www-dev.dreamhost.com\/blog\/#\/schema\/person\/a3f8817a11ac0b464bfbcb6c505cb82b","name":"Brian Andrus","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/10\/brian-andrus-150x150.jpg","url":"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/10\/brian-andrus-150x150.jpg","contentUrl":"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/10\/brian-andrus-150x150.jpg","caption":"Brian Andrus"},"description":"Brian is a Cloud Engineer at DreamHost, primarily responsible for cloudy things. In his free time he enjoys navigating fatherhood, cutting firewood, and self-hosting whatever he can.","url":"https:\/\/www-dev.dreamhost.com\/blog\/author\/brianandrus\/"}]}},"lang":"de","translations":{"de":56446,"es":43798,"en":43774,"pt":52136,"uk":56449,"pl":56470,"ru":56476,"it":68648,"fr":70873,"nl":70906},"pll_sync_post":[],"_links":{"self":[{"href":"https:\/\/www-dev.dreamhost.com\/blog\/wp-json\/wp\/v2\/posts\/56446","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www-dev.dreamhost.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www-dev.dreamhost.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www-dev.dreamhost.com\/blog\/wp-json\/wp\/v2\/users\/1006"}],"replies":[{"embeddable":true,"href":"https:\/\/www-dev.dreamhost.com\/blog\/wp-json\/wp\/v2\/comments?post=56446"}],"version-history":[{"count":4,"href":"https:\/\/www-dev.dreamhost.com\/blog\/wp-json\/wp\/v2\/posts\/56446\/revisions"}],"predecessor-version":[{"id":63666,"href":"https:\/\/www-dev.dreamhost.com\/blog\/wp-json\/wp\/v2\/posts\/56446\/revisions\/63666"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www-dev.dreamhost.com\/blog\/wp-json\/wp\/v2\/media\/43775"}],"wp:attachment":[{"href":"https:\/\/www-dev.dreamhost.com\/blog\/wp-json\/wp\/v2\/media?parent=56446"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www-dev.dreamhost.com\/blog\/wp-json\/wp\/v2\/categories?post=56446"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www-dev.dreamhost.com\/blog\/wp-json\/wp\/v2\/tags?post=56446"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}