我正在尝试与主管一起开始服务,但我收到错误说
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
答案 0 :(得分:7)
我有同样的问题 - 芹菜子程序日志写在我的app文件夹下的logs子文件夹中,结果我在调试Nginx的问题时将所有者设置为www-user
。我将app文件夹的所有者更改回ubuntu(>> whoami
)
sudo chown -R ubuntu:ubuntu /var/www/myapp/
让它发挥作用。
答案 1 :(得分:2)
问题是日志文件的权限 通过用户运行主管,您可以创建"日志"在supervisord.conf文件的相同路径中的文件夹并更改:
logfile=/tmp/supervisord.log
到
logfile=logs/supervisord.log
答案 2 :(得分:1)
当在无特权的Docker容器中运行supervisord
时,当我尝试使用supervisord
以非root用户身份运行[supervisord]
时,会出现此错误{ {1}}指令。
这是由docker #31243引起的,其中容器以[user]
开始,然后创建/切换了另一个用户(根据root
更改为非root用户),并且对容器的supervisord
通过TTY。
我的解决方法是将非root用户添加到stdin/stdout/stderr
组中,例如tty
,请确保您使用tty例如useradd -G tty supervisord
或Docker Compose docker run ... -t
。
答案 3 :(得分:0)
我有同样的问题,我建议做以下
添加运行该服务的用户。 用户= youruser
将您的日志移至主管目录
来自:
logfile=/tmp/supervisord.log
为:
logfile=/var/log/supervisor/supervisord.log
同样适用于你的pid文件
pidfile=/tmp/supervisord.pid >> pidfile=/var/run/supervisor/supervisord.pid
制作两个目录
mkdir /var/run/supervisor/
mkdir /var/log/supervisor/
然后用
更改目录chown youuser:youuser -R /var/log/supervisor/
如果这样做了,请仔细检查谁可以写你的日志文件和pid文件。
ls -l /var/log/supervisor/supervisord.log
如果仍然没有工作,请尝试更新主管
答案 4 :(得分:0)
错误信息表明您的应用“ app_name”可能读取或写入没有特权的文件。
您是否已开始以root用户进行监管,然后又切换到特定用户?在这种情况下,您可以使用root所有者在“ app_name”中创建文件,但特定用户可能没有正确的权限。