1、安装
使用easy_intall来安装 Supervisor:
yum install python-setuptools
easy_install supervisor
使用pip来安装 Supervisor:
pip install supervisor
安装完毕后,可以使用以下命令来测试安装是否成功:
echo_supervisord_conf
echo_supervisord_conf将会在终端输出 Supervisor 配置的样例。
2.生成配置文件
mkdir /etc/supervisor
echo_supervisord_conf > /etc/supervisor/supervisord.conf
3.修改配置文件
vim /etc/supervisord.conf
;[include]
;files = relative/directory/*.ini
修改为:
[include]
files=/etc/supervisor/conf.d/*.conf
# conf.d文件夹为自己创建
# 记得记得去掉[include]前面的分号
#################################################################
;pidfile=/tmp/supervisord.pid
改为,在tmp下会被删除
;pidfile=/var/run/supervisord.pid
#################################################################
;logfile=/tmp/supervisord.log
改为,有好几处,搜索改,并且建立相应的supervisord.log文件,并给777权限
logfile=/var/log/supervisord.log
#################################################################
;serverurl=unix:///tmp/supervisor.sock
改为,有好几处 supervisor.sock,搜索改到var/run下去
serverurl=unix:///var/run/supervisor.sock
4.运行(注:所有命令建立在 已启动的条件下)
#启动
supervisord -c /etc/supervisor/supervisord.conf
或者python 版本不同
/usr/bin/python3.4 /usr/bin/supervisord -c /etc/supervisord.conf
#################################################################
#更新配置文件
supervisorctl update
#重启所有进程
supervisorctl reload
# 查看所有子进程的状态
supervisorctl status
# 关闭某个进程
supervisorctl stop xxx
# 开启某个进程 启动某个进程(program_name=你配置中写的程序名称)
supervisorctl start program_name
# 关闭所有进程
supervisorctl stop all
# 开启所有进程
supervisorctl start all
# 帮助
supervisorctl help
# 关闭所有任务
supervisorctl shutdown
#查看状态,图1是正确的
supervisorctl
5.报错原因处理
1.supervisorctl error (no such process)
原因:没有把supervisord.conf里面的[include]前面的;去掉,导致没有加载到进程文件。
2. [unix:///tmp/supervisor.sock no such file]
在启动的时候没有指定配置文件出现的
supervisord -c /etc/supervisor/supervisord.conf
3.Unlinking stale socket /tmp/supervisor.sock 或者: Error: Another program is already listening on a port that one of our HTTP servers is configured to use. Shut this program down first before starting supervisord. 执行以下命令:
unlink /tmp/supervisor.sock
4.error: <class 'socket.error'>, [Errno 2] No such file or directory: file: <string> line:
原因:supervisor没有启动
supervisord -c /etc/supervisor/supervisord.conf
5. error:class 'socket.error' [Errno 2] No such file or directory: file: /usr/lib64/python2.7/socke
原因:启动报错
命令: /usr/bin/python3.4 /usr/bin/supervisord -c /etc/supervisord.conf
6. Invalid user name forge in section 'program:laravel-worker'
自定义的配置文件中,默认给我们的配置中有一个配置: user ,它的值默认是 forge 。应该将这个值改为我们系统当前登录的用户比如说我当前登录的账户是root ,那么就将它改为root 就可以了。建议,这个最好使用root权限,或者使用权限比较多的用户去设置
7.laravel 框架中启动 (AWS\Sqs\SqsClient not found
方法:在自定义的.conf中将sqs 改成 redis
如:
command=/opt/appnode/appnode-php72/root/bin/php /data/mystack/sites/lav.swaylink.cn/www/laravel/artisan queue:work sqs --sleep=3 --tries=3
改成:
command=/opt/appnode/appnode-php72/root/bin/php /data/mystack/sites/lav.swaylink.cn/www/laravel/artisan queue:work redis --sleep=3 --tries=3
6. 配置supervisord开机启动
(1)在指定目录下创建文件supervisord.service
vim /usr/lib/systemd/system/supervisord.service
(2)输入一下内容
[Unit]
Description=Supervisor daemon
[Service]
Type=forking
ExecStart=/usr/bin/supervisord -c /etc/supervisor/supervisord.conf
ExecStop=/usr/bin/supervisorctl shutdown
ExecReload=/usr/bin/supervisorctl reload
KillMode=process
Restart=on-failure
RestartSec=42s
[Install]
WantedBy=multi-user.target
(3)设置开机自启
systemctl enable supervisord
(4)验证是否是开机自启
#提示 enabled 表示成功
systemctl is-enabled supervisord