Linux下Supervisor的安装与配置

软件工程中,守护进程是非常行之有效的方案。能够让我们的一些指令在崩溃之后可以自我重新启动,从而保障业务上的持续使用。

这里就从0开始教大家安装Supervisor。

一,下载安装

安装有好多种方法,直接下载安装包安装,或者yum安装或者pip安装都可以。这次我们选择的是pip安装:

1.安装supervisor
pip install supervisor

2.生成配置文件
mkdir /etc/supervisor
echo_supervisord_conf > /etc/supervisor/supervisord.conf

3.修改supervisor的配置文件:

①因为tmp下系统会自动清理一些东西,为了防止Supervisor的一些核心文件被删除,将部分目录进行调整,防止出现unix:///tmp/supervisor.sock no such file问题
[unix_http_server]---》file---》把/tmp/supervisor.sock改成/run/supervisor/supervisor.sock
[supervisord]---》logfile---》把/tmp/supeervisor.log改成/var/log/supervisor/supervisor.log

[supervisorctl]---》serverurl---》修改为unix:///run/supervisor/supervisor.sock

②对该目录下所有的进程进行管理

[include]---》files---》修改为/etc/supervisor/supervisor.d/*.conf

4.启动supervised
supervisord -c /etc/supervisord/supervisord.conf

二,可能遇到的问题

  1. supervisord -c /etc/supervisord.conf 启动时报错

    Error: Cannot open an HTTP server: socket.error reported errno.ENOENT (2)
    For help, use /usr/bin/supervisord -h

    原因,默认配置的目录不存在,手动创建一个就好了。

    mkdir /run/supervisor

  2. Error: The directory named as part of the path ./log/supervisord.log does not exist解决方案

    出现这个提示,只要创建一个:log文件夹,并且在该文件夹里新建这个文件:supervisord.log

    supervisord.log 里面写入内容:

    [log for main_server]

    保存。这样就可以成功调用supervisord.conf 文件了

  3. Supervisorstart all没问题当时当你单独启动一个进程却报错 :  

    ERROR (spawn error) 。

    这个时候从表面报错你很难看出什么问题。教大家一招

    supervisorctl tail program_name stdout

    这个时候就可以先显示出问题所在。比如这次我的报错就是supervisor : pcntl_signal() has been disabled for security reasons。

    显而易见,pcntl_signal这个函数被禁用了,这个时候只要打开宝塔把这个函数删除就可以了

三,把Supervisor加入自启动

ubuntu

ubuntu开机自启有多种方式,你随意。编辑/etc/rc.local文件,

vi /etc/rc.local

在exit 0 之前加入以下命令

/usr/local/bin/supervisord

保存并退出。
最后修改rc.local权限

chmod +x /etc/rc.local

加入systemctl管理

vim /lib/systemd/system/supervisor.service

[Unit]
Description=supervisor
After=network.target

[Service]
Type=forking
ExecStart=/usr/bin/supervisord -c /etc/supervisord.conf
ExecStop=/usr/bin/supervisorctl $OPTIONS shutdown
ExecReload=/usr/bin/supervisorctl $OPTIONS reload
KillMode=process
Restart=on-failure
RestartSec=42s

[Install]
WantedBy=multi-user.target



  上述文件编写后,执行如下命令即可:

   systemctl enable supervisor      加入开机自启动服务
   systemctl daemon-reload      重新载入systemd,扫描新的或有变动的单元(必要步骤)

   systemctl start supervisor.service      启动服务
   systemctl stop supervisor.service       停止服务
   systemctl restart supervisor.service    重新启动服务
   systemctl reload supervisor.service     重载配置文件
   systemctl status supervisor.service     查看服务状态(显示的类似于操作记录)

验证一下是否为开机启动

systemctl is-enabled supervisord
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值