2015-04-21 13 views
8

Ben buradaÇevreye özgü değerler bir Laravel 5 uygulamasında nereye kaydedilir?

laravel 5. yapılandırmayı yapmanın .env şekilde kafamı sarmak için çalışıyorum benim hikayem: Ben şu anda farklı ortamlarda var laravel 5. varolan bir laravel 4 uygulamasını (local dönüştürme ediyorum ve production) ve basamaklı yapılandırma sistemi güzel çalışıyor. Ortamıma özgü uygulama yapılandırmamın app/config altında ayrı klasörlerde var.

Uygulamam şu anda bir Docker kabında konuşlandırıldı (ve geliştirildi). Dağıtım için oluşturmak için uygulama resmimi oluşturmak için bir Dockerfile kullanıyorum (master şubeme bağlı olarak), daha sonra bir depoya aktarılır ve üretim sunucusuna çekilir.

Şimdi Laravel 5 için yapılandırmamı değiştirmeye çalışıyorum ve biraz kafam karıştı. Okuduğum her şey, .env dosyalarınızı .gitignore dosyasına ekleyeceğinizi ve bu nedenle deponuzda bulunmadığını söylüyor. Bunun güvenlik nedenlerini anlıyorum - veri havuzunuza ne pahasına olursa olsun hassas API anahtarları/şifreler vermeyin. Ancak, üretimin .env dosyamın, depo bölümünün bir parçası değilse, yapı adımımda yer aldığından nasıl emin olacağımı bilmiyorum.

Ürettiğim fikir, geliştirme ortamımın dışındaki dosya sistemimde bir yerdeki üretimimi .env dosyaya yerleştirmek ve gerektiğinde kopyalamaktı.

Bunu yönetmek için "en iyi uygulama" mı? Diğerleri bunu nasıl yapıyor?

Teşekkürler!

+0

AFAIK, dosyayı doğrudan sunucuya kopyalamak istediğiniz anlamına gelir. Sunucumun içine SSHing oldum ve env dosyasını yeni değişiklikleri/gereksinimleri yansıtacak şekilde güncelledim. –

+0

@JamesSpence Evet, ben de öyle düşündüm, ama benim inşa/konuşlandırma adımı biraz farklı - Docker görüntüsünü oluşturmak, dağıtmak, SEN'i sunucuya bağlamak, Docker kapsayıcısını girmek ve kopyalamak kolay ya da kolay değil dosya. Bu yüzden Docker'la bunu yaptığımı söylemekten önemli olduğunu düşündüm. – Kryten

+0

Daha önce hiç Docker kullanmamıştım, ama dosyaları bu ortama kopyalayabileceğinizi düşünüyorum, doğru mu?Repo'yu çekmek ve ilerlemek kadar basit olmayabilir, ama sadece bir adım daha. Env dosyalarımı dağıtmak için yapmam gereken şey bu. –

cevap

2

.env dosyası, yapılandırma dosyalarındaki env ('değişken') kullanılarak uygulanacak değişkenleri içerecektir. En iyi uygulama, yapılandırma dosyalarında ortamdan bağımsız (yani hem üretim hem de geliştirme üzerinde çalışacak olan) ve herhangi bir ortam bağımlı değişkenini .env dosyasında

Örnek olarak belirleyecektir. Örnek: dev ve aşamalandırma Sunucu gmail smtp kullanarak e-posta gönderecek, ancak üretim sunucusunda kendi smtp sunucunuzu kullanacaksınız.

yapılandırma dosyası: dev üzerine

return [ 
    'driver' => 'smtp', 
    'host' => env('MAIL_HOST'), 
    'port' => env('MAIL_PORT'), 
    'from' => ['address' => env('MAIL_FROM_EMAIL'), 'name' => env('MAIL_FROM_NAME')], 
    'encryption' => 'tls', 
    'username' => env('MAIL_USERNAME'), 
    'password' => env('MAIL_PASSWORD'), 
    'sendmail' => '/usr/sbin/sendmail -bs', 
    'pretend' => false 
]; 

.env ve

MAIL_HOST=smtp.domain.com 
MAIL_PORT=587 
[email protected] 
[email protected] 
[email protected] 
MAIL_PASSWORD=password 

üretim

üzerinde

MAIL_HOST=smtp.gmail.com 
MAIL_PORT=587 
[email protected] 
[email protected] 
[email protected] 
MAIL_PASSWORD=password 

.env evreleme asla dahil aşağıdaki gibi Basitçe e-posta yapılandırmasını ayarlayın. senin git repo üzerindeki env dosyası. Bunun yerine bir kopyasını yapın ve ".env.sample" olarak adlandırın ve bunu ekleyin. Bu yüzden, dev ekibiniz repo klonlandıktan sonra kendi .env dosyasını ayarlayabilir. Repo'ya eklemesini engellemek için .env'e.