supervisor管理后台进程

在linux中supervisor是用来管理后台进程的,是一个用python写的进程管理工具,可以让宕机的进程重启。这里我们大概讲一下用他来管理uWSGI。

一.安装supervisor

1.python2下的安装

supervisor不支持python3,所以你安装可以使用自带的python2安装,但是自带的python2没有安装pip

(1)要安装pip,首先要安装setuptools

wget https://pypi.python.org/packages/ff/d4/209f4939c49e31f5524fa0027bf1c8ec3107abaf7c61fdaad704a648c281/setuptools-21.0.0.tar.gz#md5=81964fdb89534118707742e6d1a1ddb4

tar xvf setuptools-21.0.0.tar.gz            //解压文件

cd setuptools-21.0.0

python setup.py install

(2)安装pip

wget https://pypi.python.org/packages/11/b6/abcb525026a4be042b486df43905d6893fb04f05aac21c32c638e939e447/pip-9.0.1.tar.gz

tar xvf pip-9.0.1.tar.gz 

cd pip-9.0.1

python setup.py install

(3)安装supervisor

pip install supervisor

2.python3下的安装

默认的pip安装的只支持python2,当然手动安装新版就支持python3了

pip install git+https://github.com/Supervisor/supervisor

二.配置supervisor

生成 supervisor 默认配置文件,放在 /etc/supervisord.conf 路径中:

echo_supervisord_conf > /etc/supervisord.conf

修改配置文件

# 修改配置文件
vi /etc/supervisord.conf

