2012-05-18 6 views
3

http://docs.dotcloud.com/guides/daemons/ 상태 : 그러나dotcloud supervisord.conf 파일 환경 사양

Configuring The Environment 
You can easily modify the environment of execution of your daemon with the “directory” and “environment” directives to change the directory where the command is executed and to define additional environment variable. For example: 

[program:daemonname] 
command = php my_daemon.php 
directory = /home/dotcloud/current/ 
environment = QUEUE=*, VERBOSE=TRUE 

, 나는 내 PYTHONPATH 환경 변수가 설정되지 않는 찾는거야 :

dotcloud.yml :

www: 
    type: python 
db: 
    type: postgresql 
worker: 
    type: python-worker 

supervisord.conf :

[program:apnsd] 
command=/home/dotcloud/current/printenv.py 
environment=PYTHONPATH=/home/dotcloud/current/apnsd/ 

printenv.py

#! /home/dotcloud/env/bin/python 
import os 
print "ENVIRONMENT" 
print os.environ 

로그 :

ENVIRONMENT 
    {'SUPERVISOR_ENABLED': '1', 'SUPERVISOR_SERVER_URL': 'unix:///var/dotcloud/super 
    visor.sock', 'VERBOSE': 'no', 'UPSTART_INSTANCE': '', 'PYTHONPATH': '/', 'PREVLE 
    VEL': 'N', 'UPSTART_EVENTS': 'runlevel', '/': '/', 'SUPERVISOR_PROCESS_NAME': 'a 
    pnsd', 'UPSTART_JOB': 'rc', 'PWD': '/', 'SUPERVISOR_GROUP_NAME': 'apnsd', 'RUNLE 
    VEL': '2', 'PATH': '/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin 
    ', 'runlevel': '2', 'previous': 'N'} 

수정 된 파이썬 변수를 표시하지 않습니다!

답변

3

Supervisor에 버그가 있습니다. 일부 변수 (예 : / 포함)는 따옴표를 붙여야합니다. 이 경우

, 당신이 필요합니다

[program:apnsd] 
command=/home/dotcloud/current/printenv.py 
environment= PYTHONPATH="/home/dotcloud/current/apnsd/" 

이 (= PYTHONPATH의 공간은 약간 더 읽을 파일을 만들기 위해 단지, 필수 아닌

을, PYTHONPATH의 값 주위에 따옴표, 그러나 필요합니다!)

이 문제를 언급하기 위해 dotCloud의 설명서를 업데이트 할 예정입니다.

+1

감사합니다. 디렉토리 변수를 인용하면 Supervisor가 ENOENT 오류로 종료된다는 것을 발견했습니다. "/ home/dotcloud/current/apnsd": ENOENT로 chdir 할 수 없습니다. 그래서 이것도 관련 될 수 있습니다. 이제 다른 문제가 있지만 다른 게시물에 대한 주제입니다. – Taras