Come posso eseguire supervisord senza usare la root?

Mi sembra di avere problemi a capire perché supervisord non verrà eseguito come utente non-root. Se l'avvio con l'utente impostato a jason (pid 1000), ho il seguente nel file di registro:

2010-05-24 08:53:32,143 CRIT Set uid to user 1000 2010-05-24 08:53:32,143 WARN Included extra file "/home/jason/src/tsched/celeryd.conf" during parsing 2010-05-24 08:53:32,189 INFO RPC interface 'supervisor' initialized 2010-05-24 08:53:32,189 WARN cElementTree not installed, using slower XML parser for XML-RPC 2010-05-24 08:53:32,189 CRIT Server 'unix_http_server' running without any HTTP authentication checking 2010-05-24 08:53:32,190 INFO daemonizing the supervisord process 2010-05-24 08:53:32,191 INFO supervisord started with pid 3444 

… poi il process muore per qualche motivo sconosciuto. Se l'avvio senza sudo (sotto l'utente jason), ottengo l'output simile:

 2010-05-24 08:51:32,859 INFO supervisord started with pid 3306 2010-05-24 08:52:15,761 CRIT Can't drop privilege as nonroot user 2010-05-24 08:52:15,761 WARN Included extra file "/home/jason/src/tsched/celeryd.conf" during parsing 2010-05-24 08:52:15,807 INFO RPC interface 'supervisor' initialized 2010-05-24 08:52:15,807 WARN cElementTree not installed, using slower XML parser for XML-RPC 2010-05-24 08:52:15,807 CRIT Server 'unix_http_server' running without any HTTP authentication checking 2010-05-24 08:52:15,808 INFO daemonizing the supervisord process 2010-05-24 08:52:15,809 INFO supervisord started with pid 3397 

… e non funziona ancora. Se c'è qualche aiuto, ecco il file supervisord.conf che sto utilizzando:

 [unix_http_server] file=/tmp/supervisor.sock ; path to your socket file [supervisord] logfile=./supervisord.log ; supervisord log file logfile_maxbytes=50MB ; maximum size of logfile before rotation logfile_backups=10 ; number of backed up logfiles loglevel=debug ; info, debug, warn, trace pidfile=./supervisord.pid ; pidfile location nodaemon=false ; run supervisord as a daemon minfds=1024 ; number of startup file descriptors minprocs=200 ; number of process descriptors user=jason ; default user childlogdir=./supervisord/ ; where child log files will live [rpcinterface:supervisor] supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface [supervisorctl] serverurl=unix:///tmp/supervisor.sock ; use unix:// schem for a unix sockets. [include] # Uncomment this line for celeryd for Python files=celeryd.conf # Uncomment this line for celeryd for Django. ;files=django/celeryd.conf 

… e qui è celeryd.conf:

 [program:celery] command=bin/celeryd --loglevel=INFO --logfile=./celeryd.log environment=PYTHONPATH='./tsched_worker', JIVA_DB_PLATFORM='oracle', ORACLE_HOME='/usr/lib/oracle/xe/app/oracle/product/10.2.0/server', LD_LIBRARY_PATH='/usr/lib/oracle/xe/app/oracle/product/10.2.0/server/lib', TNS_ADMIN='/home/jason', CELERY_CONFIG_MODULE='tsched_worker.celeryconfig' directory=. user=jason numprocs=1 stdout_logfile=/var/log/celeryd.log stderr_logfile=/var/log/celeryd.log autostart=true autorestart=true startsecs=10 ; Need to wait for currently executing tasks to finish at shutdown. ; Increase this if you have very long running tasks. stopwaitsecs = 600 ; if rabbitmq is supervised, set its priority higher ; so it starts first priority=998 

Qualcuno può aiutarmi a capire cosa sta succedendo?

  • Ubuntu - Supervisord e virtualenv
  • supervisord: Non avviare un programma prima che un altro sia in esecuzione
  • Perché utilizzare `bash -c` in supervisore invece di call direttamente il script?
  • Ottimizzare il numero di lavoratori per diverse istanze di gunicorn
  • Il process supervisore esce con 'exit status 1; inatteso'
  • Come posso controllare contemporaneamente un gruppo Supervisore?
  • Supervisord: come aggiungere a $ PATH
  • Imansible utilizzare supervisorctl all'esterno della directory / etc / supervisor
  • 3 Solutions collect form web for “Come posso eseguire supervisord senza usare la root?”

    Prova a commentare questo parametro. Se non si specifica un utente, dovrebbe essere eseguito con lo stesso ID utente che ha avviato il process.

     user=jason ; default user 

    Sono molto nuovo al supervisore ma sto anche cercando di farlo funzionare con il celeryd. Per ora sono felice che supervisord sia in esecuzione come root in quanto viene eseguito con uno script init.d, la mente.

    Ad each modo, guarda i file di log e di log degli errori per supervisord . Cosa c'è? Su Ubuntu 10.10 sono in /var/log/supervisor/supervisord.log . Puoi fare il peer all'uso del command 'maintail' in supervisorctl.

    Forse un po 'indipendente ma assicuratevi di non fare lo stesso errore come ho fatto. Ho avuto un sacco di directory e file (file di log) che stavo cercando di utilizzare come non root che era accidentalmente già posseduto dalla radice, rendendo così imansible continuare come supervisord come non root. Ci ha blogato qui

    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.