二、安装supervisor
1.安装命令
pip install supervisor # supervisor目前只支持python2,但是作为容器来说,并不影响监控程序是python3的程序
2.执行 配置文件 生成命令
echo_supervisord_conf > /etc/supervisord.conf
3.创建配置文件需要的文件夹
mkdir /var/log/celery/
mkdir /var/log/celery/
mkdir /var/log/supervisor/
mkdir /var/run/supervisor/
4.更改权限
mkdir /var/log/celery/
mkdir /var/log/celery/
mkdir /var/log/supervisor/
mkdir /var/run/supervisor/
5.编辑配置文件 /etc/supervisord.conf 加入celery配置项(本配置中没使用beat)
; ==================================
; celery worker supervisor example
; ==================================
[program:celery]
; 如果使用的是虚拟环境(virtualenv等)要把celery命令路径写全
command=/home/hiveme/env/cznews/bin/celery worker -A cznews --loglevel=INFO
; Alternatively,
;command=celery --app=your_app.celery:app worker --loglevel=INFO -n worker.%%h
; Or run a script
;command=celery.sh
directory=/home/hiveme/cznews/ ;项目所在目录
user=nobody
numprocs=1
stdout_logfile=/var/log/celery/worker.log ;celery输出日志文件
stderr_logfile=/var/log/celery/workererr.log ;celery错误输出文件
autostart=true
autorestart=true
startsecs=10
; Need to wait for currently executing tasks to finish at shutdown.
; Increase this if you have very long running tasks.
stopwaitsecs = 600
; Causes supervisor to send the termination signal (SIGTERM) to the whole process group.
stopasgroup=true
; Set Celery priority higher than default (999)
; so, if rabbitmq is supervised, it will start first.
priority=1000
; ================================
; celery beat supervisor example
; ================================
;[program:celerybeat]
; Set full path to celery program if using virtualenv
;command=/home/hiveme/env/cznews/bin/celery beat --schedule /var/lib/celery/beat.db --loglevel=INFO
;command=celery beat -A myapp --schedule /var/lib/celery/beat.db --loglevel=INFO ;the ordinary
; remove the -A myapp argument if you aren't using an app instance
;directory=/home/hiveme/cznews/
;user=nobody
;numprocs=1
;stdout_logfile=/var/log/celery/beat.log
;stderr_logfile=/var/log/celery/beaterr.log
;autostart=true
;autorestart=true
;startsecs=10
; Causes supervisor to send the termination signal (SIGTERM) to the whole process group.
;stopasgroup=true
; if rabbitmq is supervised, set its priority higher
; so it starts first
;priority=999
三、启动supervisor(需要使用root权限)
supervisord -c /etc/supervisord.conf
四、启动过程中的问题(查看supervisord.log和celery的错误日志)
注意重启服务器
1.INFO spawnerr: can't find command 'celery'(supervisord.log)
解决方案:
检查 celery是否安装在虚拟环境中,如果是在配置文件中 需要把所有celery的命令改成 完整的路径
2.INFO spawnerr: unknown error making dispatchers for 'celery': EACCES(supervisord.log)
主要是没有权限操作日志文件
解决方案:
chown youruser:youruser -R /var/log/supervisor/
chown youruser:youruser -R /var/run/supervisor/
chown youruser:youruser -R /var/log/celery/
chown youruser:youruser -R /var/log/celery/
3.exited: celery (exit status 127; not expected)(supervisord.log)
这日志报错,网上是说127是指命令不合法
但是当把命令单独拿到外面执行时也可以执行,进入celery日志查看后发现如下错误:
supervisor: couldn't setuid to 65534: Can't drop privilege as nonroot usersupervisor: child process was not spawned
还是说权限问题,
解决方案:
目前是通过root运行解决的,有更好办法的小伙伴可以和大家一起交流交流
4.supervisorctl: error: <class 'socket.error'>, [Errno 101] Network is unreachable: file: /data/openfalcon/open-falcon/python/lib/python2.7/socket.py line: 575
运行supervisorctl时指定配置文件才可以正常运行supervisorctl,否则supervisorctl默认去/etc/supervisord.conf去读取配置,导致错误。
supervisorctl -c your/path/to/your/conf
最近在部署
supervisor
d用于openfalcon的饿时候,发现ctl无法使用(fabenv) [root@t1
python
]#
supervisor
ctl status
error: <class 'socket.error'>, [Errno 101] Network is unreachable: file: /data/openfalcon/open-falcon/
python
/li
得确保配置文件写对,之前一直没有
启动
起来,最后发现是配置logfile 的时候没有精确配置到.log文件得学会看报错提醒和日志,很多时候报错提醒和日志都会明确写出
问题
注意Linux的文件夹权限。
IOError: [Errno 13] Permission denied: '/var/log/
supervisor
/
supervisor
d.log'
原因,/var/log/
supervisor
/
supervisor
d.log没有写权限,赋予权限即可:
sudo chmod -R 777 /var/log/
supervisor
/
supervisor
d.log...
PHP框架:Yii2
一、
supervisor
简介
Supervisor
是用
Python
开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启。它是通过fork/exec的方式把这些被管理的进程当作
supervisor
的子进程来
启动
,这样只要在supe.
● jenkins.service - LSB: Jenkins Automation Server
Loaded: loaded (/etc/rc.d/init.d/jenkins; bad; vendor preset: disabled)
Active: failed (Result: exit-code) since Fri 2021-12-03 11:46:25 CS...
今天在使用
supervisor
配置多个程序时遇到了
问题
如下
FATAL Exited too quickly (process log may have details)
然后就找到了日志文件(日志文件路径在
supervisor
d.conf有记录),找到exit status 127; not expected这个。
然后去百度,过程
中
突然想到是不是我改了配置还没重启,然后重启后还是...
之前电脑上装了vsftpd,然而当通过rpm -e vsftpd卸载的时候报错:
%preun(vsftpd-2.0.1-2mdk.x86_64) scriptlet failed, exit status 127
解决方案如下:
查看 vsftpd 完整安装包文件
rpm -qa |grep vsftpd-2.0.1-2mdk.x86_64
[root@IBCP-NX-EPG02 /