2012-01-27 5 views
7

Ho alcune attività periodiche che eseguo con il sedano (demonizzato da supervisord), ma dopo aver provato a creare una directory nella directory home per l'utente che ho configurato per il processo supervisore, ho ottenuto un errore "permesso negato". Dopo aver esaminato la dicitura os.environ in un'attività di sedici in esecuzione, ho notato che la variabile USER è impostata su "root" e non sull'utente che ho configurato nella configurazione di supervisord per il sedano.Utente errato per supervisor'd celeryd

Questo è ciò che il mio /usr/local/etc/supervisord.conf assomiglia:

[unix_http_server] 
file=/tmp/supervisor.sock 
chmod=0777 

[supervisord] 
logfile=/var/log/supervisord.log 
pidfile=/var/run/supervisord.pid 

[rpcinterface:supervisor] 
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface 

[supervisorctl] 
serverurl=unix:///tmp/supervisor.sock 

[program:celery] 
command=/home/<USER>/.virtualenvs/sync/bin/celeryd --beat --loglevel=INFO 
environment=PYTHONPATH=/home/<USER>/apps/sync 
directory=/home/<USER>/apps/sync 
user=<USER> 
numprocs=1 
stdout_logfile=/var/log/celeryd.log 
stderr_logfile=/var/log/celeryd.log 
autostart=true 
autorestart=true 
startsecs=10 
stopwaitsecs = 30 

cosa potrebbe causare questo? Qualsiasi aiuto sarebbe super apprezzato!

risposta

9

Credo che questo sia causato dal fatto che non sono state impostate le variabili di ambiente HOME e USER. Ciò è necessario quando si utilizza l'opzione "user =" se il sottoprocesso si basa su quelli impostati.

Dopo documentazione supervisord su Subprocess Environment:

No guscio viene eseguito da supervisord quando viene eseguito un sottoprocesso, quindi le variabili di ambiente, come USER, PATH, HOME, SHELL, LOGNAME, ecc non vengono modificati dalla loro predefiniti o in altro modo riassegnati

Quindi, forse, provare:

environment=USER=<USER>,HOME=/home/<USER>,PYTHONPATH=/home/<USER>/apps/sync