我正在尝试与主管一起开始服务,但我得到一个错误说
INFO spawnerr:为'app_name'制作调度程序的未知错误:EACCES
这是我的supervisord.conf文件:
[supervisord]
logfile=/tmp/supervisord.log
logfile_maxbytes=50MB ; change these depending on how many logs
logfile_backups=10 ; you want to keep
loglevel=info
pidfile=/tmp/supervisord.pid
nodaemon=true
minfds=1024
minprocs=200
[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
[supervisorctl]
serverurl=unix:///tmp/supervisor.sock socket
[program:myscript]
command= python -u /home/ubuntu/appfolder/app_name.py
autostart=true
autorestart=unexpected
redirect_stderr=true
stdout_logfile=/var/log/app_name.log
我有同样的问题 - 芹菜子程序日志写在我的app文件夹下的logs子文件夹中,结果我在调试Nginx的问题时将所有者设置为www-user
。我将app文件夹的所有者更改回ubuntu(>> whoami
)
sudo chown -R ubuntu:ubuntu /var/www/myapp/
让它工作。
问题是日志文件的权限使用用户运行管理程序,您可以在supervisord.conf文件的相同路径中创建“logs”文件夹并更改:
logfile=/tmp/supervisord.log
至
logfile=logs/supervisord.log
我在一个无特权的supervisord
容器中运行Docker时遇到此错误,当我尝试使用supervisord
[supervisord]
指令让[user]
以非root用户身份运行时。
这是由docker #31243引起的,其中容器以root
启动,然后另一个用户被创建/切换到(根据supervisord
更改为非root)以及容器的stdin/stdout/stderr
通过它的TTY的限制权限。
我的解决方法是将非root用户添加到tty
组,例如useradd -G tty supervisord
,确保你运行tty例如docker run ... -t
或Docker撰写tty: true
。
我有同样的问题,我建议做以下事情
从:
logfile=/tmp/supervisord.log
至:
logfile=/var/log/supervisor/supervisord.log
你的pid文件也一样
pidfile=/tmp/supervisord.pid >> pidfile=/var/run/supervisor/supervisord.pid
做两个dirs
mkdir /var/run/supervisor/
mkdir /var/log/supervisor/
然后改变目录
chown youuser:youuser -R /var/log/supervisor/
如果这不工作,请仔细检查谁可以写你的日志文件和pid文件。
ls -l /var/log/supervisor/supervisord.log
如果它仍然无法正常工作,请尝试更新您的主管
错误信息表明您的应用程序“app_name”可能读取或写入没有权限的文件。
你有root用户启动supervisord,然后切换到特定用户吗?在这种情况下,您可以使用root用户在“app_name”中创建文件,但特定用户可能没有正确的权限。