2012-08-05 4 views
8

MYSQL_URL = mysql : // 같은 애플리케이션 변수를 환경 변수에 저장하려고합니다. 애플리케이션 프로세스를 관리하기 위해 supervisord를 사용합니다. 하위 프로세스가 시작되기 전에 환경 변수를로드하는 방법? 특히 이러한 설정이 변경되면 하위 프로세스를 다시 시작하면 새 설정이로드되기를 바랍니다.실행 전에 환경 변수로드하기

또한이 환경 변수를 저장할 위치가 궁금합니다. "$ (cat filename)"을 (를) 내보낼 수있는 파일입니까? 아니면 더 좋은 방법. Heroku가 환경 변수를 어떻게 관리하는지 궁금합니다.

답변

19
당신은 [ program:x] 섹션에 supervisord 구성에서 프로세스 별 환경 변수를 설정할 수 있습니다

는, 이러한 프로세스에 전달됩니다 이 시작할 때 : 당신이 사이에 쉼표를 사용할 필요가

[program:yourprocess] 
# ... other settings 
environment = 
    MYSQL_URL=mysql://, 
    OTHER_VAR="some other value" 

주 각 변수. 나는 위의 예에서도 줄 바꿈을 사용했으며, 선택 사항입니다. 환경 값에 공백이 있으면 값을 따옴표로 묶어야합니다.

모두 프로세스의 환경 변수는 동일한 형식을 사용하여 [supervisord] 섹션에 설정할 수 있습니다.

supervisord가 시작될 때 설정된 환경 변수는 supervisord가 관리하는 프로세스에도 전달됩니다. 자세한 내용은 documentation section on environment variables을 참조하십시오.

구성 파일에 구성된 환경 변수를 변경하면 그들이 이러한 변화 데리러, 구성을 다시로드하고 하위 프로세스를 다시 시작 supervisord에 신호를해야한다는 점에 유의 마십시오

supervisorctl update 
supervisorctl restart yourprocess 

하는 경우를 당신이 supervisord의 외부 환경 변수를 변경하지만, 당신은이를 데리러 supervisord 모두 함께 종료해야합니다 :

supervisorctl shutdown 
supervisord 
+3

패배 목적을 당신은 또한 버전 관리에서 관리자 설정 파일을 저장하는 경우 – Dustin

+1

@Dustin는 R입니다 ight. 이 문제를 해결할 방법이 있습니까? 파일을 포함하는 것일까? – surjikal

+0

@surjikal : buildout과 같은 도구로 설정 파일을 생성하십시오. –

0

the docs에 따르면 같은 environmont 변수로 설정 될 수있다 "supervisord.conf 전역 설정이있는 [supervisord라는 섹션을 할 수 있습니다." (링크 된 페이지에서 "환경"이라는 단어를 검색하십시오).

환경 변수도 set an a per-program basis 일 수 있습니다.

관련 문제