# 加入以下配置信息在最下面
[include]
files = /etc/supervisord.d/*.conf   # /etc/supervisord.d/下所有conf结尾的

[inet_http_server]
port=9001  # 端口号
username=user  # web登录名
password=123  # 登录密码

配置文件详情

 1 [unix_http_server]
 2 file=/tmp/supervisor.sock   ; UNIX socket 文件,supervisorctl 会使用
 3 ;chmod=0700                 ; socket 文件的 mode,默认是 0700
 4 ;chown=nobody:nogroup       ; socket 文件的 owner,格式: uid:gid
 5 ;username=user              ; default is no username (open server)
 6 ;password=123               ; default is no password (open server)
 7
 8 ;[inet_http_server]         ; HTTP 服务器,提供 web 管理界面
 9 ;port=127.0.0.1:9001        ; Web 管理后台运行的 IP 和端口,如果开放到公网,需要注意安全性
10 ;username=user              ; 登录管理后台的用户名
11 ;password=123               ; 登录管理后台的密码
12
13 [supervisord]
14 logfile=/tmp/supervisord.log ; 日志文件,默认是 $CWD/supervisord.log
15 logfile_maxbytes=50MB        ; 日志文件大小,超出会 rotate,默认 50MB
16 logfile_backups=10           ; 日志文件保留备份数量默认 10
17 loglevel=info                ; 日志级别,默认 info,其它: debug,warn,trace
18 pidfile=/tmp/supervisord.pid ; pid 文件
19 nodaemon=false               ; 是否在前台启动,默认是 false,即以 daemon 的方式启动
20 minfds=1024                  ; 可以打开的文件描述符的最小值,默认 1024
21 minprocs=200                 ; 可以打开的进程数的最小值,默认 200
22
23 ; the below section must remain in the config file for RPC
24 ; (supervisorctl/web interface) to work, additional interfaces may be
25 ; added by defining them in separate rpcinterface: sections
26 [rpcinterface:supervisor]
27 supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
28
29 [supervisorctl]
30 serverurl=unix:///tmp/supervisor.sock ; 通过 UNIX socket 连接 supervisord,路径与 unix_http_server 部分的 file 一致
31 ;serverurl=http://127.0.0.1:9001 ; 通过 HTTP 的方式连接 supervisord
32
33 ;包含其他的配置文件
34 [include]
35 files = relative/directory/*.ini    ; 可以是 *.conf 或 *.ini

启动supervisor

supervisord -c /etc/supervisord.conf

再启动的时候可能会报错,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

通过http://ip:9001/访问web界面,账户名密码就是你配置的,效果如下

三.加入监控程序

新建管理的监控文件夹,每个程序设置配置文件,达到隔离的效果

mkdir /etc/supervisord.d/

在/etc/supervisor.d/目录下面加入需要管理的程序

vi /etc/supervisor.d/orange_web.conf  # 新建一个管理程序

# 程序的名字,在supervisor中可以用这个名字来管理该程序,随便起
[program:orange_web]
# 指定运行用户
user = root
# 启动程序的命令uwsgi启动命令
command = uwsgi --ini /var/www/script/uwsgi.ini
# 项目的目录
directory = /var/www/orange_web
# 开始的时候等待多少秒
startsecs = 0
# 停止的时候等待多少秒
stopwaitsecs = 0
# 设置改程序是否虽supervisor的启动而启动
autorstart = true
# 程序挂了是否需要重新将其启动
autorestart = true
# 是否将程序错误信息重定向到文件
redirect_stderr=true
# 输出的log文件位置
stdout_logfile = /var/www/script/supervisord.log
# 输出的错误文件位置
stderr_logfile = /var/www/script/supervisord.err

[supervisord]
# log的级别
loglevel = info

重新启动supervisord

supervisorctl reload  # 重启

重新访问supervisor管理界面

在这里就安装配置成功了,哈哈哈就可以去跟周围的女同学装逼了。。

四.supervisor常用命令

supervisorctl start programXX  # 启动进程programXX  

supervisorctl stop programXX  # 停止进程programXX  

supervisorctl restart programXX  # 重启进程programXX

supervisorctl stop groupworker  # 停止所有名为groupworker这个分组的进程(start,restart都可用)

supervisorctl stop all  # 停止所有进程(start,restart都可用,但是都不会载入最新的配置文件)

supervisorctl reload  # 载入最新的配置文件,重载进程

参考链接:

  supervisor    https://www.centos.bz/2018/05/%E4%BD%BF%E7%94%A8-supervisor-%E7%AE%A1%E7%90%86%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%90%8E%E5%8F%B0%E8%BF%9B%E7%A8%8B/

  Django+uWSGI+Nginx部署  https://www.cnblogs.com/zzqit/p/10103303.html

                https://www.jianshu.com/p/23762bd086e1

原文地址:https://www.cnblogs.com/zzqit/p/10107195.html

时间: 2025-01-20 03:47:50

supervisor管理后台进程的相关文章

【云计算】使用supervisor管理Docker多进程-ntpd+uwsgi+nginx示例最佳实践

supervisor安装启动: apt-get install supervisor -y # start supervisord nodaemon /usr/bin/supervisord --nodaemon nginx示例: [program:nginx] command = /usr/sbin/nginx -g 'daemon off;' process_name = %(program_name)s stopsignal = QUIT autostart = true # starts

celery和supervisor配合使用,实现supervisor管理celery进程

在这里我选择redis作为celery异步任务的中间人,系统选择CentOS6.5 64位.redis.celery和supervisor的安装参见官方文档. 安装完毕后: 1, 创建celery的实例/home/user_00/learn/tasks.py文件 tasks.py: # -*-coding:utf-8-*- from celery import Celery, platforms app = Celery('tasks', backend='redis://localhost:6

docker之使用supervisor管理多个进程

docker题外话: centos7安装supervisor: 源码编译安装: 下载源码文件:supervisor-3.3.1.tar.gz 下载地址:https://pypi.python.org/pypi/supervisor 安装: [[email protected] src]# tar -zxf supervisor-3.3.1.tar.gz [[email protected] src]# cd supervisor-3.3.1/ [[email protected] supervi

如何使用supervisor管理你的应用

1.前言 Supervisor(http://supervisord.org/)是用Python开发的一个client/server服务,是UNIX-like系统下的一个进程管理工具,不支持Windows系统.它可以很方便的监听.启动.停止.重启一个或多个进程. 提供的高可用场景,当你的程序出现异常,例如core/内存溢出等,导致服务进程被杀死,这个时候supervisort监听到进程终止后,会自动将它重新拉起. 2.安装 supervisor是基于python开发的,所以安装时首先要保证有py

配置supervisor管理beego应用

一.golang.beego等环境安装与配置 二.supervisor安装 github项目地址:https://github.com/Supervisor/supervisor 克隆项目:git clone https://github.com/Supervisor/supervisor.git 进入项目:cd supervisor 安装执行:python setup.py install 三.supervisor配置文件 官方文档-配置部分 vi /etc/supervisord.conf

ELK之ES2.4.1双实例平滑升级至5.2.1踩坑并supervisor管理记

ES老集群用的2.4.1版本,跑的比较好就一直没动,最近看资料ES5.X已经稳定,并且性能有较大提升,心里就发痒了,但由于业务要保持高可以用的属性,就得想一个平滑升级的方案,最后想到了多实例过度的办法,5.X版本网上介绍配置变化较大,也做好了踩坑准备,确定好要升级后,立刻动手. 一.对应升级改造方案 使用端口9220和9330 安装并配置好新的ES5.2.1实例-->关掉logstash并将ES2.4.1实例堆栈调小重启(kafka保留3个小时日志所以不会丢失)-->启动ES5.2.1并将lo

使用Supervisor管理进程二

supervisor安装完成后会生成三个执行程序:supervisortd.supervisorctl.echo_supervisord_conf,分别是supervisor的守护进程服务(用于接收进程管理命令).客户端(用于和守护进程通信,发送管理进程的指令).生成初始配置文件程序. 3.配置 运行supervisord服务的时候,需要指定supervisor配置文件,如果没有显示指定,默认在以下目录查找: $CWD/supervisord.conf$CWD/etc/supervisord.c

docker supervisor管理进程

一.使用supervisor来管理 supervisor:进程管理工具,基于C/S架构.(其提供web接口给用户查询和 控制),它允许用户去监控和控制在类unix系统的进程. 使用supervisor可以更好的控制.管理.重启我们希望运行的进程. 在这演示一下如何同时使用ssh和 apache 服务.(通过docker buid生成新镜像) 配置 1.首先创建一个dockerfile目录 dockerfile文件内容 supervisor配置文件内容 第一段supervsord配置软件本身,使用

使用Supervisor管理Celery进程。

讲过一篇celery的,但是celery启动后并不是daemon的,在生产环境中这肯定是不可以的,那怎么办呢? 这就需要使用supervisor进行进程管理了,下面详细介绍. 一. supervisor是干什么的. supervisor是有Python语言编写的,基于linux操作系统的一款服务器管理工具,用以监控服务器进程的运行. supervisor要求管理的程序是非daemon程序,supervisord会帮你把他转换成daemon程序. 因此如果使用supervisor来管理nginx进