ENBirlikte üretelim
← Argo Ajans

Kurumsal Yazılım

Env Dosyası Nedir ve Nasıl Kullanılır?

Mehmet Said Göksu ·

Env Dosyası Nedir ve Nasıl Kullanılır?

Kısa yanıt

Env dosyası (.env), API anahtarı, veritabanı şifresi ve benzer hassas ayarları kaynak koddan ayırıp satır satır KEY=değer biçiminde saklayan düz metin dosyasıdır; uygulama başlarken bu satırlar gerçek ortam değişkenlerine dönüşür. Doğru kullanıldığında kod hiç değişmeden geliştirme, test ve canlı ortam arasında farklı ayarlarla çalışabilir.

Env dosyası nedir ve ne işe yarar?

Her yazılım projesi, farklı ortamlarda farklı davranması gereken bir ayar kümesiyle çalışır: geliştirme bilgisayarınızdaki veritabanı adresi, canlı sunucudaki adresten farklıdır; test ortamındaki API anahtarı, gerçek müşteri verisine dokunan canlı anahtardan ayrı tutulmalıdır. Bu ayarları doğrudan kod içine yazmak hem güvenlik riski oluşturur hem de her ortam değişikliğinde kodu elden geçirmeyi gerektirir.

Env dosyası, tam olarak bu sorunu çözmek için ortaya çıkmıştır. Proje kök dizinine konan bu dosyada her satır bir anahtar ve değerden oluşur; uygulama başladığında bir kütüphane veya çalışma zamanının kendisi bu satırları okuyup işletim sisteminin ortam değişkenlerine aktarır. Kod, değerin dosyadan mı yoksa sunucunun kendi ayarlarından mı geldiğini bilmek zorunda değildir; sadece process.env.DATABASE_URL gibi bir ifadeyle değişkeni okur.

.env dosyasının biçimi nasıldır?

Biçim kasıtlı olarak çok basit tutulmuştur. Her satır ANAHTAR=değer şeklindedir, boşluk içermeyen anahtarlar büyük harfle ve alt çizgiyle yazılır, # ile başlayan satırlar yorum sayılır:

DATABASE_URL=postgres://kullanici:sifre@localhost:5432/argo
API_KEY=sk_live_ornek_anahtar
DEBUG=false
# Bu satır bir yorumdur

Değerde boşluk veya özel karakter varsa tırnak içine alınması önerilir. Dosyanın kendisi herhangi bir programlama dilinin parçası değildir; yalnızca bir anahtar-değer listesidir, bu yüzden hangi dilde yazılmış bir projede olursa olsun aynı mantıkla okunabilir.

Ortam değişkenleri ile env dosyası arasındaki fark nedir?

Ortam değişkeni (environment variable), bir işletim sisteminin veya çalışma zamanı sürecinin bellekte tuttuğu geçici bir anahtar-değer çiftidir; terminalden export API_KEY=xyz yazarak da tanımlanabilir. Env dosyası ise bu değişkenleri kalıcı bir dosyada toplayıp her seferinde elle tanımlama zahmetinden kurtaran bir kolaylık katmanıdır.

İki kavram birbirine karıştırılabilir çünkü sonuçta aynı yere ulaşırlar: dosyadaki her satır, işlem başladığında gerçek bir ortam değişkenine dönüşür. Aradaki fark kalıcılıktadır; ortam değişkeni süreç kapandığında (bazı durumlarda terminal oturumu kapandığında) kaybolur, env dosyası ise diskte kalır ve her çalıştırmada aynı değerleri yeniden sağlar.

Node.js, Python ve PHP projelerinde env dosyası nasıl okunur?

Node.js tarafında geleneksel yöntem dotenv paketini kurup kodun en başında require('dotenv').config() çağırmaktır; güncel sürümler ek paket gerektirmeden node --env-file=.env uygulama.js bayrağını da destekler. Python’da en yaygın araç python-dotenv kütüphanesidir ve load_dotenv() fonksiyonuyla dosyayı okuyup os.environ içine yazar. PHP tarafında Symfony’nin Dotenv bileşeni veya Laravel’in kendi env() yardımcı fonksiyonu aynı işi görür.

Üç yaklaşımın ortak noktası, dosyanın yalnızca geliştirme ve orkestrasyon kolaylığı için bir araç olmasıdır; gerçek üretim sunucusunda çoğu ekip ortam değişkenlerini hosting panelinden veya konteyner orkestrasyon aracından doğrudan tanımlar, env dosyasını hiç devreye sokmadan. Bu tercih, dosyayı her istekte yeniden ayrıştırmanın getirdiği küçük performans yükünü de ortadan kaldırır.

