Ubuntu16.04下Django生产环境执行supervisorctl reread报CANT_REREAD错误求助
解决Supervisor reread时提示日志目录不存在的问题
这个报错其实已经把问题点得明明白白啦——Supervisor在处理你的app-celery.conf配置文件时,找不到你指定的日志目录/home/app/logs/,所以没法创建celery.log文件。咱们按下面的步骤来修复:
步骤1:确认目录是否真的不存在
先在终端执行命令检查目录状态:
ls -ld /home/app/logs/
如果返回类似ls: cannot access '/home/app/logs/': No such file or directory的结果,说明这个目录确实没有创建。
步骤2:创建缺失的日志目录
用mkdir -p命令创建目录,-p参数会自动创建路径中不存在的父目录(比如如果/home/app也不存在的话):
sudo mkdir -p /home/app/logs/
步骤3:调整目录权限(关键!)
Supervisor运行Celery进程的用户需要对这个日志目录有读写权限,不然即使目录存在,后续写日志还是会报错。
- 如果你的Celery是用
app用户运行的,执行:sudo chown app:app /home/app/logs/ - 如果是和Web服务共用
www-data用户,就改成:sudo chown www-data:www-data /home/app/logs/ - 也可以先设置通用的读写权限确保没问题:
sudo chmod 755 /home/app/logs/
步骤4:重新执行Supervisor命令
现在回到教程的步骤,重新执行:
sudo supervisorctl reread sudo supervisorctl update
这时候应该就能顺利完成,不会再出现目录不存在的报错了。
如果之后Celery进程启动还是有问题,可以去查看Supervisor自身的日志/var/log/supervisor/supervisord.log,里面会有更详细的错误信息帮你排查。
内容的提问来源于stack exchange,提问作者Zorgan
相关产品推荐
相关产品推荐

