Làm thế nào tôi có thể chạy giám sát mà không cần sử dụng root?


8

Tôi dường như gặp khó khăn khi tìm hiểu lý do tại sao giám sát viên sẽ không chạy như một người dùng không root. Nếu tôi khởi động nó với người dùng được đặt thành jason (pid 1000), tôi sẽ nhận được những điều sau trong tệp nhật ký:

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

... Sau đó, quá trình chết vì một lý do không rõ. Nếu tôi khởi động nó mà không có sudo (theo người dùng jason), tôi nhận được đầu ra tương tự:

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

... và nó vẫn không chạy. Nếu có bất kỳ trợ giúp nào, đây là tệp giám sát. Tôi đang sử dụng:

[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

... Và đây là 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

Bất cứ ai có thể giúp tôi tìm hiểu những gì đang xảy ra?


Bạn đã bao giờ đi đến tận cùng của điều này?
Thác Michael

Câu trả lời:


2

Hãy thử bình luận ra param này. Nếu bạn không chỉ định người dùng, nó sẽ chạy với cùng một id người dùng đã bắt đầu quá trình.

user=jason ; default user

1

Bản thân tôi rất mới đối với người giám sát nhưng tôi cũng đang cố gắng để nó hoạt động với cần tây. Hiện tại tôi rất vui vì giám sát viên đang chạy bằng root vì nó đang được chạy với một tập lệnh init.d, tâm trí.

Dù sao, hãy xem các tệp nhật ký và nhật ký lỗi cho giám sát . Cái gì trong đó? Trên Ubuntu 10.10 họ đang ở /var/log/supervisor/supervisord.log. Bạn có thể ngang hàng bằng cách sử dụng lệnh 'duy trì' trong giám sát.


1

Có lẽ hơi không liên quan nhưng hãy chắc chắn rằng bạn không phạm sai lầm giống như tôi đã làm. Tôi đã có một loạt các thư mục và tệp (tệp nhật ký) mà tôi đang cố gắng sử dụng như là root mà vô tình đã được sở hữu bởi root, do đó không thể tiếp tục giám sát là không root. Đã viết về nó ở đây

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.