2013-05-06 26 views
11

/home/user/.bashrc (ve /etc/bash.bashrc dosyasında) tanımladığım Django ayarlarında bazı ortam değişkenlerini okuyabiliyorum. Ben bir KeyError istisnası var. Ortam değişkenlerim ayarlandığını biliyorum, çünkü bunları terminalde yazdırabilirim (echo $ VAR_NAME). Bu önemsiz olmalı.Django ayarları dosyasında ortam değişkenleri alınamıyor

Kullandığım kod budur.

from django.core.exceptions import ImproperlyConfigured 

msg = "Set the %s environment variable" 


def get_env_variable(var_name): 
    try: 
     return os.environ[var_name] 
    except KeyError: 
     error_msg = msg % var_name 
     raise ImproperlyConfigured(error_msg) 

OS_DB_USER = get_env_variable('MY_USER') 
OS_DB_PASS = get_env_variable('MY_PASS') 
OS_DB_DB = get_env_variable('MY_DB') 
OS_GAME_LOGS = get_env_variable('DIR_LOGS') 

Eksik olanı bulamıyorum. Orada herhangi bir öneri var mı?

Teşekkür

DÜZENLEME: mod_wsgi ile Apache üzerinde yayınlanıyor.

+0

Sunucuyu nasıl çalıştırıyorsunuz? – Rohan

+0

Projemi mod_wsgi ile Apache üzerinde çalıştırıyorum. – luistm

+0

Bunlar virtualhost dosyasında tanımlanmalı mıdır? – luistm

cevap

1

Son zamanlarda bu kendim nedenini buldum.

Apache/mod_wsgi altında çalışırken, uygulamanız farklı bir kullanıcının altında çalışır, bu nedenle bu ortam değişkenleri ayarlanmaz. Seçenekleriniz şunlardır:

  • apache gibi kod çalışır kullanıcı için ortam değişkenleri ayarlayın sanal ana config
  • Kullanım apache SetEnv yönergesi,
      veya
    1. sizin kullanıcı olarak wsgidaemon işlemini çalıştırmak için apache söyle .
  • +1

    İşlem ortamı değişkenleri için, bunlardan hiçbiri kesinlikle işe yaramaz. SetEnv yönergesi yalnızca istek başına WSGI ortam değişkenlerini ayarlar ve ortam değişkenlerini işlemez. Apache kullanıcısı ortamında bir şeyler ayarlamak, Apache'nin root olarak başlatılmasında ve temiz bir varsayılan ana bilgisayar ortamını miras aldığından yardımcı olmaz. Genel varsayılan ana bilgisayar ortamına şeyler eklemek istemezsiniz. Belirli bir kullanıcı olarak daemon modunun kullanılması, kullanıcılar giriş komut dosyaları hiçbir zaman yürütülmediğinden ve bu şekilde artık ortam değişkenlerinin bu şekilde alınabilmesi için yardımcı olmayacaktır. –

    +1

    Yapılacak en kolay şey, herhangi bir işlem ortamı değişkenini, yüklenen WSGI komut dosyasının bir yan etkisi olarak ayarlamaktır. –

    İlgili konular