簡體   English   中英

celery守護程序-拒絕日志文件權限

[英]celery daemon - permission denied on log file

我一直在將celery任務設置為守護程序,以便按計划處理數據。

我一直在關注文檔以設置我的守護程序,但是一直遇到一個日志文件權限錯誤,這讓我感到困惑。

以下是我在Digital Ocean的ubuntu盒上設置的配置

/ etc / default / celeryd

# here we have a single node
CELERYD_NODES="w1"

CELERY_BIN = "/mix_daemon/venv/bin/celery"
CELERYD_CHDIR="/mix_daemon/"

CELERYD_OPTS="-A tasks worker --loglevel=info --beat"

# %n will be replaced with the nodename.
CELERYD_LOG_FILE="/var/log/celery/%n.log"
CELERYD_PID_FILE="/var/run/celery/%n.pid"
CELERY_CREATE_RUNDIR=0
CELERY_CREATE_LOGDIR=0

# Workers should run as an unprivileged user.
CELERYD_USER="celery"
CELERYD_GROUP="celery"

但是,當我跑步時

sh -x /etc/init.d/celeryd start

我收到以下錯誤消息:

celery multi v3.1.7 (Cipater)
> Starting nodes...
> celery@mix: OK
Traceback (most recent call last):
File "/usr/lib/python2.7/runpy.py", line 162, in _run_module_as_main
"__main__", fname, loader, pkg_name)
File "/usr/lib/python2.7/runpy.py", line 72, in _run_code
exec code in run_globals
File "/home/john/mix_daemon/venv/lib/python2.7/site-packages/celery/bin/celeryd_detach.py", line 168, in <module> main()
File "/home/john/mix_daemon/venv/lib/python2.7/site-packages/celery/bin/celeryd_detach.py", line 165, in main
detached_celeryd(app).execute_from_commandline()
File "/home/john/mix_daemon/venv/lib/python2.7/site-packages/celery/bin/celeryd_detach.py", line 160, in execute_from_commandline
**vars(options)
File "/home/john/mix_daemon/venv/lib/python2.7/site-packages/celery/bin/celeryd_detach.py", line 42, in detach
with detached(logfile, pidfile, uid, gid, umask, working_directory, fake):
File "/home/john/mix_daemon/venv/local/lib/python2.7/site-packages/celery/platforms.py", line 314, in open
self.after_chdir()
File "/home/john/mix_daemon/venv/local/lib/python2.7/site-packages/celery/platforms.py", line 384, in after_chdir_do
logfile and open(logfile, 'a').close()
IOError: [Errno 13] Permission denied: '/var/log/celery/celery.log'
+ sleep 5
+ exit 0

我查找了此錯誤消息,並從redmine項目中看到了這個答案 因此,我嘗試了以下嘗試以允許芹菜工作者寫入日志文件:

$ sudo mkdir -p -m 2755 /var/log/celery
$ sudo chown celery:celery /var/log/celery

但是當我嘗試啟動守護程序時仍然存在相同的錯誤。

我是一個芹菜菜鳥,對此的任何幫助將不勝感激!

它幫助到我:

sudo chown -R myuser:root /var/run/celery/
sudo chown -R myuser:root /var/log/celery/

根據文檔:

初始化腳本只能由root使用,並且shell配置文件也必須歸root所有”

因此,您需要運行:

sudo chown root:root /etc/default/celeryd

sudo /etc/init.d/celeryd start

順便說一下,您的celeryd配置文件中的語法無效:

CELERY_BIN = "/mix_daemon/venv/bin/celery"

“ =”運算符不允許使用空格,正確的是:

CELERY_BIN="/mix_daemon/venv/bin/celery"

還要檢查一下,是否在/ mix_daemon中有bin,而不是/ home // mix_daemon

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM