2013-05-28 3 views
4

와 시스템 환경 변수를 얻을 수없는이 같은 장고 setting.py을 설정합니다. 웹 서버에 내장 된 django로 작업 할 때 모든 것이 정상이었습니다. 하지만 아파치와 wsgi로 작업하면서 KeyError가 발생했습니다."os.environ은"아파치와 WSGI

Cannot get environment variables in Django settings file에 따르면 문제가 해결됩니다. 하지만 왜 아파치가 시스템 환경 변수를 얻을 수 없습니까?

업데이트 : 환경 변수는 .bashrc에 설정되었습니다.

+0

어떻게 이러한 변수를 설정하고 있습니까? 아파치는 자신의 사용자로 실행된다는 것을 잊지 마십시오. –

+0

"올바르게 설정"되어 있다면, 아파치 설정에서'SetEnv' 지시어를 사용하면된다. IIRC, 아파치는 환경을 지운다. 그래서 당신은 당신이 필요로하는 환경 변수를 드러내기 위해 지시자를 가질 필요가있다. – jszakmeister

답변

7

"환경 변수는 .bashrc로 설정되었습니다."라고 말합니다. 아마도 .bashrc를 의미 할 것입니다. 아파치가 당신처럼 실행되지 않기 때문에 아파치 사용자로서 실행 중이다.

링크 된 바로 그 질문에서 언급 한 블로그 게시물에서 설명한대로 SetEnv 지시문을 통해 Apache 구성 파일 자체에서 환경 변수를 설정해야합니다.

+5

SetEnv 지시문만으로는 mod_wsgi에서 실행되는 WSGI 응용 프로그램에 프로세스 전체 환경 변수가 설정되지 않는다는 점을 제외하고는. 이는 WSGI 환경에서 WSGI 래퍼를 사용하여 모든 요청에 ​​대해 강제로 설정하기 때문에 작동했습니다. 이렇게하는 것은 실제로 나쁜 습관이고 잘못 알립니다. WSGI 스크립트 파일의 처음에 간단히 설정하여 WSGI 스크립트 파일을 처음로드 할 때 한 번만 설정하면됩니다. –

+0

Graham의 WSGI 스크립트 파일 시작 부분에 어떻게 설정합니까? –

+0

@GrahamDumpleton, 이것에 대해 궁금하신가요? 다양한 환경에서 여러 개의 wsgi.py 파일을 유지 관리하지 않으면 어떻게해야합니까? 감사. – tejinderss

0

settings.py에서 설정하는 환경은 해당 인스턴스의 환경 변수에만 적용되며 apache라고하는 시스템 환경 변수는 변경되지 않습니다.

+0

Windows에서 작업하는 경우 다음과 같이 사용자 별 시스템 환경을 설정할 수 있습니다. 'os.system ("setx key value")' – abhishekgarg

+0

.bashrc에 환경 변수가 설정되었습니다. –