button-icon

GirişYap

GirişYap
Archi's Academy
    Kurslar
    Kurslar
    #
  • Projeler
    Projeler
  • Archi's Academy

    Alanlar

    #
  • Bloglar
    Bloglar
  • Fiyatlandırma
    Fiyatlandırma
  • İletişim
    İletişim
  • Öğrenci Kulüpleri İçin
    Öğrenci Kulüpleri İçin

BLACK FRIDAY

Tüm Kasım boyunca %85 İndirim

whatsapp
İletişime Geç
Archi's Academy

Navigasyon

  • Kurslar
  • Projeler
  • Bloglar
  • Fiyatlandırma
  • Öğrenci Kulüpleri İçin
  • İletişim

Kurslar

    Alanlarımız

    • Frontend Geliştirme
    • Backend Geliştirme
    • Kalite Güvencesi
    • Agentic AI Kodlama ve LLM
    • Mobil Geliştirme
    • DevOps

    Yasal

    • Gizlilik Politikası
    • Hizmet Şartları

    İletişim

    +1 (217) 200 90 93
    Suite No: 8, 400 Emmet Street
    Kissimmee, Florida 34741 USA
    [email protected]

    Copyright © Tech Career Yazılım Danışmanlık A.Ş. 2026

    instagramlinkedingithubyoutubexfacebook
    visamastercardstripeiyzicoamerican-express
    ETBIS
    1. Home›
    2. Blog›
    3. Node.js’te Ortam Değişkenleri Nasıl Tanımlanır ve Kullanılır? Uygulamalı Rehber

    Software Development

    Coding

    Node.js’te Ortam Değişkenleri Nasıl Tanımlanır ve Kullanılır? Uygulamalı Rehber

    Veritabanı şifrelerini, API anahtarlarını ve gizli bilgileri doğrudan kaynak koda yazmak, veri sızıntılarının en kestirme yoludur. Üretim uygulamaları bu verileri güvenle yönetmek için ortam değişkenleri kullanır – gelin bunu doğru şekilde yapalım.

    Ortam Değişkenleri Neden Bu Kadar Önemli?

    Bir Node.js uygulaması geliştiriyorsunuz. Kodunuzun bir veritabanı şifresine, üçüncü parti bir servisten alınan API anahtarına ve geliştirme/üretim ortamına göre değişen ayarlara ihtiyacı var.
    Temelde üç seçeneğiniz var:
    1. Her şeyi koda gömmek (hardcode) – Veritabanı şifresi config.js içinde, API anahtarı bir yorum satırında, tüm sırlar git’e commit edilmiş. Bu, hacklenmenin en garantili yollarından biridir. Yapmayın.
    2. Ortam değişkenleri kullanmak – Hassas verileri koddan ayırırsınız. Geliştirme, test ve üretim için farklı değerler kullanabilirsiniz. Güvenli, ölçeklenebilir ve sektörde standart.
    3. Gizli yönetim hizmeti kullanmak – AWS Secrets Manager, HashiCorp Vault vb. Büyük ölçekli sistemler için kurumsal yaklaşım.
    Çoğu proje ve ekip için, özellikle başlangıçta, dotenv ile ortam değişkenleri en mantıklı çözümdür.

    Ortam Değişkenleri Aslında Nedir?

    Ortam değişkenleri, işletim sistemi seviyesinde tanımlanan ve uygulamanızın çalışma anında okuyabildiği değerlerdir.
    Bir örnek:
    DB_PASSWORD=supersecret123
    API_KEY=abc123xyz789
    NODE_ENV=production
    
    Bu değerleri kodunuza gömmek yerine, Node.js içinde şöyle okursunuz:
    const password = process.env.DB_PASSWORD; // "supersecret123"
    const apiKey = process.env.API_KEY;       // "abc123xyz789"
    const env = process.env.NODE_ENV;        // "production"
    
    İşletim sistemi bu değerleri, Node.js’te global bir nesne olan process.env içine enjekte eder. Uygulama ayağa kalktığında hepsi oradadır.

    Neden Önemli?

    Güvenlik: Sırlar kaynak kodda veya git geçmişinde görünmez. Depoyu açık kaynak yapsanız bile şifreleriniz ortada olmaz.
    Yapılandırma Yönetimi: Geliştirme, staging ve üretim gibi farklı ortamlar için farklı değerler atayabilirsiniz; kodu değiştirmek zorunda kalmazsınız.
    Deploy Esnekliği: Aynı kod tabanını farklı sunuculara deploy edersiniz, her sunucu kendi ortam değişkenlerini sağlar ve uygulama otomatik uyum sağlar.

    Sorun: Değişkenleri Elle Ayarlamak Yorucu

    Her geliştirici için ve her deploy ortamında ortam değişkenlerini tek tek elle ayarlamak zahmetli.
    macOS/Linux’ta:
    export DB_HOST=localhost
    export DB_PASSWORD=mypassword
    export API_KEY=key123
    
    Windows (PowerShell) için:
    $env:DB_HOST="localhost"
    $env:DB_PASSWORD="mypassword"
    $env:API_KEY="key123"
    
    Ekipteki herkesin bunu tekrar tekrar yapması gerekiyor. Her CI/CD pipeline’ında da aynı hikâye. Hata yapmaya çok açık bir süreç.
    Tam bu noktada dotenv hayat kurtarıyor.

    Dotenv Kullanımı: En Kolay Yol

    Dotenv, .env dosyanızdaki ortam değişkenlerini otomatik olarak process.env içine yükleyen küçük ama çok kullanışlı bir Node.js kütüphanesidir.

    Adım 1: Dotenv’i Kurun

    npm install dotenv
    
    veya Yarn ile:
    yarn add dotenv
    

    Adım 2: .env Dosyası Oluşturun

    Proje kök dizininde bir .env dosyası açın:
    DB_HOST=localhost
    DB_PORT=5432
    DB_USER=admin
    DB_PASSWORD=mysecurepassword
    API_KEY=abc123xyz789
    NODE_ENV=development
    JWT_SECRET=your-jwt-secret-key
    LOG_LEVEL=info
    

    Adım 3: Uygulamada Değişkenleri Yükleyin

    Uygulamanızda, en başta (bu değişkenlere ihtiyaç duyan herhangi bir koddan önce) dotenv’i çağırın:
    // app.js veya server.js – İLK SATIR
    require('dotenv').config();
    
    
    // Artık process.env kullanılabilir
    const express = require('express');
    const app = express();
    
    
    const dbHost = process.env.DB_HOST;
    const dbPort = process.env.DB_PORT;
    const apiKey = process.env.API_KEY;
    
    
    console.log(`Veritabanına bağlanılıyor: ${dbHost}:${dbPort}`);
    app.listen(3000);
    
    Kritik nokta: require('dotenv').config() çağrısını, ortam değişkenlerine ihtiyaç duyan tüm require/import’lardan önce yapın.

    Adım 4: .env Dosyasını .gitignore’a Ekleyin

    .env dosyasını asla git’e commit etmeyin. Aksi takdirde tüm sırlar repoda görünür.
    # .gitignore
    .env
    .env.local
    .env.*.local
    

    Adım 5: Şablon Dosyası Paylaşın (Sır Olmadan)

    Aynı anahtarları içeren ama sahte/değiştirilecek değerler barındıran bir .env.example oluşturun:
    # .env.example – Commit edilecek olan bu
    DB_HOST=localhost
    DB_PORT=5432
    DB_USER=admin
    DB_PASSWORD=change_me
    API_KEY=change_me
    NODE_ENV=development
    JWT_SECRET=change_me
    LOG_LEVEL=info
    
    Ekip arkadaşlarınız bu dosyayı kopyalayıp kendi makinalarında doldurur:
    cp .env.example .env
    # Sonra .env içini gerçek değerlerle güncelleyin
    

    Uygulamalı Örnek: Express API ve Ortam Değişkenleri

    Express.js ile basit ama gerçekçi bir örnek düşünelim:
    // server.js
    require('dotenv').config();
    
    
    const express = require('express');
    const postgres = require('pg');
    
    
    const app = express();
    
    
    // Ortamdan yapılandırmayı oku
    const config = {
      db: {
        host: process.env.DB_HOST,
        port: process.env.DB_PORT,
        user: process.env.DB_USER,
        password: process.env.DB_PASSWORD,
        database: process.env.DB_NAME
      },
      api: {
        port: process.env.PORT || 3000,
        apiKey: process.env.API_KEY,
        jwtSecret: process.env.JWT_SECRET
      },
      env: process.env.NODE_ENV || 'development'
    };
    
    
    // Zorunlu değişkenleri doğrula
    if (!config.api.apiKey) {
      throw new Error('API_KEY ortam değişkeni zorunludur');
    }
    
    
    // Veritabanına bağlan
    const pool = new postgres.Pool(config.db);
    
    
    // Rotalar
    app.get('/api/users', (req, res) => {
      const authHeader = req.headers.authorization;
      const token = authHeader?.split(' ');[11]
    
    
      // JWT_SECRET ile token doğrulama
      if (!token) {
        return res.status(401).json({ error: 'Unauthorized' });
      }
    
    
      // Connection pool ile sorgu çalıştır
      pool.query('SELECT * FROM users', (err, result) => {
        if (err) throw err;
        res.json(result.rows);
      });
    });
    
    
    // Sunucuyu başlat
    const port = config.api.port;
    app.listen(port, () => {
      console.log(`Sunucu ${config.env} modunda ${port} portunda çalışıyor`);
    });
    
    Bu yapı ile:
    • Veritabanı bilgileri .env dosyasından gelir
    • API anahtarları ve diğer sırlar ortam değişkeni olarak yönetilir
    • Aynı kod, farklı .env dosyalarıyla dev, staging ve prod’da çalışır
    • Hiçbir hassas bilgi git deposuna girmez

    Ortam Değişkenleri İçin En İyi Pratikler

    1. Gerekli Değişkenleri Uygulama Başlangıcında Doğrulayın

    DB_PASSWORD eksik olduğu için runtime’da hata almak yerine, uygulama açılır açılmaz kontrol edin.
    require('dotenv').config();
    
    
    const required = ['DB_HOST', 'DB_USER', 'DB_PASSWORD', 'API_KEY'];
    const missing = required.filter(key => !process.env[key]);
    
    
    if (missing.length > 0) {
      throw new Error(`Eksik ortam değişkenleri: ${missing.join(', ')}`);
    }
    

    2. Merkezî Bir Config Nesnesi Kullanın

    Projenin her yerine process.env.XYZ yazmak yerine, tek bir konfigürasyon modülü oluşturun:
    // config.js
    require('dotenv').config();
    
    
    module.exports = {
      database: {
        host: process.env.DB_HOST,
        port: process.env.DB_PORT,
        user: process.env.DB_USER,
        password: process.env.DB_PASSWORD
      },
      api: {
        key: process.env.API_KEY,
        jwtSecret: process.env.JWT_SECRET
      },
      app: {
        port: process.env.PORT || 3000,
        environment: process.env.NODE_ENV || 'development'
      }
    };
    
    
    // Kullanım
    const config = require('./config');
    console.log(config.database.host);
    

    3. Farklı Ortamlar İçin Farklı .env Dosyaları

    .env           # Varsayılan / geliştirme
    .env.production # Üretime özel ayarlar
    .env.test       # Test ortamı
    
    Doğru dosyayı yükleyin:
    const envFile = process.env.NODE_ENV === 'production'
      ? '.env.production'
      : '.env';
    
    require('dotenv').config({ path: envFile });
    

    4. İlgili Değişkenleri Ön Eklerle Gruplayın

    Okunabilirliği artırmak için değişkenleri mantıksal gruplara ayırın:
    # Veritabanı
    DB_HOST=localhost
    DB_PORT=5432
    DB_USER=admin
    
    
    # Redis
    REDIS_HOST=localhost
    REDIS_PORT=6379
    
    
    # Üçüncü parti servisler
    STRIPE_API_KEY=sk_...
    SENDGRID_API_KEY=SG_...
    

    5. Her Değişkeni Belgelerle Açıklayın

    .env.example içinde yorum satırları ekleyin:
    # Veritabanı bağlantısı
    DB_HOST=localhost      # PostgreSQL sunucu adresi
    DB_PORT=5432           # PostgreSQL portu
    DB_USER=admin          # Veritabanı kullanıcı adı
    DB_PASSWORD=change_me  # Veritabanı şifresi
    
    
    # API ayarları
    API_KEY=change_me      # Üçüncü parti servis API anahtarı
    JWT_SECRET=change_me   # JWT imzalama için gizli anahtar
    
    
    # Uygulama
    PORT=3000              # Express sunucu portu
    NODE_ENV=development   # Ortam (development/staging/production)
    

    Üretimde Dotenv Yerine Ne Kullanılır?

    Geliştirme ve küçük projeler için dotenv fazlasıyla yeterli. Daha büyük sistemler ve kurumsal ortamlarda ise şu seçenekler öne çıkıyor:

    AWS Secrets Manager

    Gizli bilgileri AWS içinde tutar, uygulama çalışma anında çeker. Bulut ortamları için daha güvenli.

    HashiCorp Vault

    Kurumsal seviyede gizli yönetimi: rotasyon, loglama, detaylı yetkilendirme.

    CI/CD Ortam Değişkenleri

    GitHub Actions, GitLab CI, CircleCI gibi platformlar ortam değişkenlerini pipeline seviyesinde tanımlamanıza izin verir. Sunucuda ekstra .env dosyasına gerek kalmaz.

    Kubernetes Secrets

    Kubernetes kullanıyorsanız, yapılandırma ve gizli bilgileri Secrets ve ConfigMap üzerinden yönetebilirsiniz.
    Öğrenme ve Node.js’e giriş aşamasında, özellikle Archi’s Academy gibi içeriklerde, başlangıç için önerilen yaklaşım hâlâ dotenv’tir.

    Node.js’i Gerçek Anlamda Öğrenmek

    Ortam değişkenleri, üretim için hazır bir Node.js uygulamasının sadece bir parçası. Konfigürasyon, deploy ve operasyon tarafını anlamak, yalnızca “kod yazan” geliştiricilerden bir adım öne geçmenizi sağlar.
    → Node.js Temelleri – Ücretsiz Öğrenin →
    → Express.js ile API Geliştirin →
    Archi's Academy içindeki Backend Development track, sadece Node.js kodu yazmayı değil, aynı zamanda API’leri gerçek ortamlarda nasıl konfigüre edip ölçekleyeceğinizi de öğretir.
    Learn by Doing. Prove by Doing. Get Hired.
    → Backend Development Track’e Göz Atın →
    Screenshot from 2026-07-20 15-16-00.png

    Sonuç: Sırlar Kodda Değil, Ortamda Kalmalı

    Gizli bilgileri doğrudan kaynak koda yazmak ciddi bir güvenlik açığıdır. Ortam değişkenleri, hassas yapılandırmaları yönetmek için sektör standardıdır. Bu deseni erken öğrenirseniz, sızan şifreler yüzünden kriz yaşama ihtimaliniz dramatik şekilde düşer.
    Geliştirmede dotenv ile başlayın, deseni anlayın. Uygulamanız büyüdükçe, ihtiyaç oldukça gizli yönetimi için daha gelişmiş araçlara geçin.

    Ortam değişkenleri, Node.js konfigürasyonu veya backend en iyi pratikleri hakkında sorularınız mı var? Archi's Academy ekibi yardımcı olmaya hazır – istediğiniz zaman bizimle iletişime geçin.
    archis-trainee

    Abanseka Sylvester

    Pazartesi, Tem 20, 2026

    İçerikleri gerçek becerilere dönüştürmeye hazır mısın?

    Proje tabanlı eğitimle hemen başla, ilk günden itibaren uygulamalı deneyim kazan.

    TOC

    Table of Content

    • 01Ortam Değişkenleri Neden Bu Kadar Önemli?
    • 02Ortam Değişkenleri Aslında Nedir?
    • 03Neden Önemli?
    • 04Sorun: Değişkenleri Elle Ayarlamak Yorucu
    • 05Dotenv Kullanımı: En Kolay Yol
    • 06Adım 1: Dotenv’i Kurun
    • 07Adım 2: .env Dosyası Oluşturun
    • 08Adım 3: Uygulamada Değişkenleri Yükleyin
    • 09Adım 4: .env Dosyasını .gitignore’a Ekleyin
    • 10.gitignore
    • 11Adım 5: Şablon Dosyası Paylaşın (Sır Olmadan)
    • 12.env.example – Commit edilecek olan bu
    • 13Sonra .env içini gerçek değerlerle güncelleyin
    • 14Uygulamalı Örnek: Express API ve Ortam Değişkenleri
    • 15Ortam Değişkenleri İçin En İyi Pratikler
    • 161. Gerekli Değişkenleri Uygulama Başlangıcında Doğrulayın
    • 172. Merkezî Bir Config Nesnesi Kullanın
    • 183. Farklı Ortamlar İçin Farklı .env Dosyaları
    • 194. İlgili Değişkenleri Ön Eklerle Gruplayın
    • 20Veritabanı
    • 21Redis
    • 22Üçüncü parti servisler
    • 235. Her Değişkeni Belgelerle Açıklayın
    • 24Veritabanı bağlantısı
    • 25API ayarları
    • 26Uygulama
    • 27Üretimde Dotenv Yerine Ne Kullanılır?
    • 28AWS Secrets Manager
    • 29HashiCorp Vault
    • 30CI/CD Ortam Değişkenleri
    • 31Kubernetes Secrets
    • 32Node.js’i Gerçek Anlamda Öğrenmek
    • 33Sonuç: Sırlar Kodda Değil, Ortamda Kalmalı