利用supervisor管理你的服务

  |   0 评论   |   2,689 浏览


介绍

介绍

Supervisor(http://supervisord.org/  )是用Python开发的一个client/server服务,是Linux/Unix系统下的一个进程管理工具,不支持Windows系统。它可以很方便的监听、启动、停止、重启一个或多个进程。用Supervisor管理的进程,当一个进程意外被杀死,supervisort监听到进程死后,会自动将它重新拉起,很方便的做到进程自动恢复的功能,不再需要自己写shell脚本来控制。

安装

可使用easy_install或pip来安装supervisor

安装easy_install

安装pip

下面使用pip来安装

pip install supervisor

配置

安装完成之后运行下面的命令可查看配置参数的模板

echo_supervisord_conf

创建配置文件

[root@cxy7 ~]# mkdir /etc/supervisor
[root@cxy7 ~]# echo_supervisord_conf > /etc/supervisor/supervisord.conf

修改以下地方


[inet_http_server]           ; HTTP服务器,提供web管理界面
port=:9001               ; Web管理后台运行的IP和端口,如果开放到公网,需要注意安全性
username=user              ; 登录管理后台的用户名
password=123               ; 登录管理后台的密码
[include]
files = /etc/supervisor/*.ini  ;可以指定一个或多个以.ini结束的配置文件

添加一个应用的配置文件

vim /etc/supervisor/mysql.ini
[program:mysql]
command = /usr/local/percona5.6/bin/mysqld_safe --defaults-file=/data/percona5.6/my.cnf --basedir=/usr/local/percona5.6 --datadir=/data/percona5.6 --user=mysql
process_name = mysql
user=root
startsecs = 20
autostart = true
autorestart = true
stdout_logfile = /tmp/mysql-supervisor.log
stderr_logfile = /tmp/mysql-supervisor.error.log

管理

启动

supervisord -c /etc/supervisor/supervisord.conf

命令行管理

supervisorctl help

default commands (type help <topic>):
=====================================
add    exit      open  reload  restart   start   tail   
avail  fg        pid   remove  shutdown  status  update 
clear  maintail  quit  reread  signal    stop    version

界面管理

访问http://${ip}:9001/

用户名和密码即是在配置文件中配置的inet_http_server节

效果如下

image.png

可能出现的问题

建立SSL连接失败

/usr/lib/python2.6/site-packages/pip/_vendor/requests/packages/urllib3/util/ssl_.py:318: SNIMissingWarning: An HTTPS request has been made, but the SNI (Subject Name Indication) extension to TLS is not available on this platform. This may cause the server to present an incorrect TLS certificate, which can cause validation failures. You can upgrade to a newer version of Python to solve this. For more information, see https://urllib3.readthedocs.io/en/latest/security.html#snimissingwarning.
  SNIMissingWarning
/usr/lib/python2.6/site-packages/pip/_vendor/requests/packages/urllib3/util/ssl_.py:122: InsecurePlatformWarning: A true SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail. You can upgrade to a newer version of Python to solve this. For more information, see https://urllib3.readthedocs.io/en/latest/security.html#insecureplatformwarning.
  InsecurePlatformWarning

解决方法

安装openssl

yum -y install openssl

child process was not spawned

报错信息

supervisor: couldn't exec /usr/local/muses/wherehows-backend/runBackend: ENOEXEC
supervisor: child process was not spawned

原因

执行的command既没有后缀,也没有脚本声明,supervisor无法判断使用什么解析器来执行该命令

解决办法

在文件头中加入声明

#!/bin/bash

image.png

Requirement already satisfied

image.png

解决办法:


读后有收获可以支付宝请作者喝咖啡