通过 supervisord -v 查看版本
1、进程日志权限错误
IOError: [Errno 13] Permission denied: '/var/log/supervisor/supervisord.log'
原因,/var/log/supervisor/supervisord.log没有写权限,赋予权限即可:
sudo chmod -R 777 /var/log/supervisor/supervisord.log
2、开启HTTP Server错误
Error: Cannot open an HTTP server: socket.error reported errno.EACCES (13)
配置文件中 /var/run 文件夹,没有授予启动 supervisord 的相应用户的写权限。/var/run 文件夹实际上是链接到 /run,因此我们修改 /run 的权限
sudo chmod 777 /run
一般情况下,我们可以用 root 用户启动 supervisord 进程,然后在其所管理的进程中,再具体指定需要以那个用户启动这些进程。
3、运行日志权限问题
'INFO spawnerr: unknown error making dispatchers for 'app_name': EACCES'
修改日志文件的权限
sudo chmod 777 /usr/log/supervisor/supervisor.log
sudo chmod 777 /usr/log/supervisor/youAppName.log
4,指定运行太多问题,
Exited too quickly (process log may have details)
有可能是当前文件已经运行
kill 调当前的进程,再试试运行
5,找不到supervisor==3.81等版本
明明你已经安装了supervisor,但是还是报错
pkg_resources.DistributionNotFound: The 'supervisor==3.1.3' distribution was not found and is required by the application
有可能是因为你没有python2中没有下载supervisor
sudo easy_install supervisor
或者 pip2 install supervisor
6,日志里报:couldn't setuid to 502: Can't drop privilege as nonroot user
错误日志
supervisor: couldn't setuid to 502: Can't drop privilege as nonroot user
supervisor: child process was not spawned
supervisor: couldn't setuid to 502: Can't drop privilege as nonroot user
supervisor: child process was not spawned
supervisor: couldn't setuid to 502: Can't drop privilege as nonroot user
解决方法
查看每个任务的配置文件的user
配置项是否为运行supervisor服务用户。
比如:
我当前使用A用户登录系统并启动supervisor
服务
supervisord -c etc/supervisord.conf
每个任务程序的运行用户设置成了B
cat files/old.ini
...
user=B
...
当supervisor服务启动时就会出现上面的错误。
然后将 任务程序的运行用户设置成A,就不会出错正常运行。
cat files/old.ini
...
user=A
...
supervisor 3.3.4 版本遇到的此问题解决方法
将supervisor 主配置文件个别配置项更改为下(更改root用户为当前用户,因为非root用户无法切换到root用户。)
[supervisord]
user=当前用户 ;如果supervisord启动的环境包含变量USER并且它设置为当前用户,您应该能够以user=%(ENV_USER)s任一用户身份运行。
7. “supervisor.sock no such file”的解决方法
第一步:去/var/run/supervisor中touch一个supervisor.sock文件 并chmod 777 supervisor.sock
第二步:kill掉所有之前的supervisor进程
第三步:“/usr/bin/python /usr/bin/supervisord -n -c /etc/supervisord.conf & ”重新启动supervisor