.env dosyası neden Git’e eklenmemeli?

Git, her commit’i kalıcı olarak saklayan bir sürüm kontrol sistemidir; bir dosyayı bir kez commit ettiğinizde, sonradan silseniz bile eski sürümü geçmişte durmaya devam eder. Env dosyası API anahtarı, veritabanı şifresi gibi değerler içerdiğinden, depoya bir kez girmesi o sırrın kalıcı olarak sızdığı anlamına gelir; özellikle depo herkese açıksa otomatik tarayıcı botlar dakikalar içinde tanıdık anahtar kalıplarını bulup bildirime geçer.

Bu riskin çözümü basittir: projenin .gitignore dosyasına .env satırını eklemek, dosyayı Git’in takip ettiği dosyalar listesinin tamamen dışında tutar. Ekip arkadaşlarınızın hangi değişkenleri tanımlaması gerektiğini kaybetmemek için gerçek değerler olmadan, yalnızca anahtar adlarını gösteren bir .env.example dosyasını depoya eklemek yaygın bir alışkanlıktır.

Birden fazla ortam için env dosyası nasıl yönetilir?

Küçük bir projede tek bir .env dosyası yeterli görünebilir, ama geliştirme, test ve canlı ortamın aynı anda farklı ayarlara ihtiyacı olduğunda bu tek dosya çabucak karışır. Yaygın çözüm, her ortam için ayrı bir dosya tutmaktır: .env.development, .env.test, .env.production gibi isimlendirmeler, hangi dosyanın hangi bağlamda kullanıldığını satır satır tahmin etmeden anlamayı sağlar.

Dağıtım sürecinde doğru dosyanın yüklendiğini doğrulamak kritik bir adımdır; yanlış dosyanın yüklenmesi, test ortamının yanlışlıkla canlı veritabanına bağlanması gibi ciddi sonuçlar doğurabilir. Dağıtım betiğine veya CI/CD hattına, hangi ortam için hangi dosyanın kopyalanacağını açıkça yazan bir kontrol eklemek, bu tür bir karışıklığı pratikte önler.

Docker ve env dosyaları nasıl birlikte çalışır?

Docker Compose kullanan projelerde .env dosyası, konteynerin içindeki süreci doğrudan etkilemez; compose dosyasındaki ${DEĞİŞKEN} ifadelerini doldurmak için okunur. Bu ayrım sık karıştırılan bir noktadır: bir değişkeni .env dosyasına eklemek, konteyner içindeki uygulamanın onu otomatik olarak göreceği anlamına gelmez, compose dosyasında environment: bölümüne de açıkça aktarılması gerekir. Docker’ın konteyner mantığını baştan ele aldığımız Docker nedir rehberimizde bu akışı daha ayrıntılı bulabilirsiniz.

Env dosyasını yanlışlıkla paylaştıysanız ne yapmalısınız?

Bir env dosyasını yanlışlıkla GitHub’a commit ettiğinizi fark ettiğinizde ilk tepkiniz dosyayı silmek olmamalı, çünkü bu yalnızca görünürlüğü kapatır, geçmişi temizlemez. Doğru sıra şudur: önce dosyadaki her anahtarı ilgili servis sağlayıcıdan iptal edip yenisini üretmek, sonra git-filter-repo gibi bir araçla geçmişi gerçekten temizlemek. Bu süreci adım adım ele aldığımız GitHub API anahtarı sızıntısı rehberimizde hangi komutların çalıştırılacağını ve ekip içinde nasıl haberleşileceğini bulabilirsiniz.

Env dosyası kullanırken sık yapılan hatalar

Env dosyası nedir ve nasıl kullanılır sorusunu doğru yanıtlamak, sahada hâlâ sık tekrarlanan bazı pratik hataları kendiliğinden önlemez; bu hataların çoğu teknik bilgi eksikliğinden değil, kurulum sırasında atlanan küçük bir adımdan kaynaklanır. En sık görülen hata, dosyayı projeye eklerken .gitignore güncellemesini unutmaktır; bu özellikle projeye sonradan katılan geliştiricilerin kendi .env dosyalarını oluşturup yanlışlıkla depoya eklemesiyle ortaya çıkar. İkinci yaygın hata, aynı anahtar adının birden fazla dosyada farklı değerlerle tanımlanıp hangisinin öncelikli olduğunun unutulmasıdır; çoğu kütüphane ve çalışma zamanı, zaten tanımlı bir ortam değişkeninin üzerine env dosyasındaki değeri yazmaz, bu öncelik sırasını bilmemek saatlerce sürecek bir hata ayıklamaya dönüşebilir.

