安装到具有Internet访问权限的系统
根据系统Python的权限,您可能需要成为root用户才能进行以下操作。
互联网安装与Pip
可以使用pip install安装 Supervisor :
pip install supervisor 或 pip3 install supervisor
根据系统Python的权限,您可能需要成为root用户才能使用pip成功安装Supervisor 。
您还可以通过pip在virtualenv中安装supervisor 。
如果您的系统没有安装pip,则需要下载Supervisor发行版并手动安装。可以从PyPi下载当前和以前的Supervisor版本。解压缩软件存档后,运行python setup.py install。这需要互联网访问。它将下载并安装Supervisor所依赖的所有发行版,最后安装Supervisor本身。
安装到没有Internet访问的系统
如果要安装Supervisor的系统无法访问Internet,则需要稍微执行不同的安装。由于pip和python setup.py 安装都依赖于Internet访问来执行相关软件的下载,因此在安装依赖项之前,这两种方法都不能在没有Internet访问的计算机上运行。要安装到未连接到Internet的计算机,请在连接到Internet的计算机上获取以下依赖项:
- setuptools(最新)来自https://pypi.org/pypi/setuptools/。
- meld3(最新)来自https://pypi.org/pypi/meld3/。
将这些文件复制到可移动媒体并将它们放在目标计算机上。按照说明复制到目标机器上。然后解压缩每个文件并在解压缩的目录中调用python setup.py install。最后,运行supervisor的python setup.py install。
安装分发包
某些Linux发行版提供了可通过系统包管理器安装的Supervisor版本。这些软件包由第三方而非主管开发人员制作,并且通常包括针对Supervisor的特定于分发的更改。
使用您的发行版的软件包管理工具来检查可用性; 例如,在Ubuntu上你可以运行apt-cache show supervisor,在CentOS上你可以运行yum info supervisor。
Supervisor的分发包的一个特性是它们通常包括集成到分发的服务管理基础结构中,例如允许supervisord在系统引导时自动启动。
配置文件
Supervisor配置文件通常名为 supervisord.conf。它由supervisord 和supervisorctl使用。如果在没有-c选项的情况下启动任一应用程序(用于明确告诉应用程序配置文件名的选项),应用程序将按指定的顺序在以下位置查找名为supervisord.conf的文件。它将使用它找到的第一个文件。
- $ CWD / supervisord.conf
- $ CWD的/ etc / supervisord.conf
- /etc/supervisord.conf
- /etc/supervisor/supervisord.conf(自Supervisor 3.3.0起)
- ../etc/supervisord.conf(相对于可执行文件)
- ../supervisord.conf(相对于可执行文件)
创建配置文件
Supervisor安装完成后,运行 echo_supervisord_conf。这将在您的终端的标准输出中打印一个“模版”Supervisor配置文件。
如果正常显示配置模版,运行 echo_supervisord_conf > /etc/supervisord.conf。记得用root用户操作。
如果你没有root访问权限,或者你不想把 supervisord.conf文件/etc/supervisord.conf,你可以将它放在当前目录(echo_supervisord_conf > supervisord.conf),并开始supervisord与 - c标志以指定配置文件位置。
例如,supervisord -c supervisord.conf。 在这种情况下,使用-c标志实际上是多余的,因为supervisord在搜索当前目录中的 supervisord.conf。
示例:注意红色部份
[unix_http_server]
file=/var/run/supervisor.sock ;UNIX socket 文件,supervisorctl 会使用
;chmod=0700 ;socket文件的mode,默认是0700
;chown=nobody:nogroup ;socket文件的owner,格式:uid:gid
;[inet_http_server] ;HTTP服务器,提供web管理界面
;port=127.0.0.1:9001 ;Web管理后台运行的IP和端口,如果开放到公网prot=9001即可。需要注意安全性
;username=user ;登录管理后台的用户名
;password=123 ;登录管理后台的密码
[supervisord]
logfile=/var/log/supervisord.log ;日志文件,默认是 $CWD/supervisord.log 修改后记得权限问题 如:chomod +x /var/log
logfile_maxbytes=50MB ;日志文件大小,超出会rotate,默认 50MB,如果设成0,表示不限制大小
logfile_backups=10 ;日志文件保留备份数量默认10,设为0表示不备份
loglevel=info ;日志级别,默认info,其它: debug,warn,trace
pidfile=/var/run/supervisord.pid ;pid 文件
nodaemon=false ;是否在前台启动,默认是false,即以 daemon 的方式启动
minfds=1024 ;可以打开的文件描述符的最小值,默认 1024
minprocs=200 ;可以打开的进程数的最小值,默认 200
[supervisorctl]
serverurl=unix:///var/run/supervisor.sock ;通过UNIX socket连接supervisord,路径与unix_http_server部分的file一致
;serverurl=http://127.0.0.1:9001 ; 通过HTTP的方式连接supervisord
; [program:xx]是被管理的进程配置参数,xx是进程的名称
[program:xx]
command=/opt/apache-tomcat-8.0.35/bin/catalina.sh run ; 程序启动命令
autostart=true ; 在supervisord启动的时候也自动启动
startsecs=10 ; 启动10秒后没有异常退出,就表示进程正常启动了,默认为1秒
autorestart=true ; 程序退出后自动重启,可选值:[unexpected,true,false],默认为unexpected,表示进程意外杀死后才重启
startretries=3 ; 启动失败自动重试次数,默认是3
user=tomcat ; 用哪个用户启动进程,默认是root
priority=999 ; 进程启动优先级,默认999,值小的优先启动
redirect_stderr=true ; 把stderr重定向到stdout,默认false
stdout_logfile_maxbytes=20MB ; stdout 日志文件大小,默认50MB
stdout_logfile_backups = 20 ; stdout 日志文件备份数,默认是10
; stdout 日志文件,需要注意当指定目录不存在时无法正常启动,所以需要手动创建目录(supervisord 会自动创建日志文件)
stdout_logfile=/opt/apache-tomcat-8.0.35/logs/catalina.out
stopasgroup=false ;默认为false,进程被杀死时,是否向这个进程组发送stop信号,包括子进程
killasgroup=false ;默认为false,向进程组发送kill信号,包括子进程
;包含其它配置文件
[include]
files = /etc/supervisor/conf.d/*.conf ;可以指定一个或多个以.ini结束的配置文件,我改成了绝对路径并且后缀名为json的文件
/etc/supervisor/conf.d/*.conf文件示例
[program:xx]
directory = /bin ;执行文件所在目录
command = /bin/xx
autostart = true
autorestart = true
startsecs = 10
startretries = 36
user = xx
redirect_stderr = true
stdout_logfile = /dev/null
可在该目录下建立多少配置文件
配置完成后启动服务
supervisord -c /etc/supervisord.conf ;启动
supervisorctl shutdown ;停止
supervisorctl status ;查看所有进程的状态
supervisorctl stop xx ;停止xx
supervisorctl start xx ;启动xx
supervisorctl restart xx ; 重启xx
supervisorctl update ;配置文件修改后可以使用该命令加载新的配置
supervisorctl reload ; 重新启动配置中的所有程序
supervisorctl reread ; 重新读取配置中的所有程序
supervisorctl restart xx ; 重启指定文件,但不会重新读取配置文件
把xx 换成all 可以管理配置中的所有进程