Node.js dağıtım ayarları/konfigürasyon dosyaları nasıl saklanır?
Birkaç Node uygulaması üzerinde çalışıyorum ve dağıtımla ilgili ayarları saklamak için iyi bir model arıyordum. Django dünyasında (geldiğim yer), yaygın uygulama standart ayarları (zaman dilimi, vb.) içeren bir settings.py
dosyasına ve ardından dağıtıma özgü ayarlar için bir local_settings.py
dosyasına sahip olmaktır, yani hangi veritabanıyla konuşulacağı, hangi memcache soketi, yöneticiler için e-posta adresi vb.
Node için benzer modeller arıyordum. Sadece bir yapılandırma dosyası iyi olurdu, böylece app.js
içindeki diğer her şeyle birlikte sıkışmak zorunda kalmazdı, ancak kaynak kontrolünde olmayan bir dosyada sunucuya özgü yapılandırmaya sahip olmanın bir yolunu önemli buluyorum. Aynı uygulama çılgınca farklı ayarlarla farklı sunuculara dağıtılabilir ve birleştirme çakışmaları ve tüm bunlarla uğraşmak zorunda kalmak benim eğlence anlayışım değil.
Peki bunun için bir tür çerçeve/araç var mı, yoksa herkes kendi başına bir şeyler mi yapıyor?
Paketlerim için bir
package.json
ve yapılandırmam için birconfig.js
kullanıyorum, bu da şöyle görünüyor:Yapılandırmayı projemden yüklüyorum:
ve sonra
config.db_host
,config.db_port
, vb. üzerinden işlerime erişebilirim. Bu, şifreleri kaynak kontrolünde saklamak istemiyorsam, kodlanmış parametreleri veya çevresel değişkenlerde depolanan parametreleri kullanmamı sağlar.Ayrıca bir
package.json
oluşturuyorum ve bir bağımlılıklar bölümü ekliyorum:Projeyi yerel makineme klonladığımda, paketleri yüklemek için
npm install
çalıştırıyorum. Bu konuda daha fazla bilgi burada.Proje GitHub'da saklanıyor ve üretim sunucum için uzaktan kumandalar eklenmiş durumda.
Çok sonraları, yapılandırmayı yönetmek için oldukça iyi bir Node.js modülü buldum: nconf.
Basit bir örnek:
Ayrıca ayarları Redis'te depolamayı, yapılandırma dosyalarını yazmayı destekler ve oldukça sağlam bir API'ye sahiptir ve ayrıca Flatiron çerçeve girişiminin bir parçası olarak daha saygın Node.js mağazalarından biri olan Nodejitsu tarafından desteklenmektedir, bu nedenle oldukça geleceğe dönük olmalıdır.
Github'da nconf]nconf'a göz atın.
Ayrıca $HOST ve __$NODE_ENV__ değişkenine bağlı olarak yapılandırma dosyasını yükleyen node-config adresine de bakabilirsiniz (biraz RoR gibi) : documentation.
Bu, farklı dağıtım ayarları (
geliştirme
,test
veyaüretim
) için oldukça yararlı olabilir.