Üçüncü hata, env dosyasını gerçek bir sır yönetim çözümünün yerine koymaktır. Dosya disk üzerinde düz metin olarak durur ve sunucuya erişimi olan herkes tarafından okunabilir; kurumsal ölçekte gerçekten kritik sırlar için bulut sağlayıcısının sır yöneticisi veya bir kasa (vault) servisi tercih edilmeli, env dosyası yalnızca yerel geliştirme kolaylığı olarak kalmalıdır.

Sonraki adım

Env dosyası, projenizi her ortamda koda dokunmadan çalıştırmanın basit ve pratik bir yoludur; asıl dikkat edilmesi gereken nokta, bu kolaylığın güvenlik disiplinini ortadan kaldırmamasıdır. .gitignore kuralını baştan kurmak, ortamlara göre dosyaları ayırmak ve kritik sırları gerçek bir sır yöneticisine taşımak, küçük bir ekip için bile zaman kazandıran alışkanlıklardır; ekibe yeni katılan bir geliştiricinin ilk günü bu üç adımı tek bir kurulum belgesinde bulması, aynı hatanın ikinci kez yaşanmasını da önler. Node.js’in resmî belgelerinde --env-file bayrağının ve process.env nesnesinin nasıl çalıştığına dair ayrıntılı bir anlatım bulunur; teknik referans için Node.js’in ortam değişkenleri rehberine göz atabilirsiniz.

Projenizin yapılandırma ve sır yönetimi mimarisini uçtan uca gözden geçirmek isterseniz grup şirketimiz Web Tasarım Ofisi özel yazılım projelerinde bu konuda da destek veriyor. Kurumsal yazılım ihtiyaçlarınızı birlikte değerlendirmek için özel yazılım hizmetimizi inceleyebilir ya da bizimle iletişime geçebilirsiniz.

Sıkça sorulan sorular

Env dosyası nedir, ortam değişkeninden farkı ne?

Ortam değişkeni, işletim sisteminin veya çalışma zamanının bellekte tuttuğu bir anahtar değer çiftidir; env dosyası ise bu değişkenleri bir araya getirip kodun dışında saklayan düz metin dosyasıdır. Uygulama başlarken dosya okunur ve içindeki satırlar gerçek ortam değişkenlerine dönüştürülür.

Env dosyasını Git’e eklemeli miyim?

Hayır. Env dosyası genellikle API anahtarı veya veritabanı şifresi gibi gizli bilgiler içerir ve .gitignore dosyasına eklenerek sürüm kontrolünün dışında tutulmalıdır. Ekip arkadaşlarınıza hangi değişkenlerin tanımlanması gerektiğini göstermek için değersiz bir .env.example dosyası paylaşabilirsiniz.

Env dosyasındaki bilgiler ne kadar güvenlidir?

Tek başına yeterince güvenli sayılmaz; sunucuya veya konteynere erişimi olan herkes dosyayı okuyabilir. Üretimde gerçekten kritik sırlar için özel bir sır yönetim servisi kullanmak, env dosyasını yalnızca geliştirme kolaylığı için tercih etmek daha sağlam bir yaklaşımdır.

Development ve production için ayrı env dosyası nasıl yönetilir?

Her ortam için ayrı bir dosya tutmak (.env.development, .env.production gibi) ve dağıtım sırasında doğru dosyanın yüklendiğini doğrulamak yaygın bir yöntemdir. Dosya adlarını ortam isimleriyle açıkça eşleştirmek, hangi sunucuda hangi dosyanın çalıştığı konusunda karışıklığı önler.

Env dosyasını yanlışlıkla GitHub’a yüklediysem ne yapmalıyım?

Dosyayı silen yeni bir commit yeterli değildir, çünkü eski sürüm geçmişte kalır. İçindeki her anahtarı servis sağlayıcıdan derhal iptal edip yenisini üretmeniz, ardından geçmişi temizlemeniz gerekir; adımları GitHub API anahtarı sızıntısı rehberimizde bulabilirsiniz.

Bu konuda yardım mı lazım?

Özel Yazılım

Hizmeti inceleyinHemen iletişime geçin
İyi işler, iyi bir konuşmayla başlar.

Birlikte
iz bırakalım.

İzmir ofis
Tariş Cd. (1497. Sok.) No. 5C Ofis P22
35230 Alsancak, İzmir, Türkiye
Birleşik Krallık ofis
167 Sheen Lane
SW14 8NA London, United Kingdom
Kayseri ofis
Sahabiye Mh. Buyurkan Sok. No.29
38015 Kocasinan, Kayseri, Türkiye
Projenizi bize anlatın