supervisor进程守护
3 min
1、安装与启动
- yum 安装
yum install supervisor- easy_install 安装
wget --no-check-certificate https://bootstrap.pypa.io/ez_setup.py -O - | sudo python
easy_install supervisor- 配置supervisor
在etc下创建目录,并赋权限
mkdir -m 700 -p /etc/supervisor在目录” /etc/supervisor”下创建配置文件
echo_supervisord_conf > /etc/supervisor/supervisord.conf修改配置文件
vi /etc/supervisor/supervisord.conf在文件末尾添加,注意首尾需无空格,需顶格
[include]
files = /root/supervisorConf/*.conf在目录”/etc/supervisor”下创建dotnet core 进程配置文件存放目录”conf.d”
mkdir -m 700 /root/supervisorConf如果需要在web控制台管理,则找到以下代码
;[inet_http_server] ; inet (TCP) server disabled by default
;port=127.0.0.1:9001 ; (ip_address:port specifier, *:port for all iface)
;username=user ; (default is no username (open server))
;password=123 ; (default is no password (open server))修改代码,删除前面的分号,port改为*
[inet_http_server] ; inet (TCP) server disabled by default
port=*:9001 ; ip_address:port specifier, *:port for all ifa
username=user ; default is no username (open server)
password=123 ; default is no password (open server)- 配置supervisor自动启动
centos6
设定supervisor启动文件
vi /etc/init.d/supervisord粘贴以下内容
#! /usr/bin/env bash
# chkconfig: - 85 15
PATH=/sbin:/bin:/usr/sbin:/usr/bin
PROGNAME=supervisord
DAEMON=/usr/bin/$PROGNAME
CONFIG=/etc/supervisor/$PROGNAME.conf
PIDFILE=/tmp/$PROGNAME.pid
DESC="supervisord daemon"
SCRIPTNAME=/etc/init.d/$PROGNAME
# Gracefully exit if the package has been removed.
test -x $DAEMON || exit 0
start()
{
echo -n "Starting $DESC: $PROGNAME"
$DAEMON -c $CONFIG
echo ".............start success"
}
stop()
{
echo "Stopping $DESC: $PROGNAME"
if [ -f "$PIDFILE" ];
then
supervisor_pid=$(cat $PIDFILE)
kill -15 $supervisor_pid
echo "......"
echo "stop success"
else
echo "$DESC: $PROGNAME is not Runing"
echo ".........................stop sucess"
fi
}
status()
{ statusport=`netstat -lntp|grep 9001|awk -F ' ' '{print $4}'|awk -F ':' '{print $2}'`
if [ -f "$PIDFILE" ];
then
supervisor_pid=$(cat $PIDFILE)
echo "$DESC: $PROGNAME is Runing pid=$supervisor_pid"
else
echo "$DESC: $PROGNAME is not Runing"
echo "please use command /etc/init.d/supervisord start Run the service"
fi
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
status)
status
;;
*)
echo "Usage: $SCRIPTNAME {start|stop|restart}" >&2
exit 1
;;
esac
exit 0添加自启动服务
chkconfig supervisord on启动服务
service supervisord start停止服务
service supervisord stopcentos7
创建supervisor 自启动服务
vi /etc/systemd/system/supervisor.service编辑内容:
[Unit]
Description=supervisor
[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使配置生效
systemctl daemon-reload设置服务开机启动,即设置enable
systemctl enable supervisor.service启动服务
systemctl start supervisor.service2、参考配置
/etc/supervisor/supervisord.conf
在文件最后添加
[include]
files = /root/supervisorConf/*.conf- /etc/supervisor/mongo.conf
[program:mongo]
command=/home/mongodb/mongodb-linux/bin/mongod --dbpath /home/mongodb/mongodb-linux/data
stderr_logfile=/var/log/mongo.error.log
stdout_logfile=/var/log/mongo.stdout.log
environment=ASPNETCORE_ENVIRONMENT=Production
user=root
stopsignal=INT
autostart=true
autorestart=true
redirect_stderr=true
startsecs=3- /etc/supervisor/mysql.conf
[program:mysql]
command=/usr/local/mysql/bin/mysqld_safe --defaults-file=/mysql/3306/my.cnf
stderr_logfile=/var/log/mongo.error.log
stdout_logfile=/var/log/mongo.stdout.log
environment=ASPNETCORE_ENVIRONMENT=Production
user=root
stopsignal=INT
autostart=true
autorestart=true
redirect_stderr=true
startsecs=3supervisor 监控的进程必须以非daemon 方式运行
如Nginx要用supervisor 管理需要在配置文件增加一行
- /opt/nginx/conf/nginx.conf
daemon off;- /etc/supervisor/nginx.conf
[program:nginx]
command=/usr/local/nginx/sbin/nginx
directory=/usr/local/nginx
stderr_logfile=/var/log/nginx.error.log
stdout_logfile=/var/log/nginx.stdout.log
environment=ASPNETCORE_ENVIRONMENT=Production
user=root
stopsignal=INT
autostart=true
autorestart=true
redirect_stderr=true
startsecs=3- /etc/supervisor/redis.conf
[program:redis]
command=/usr/local/bin/redis-server /opt/redis/redis.conf
stderr_logfile=/var/log/Redis.error.log
stdout_logfile=/var/log/Redis.stdout.log
environment=ASPNETCORE_ENVIRONMENT=Production
user=root
stopsignal=INT
autostart=true
autorestart=true
redirect_stderr=true
startsecs=33、其他
更新新的配置到supervisord:
supervisorctl update更新新的配置到supervisord
supervisorctl update重新启动配置中的所有程序
supervisorctl reload启动某个进程(program_name=你配置中写的程序名称)
supervisorctl start program_name查看正在守候的进程
supervisorctl停止某一进程 (program_name=你配置中写的程序名称)
pervisorctl stop program_name重启某一进程 (program_name=你配置中写的程序名称)
supervisorctl restart program_name停止全部进程
supervisorctl stop all