Linux进程管理工具supervisor安装配置教程
;username=user ;登录管理后台的用户名
;password=123 ;登录管理后台的密码
[supervisord]
logfile=/t
;port=127.0.0.1:9001 ;Web管理后台运行的IP和端口,如果开放到公网,需要注意安全性 ;username=user ;登录管理后台的用户名 ;password=123 ;登录管理后台的密码 [supervisord] logfile=/tmp/supervisord.log ;日志文件,默认是 $CWD/supervisord.log logfile_maxbytes=50MB ;日志文件大小,超出会rotate,默认 50MB,如果设成0,表示不限制大小 logfile_backups=10 ;日志文件保留备份数量默认10,设为0表示不备份 loglevel=info ;日志级别,默认info,其它: debug,warn,trace pidfile=/tmp/supervisord.pid ;pid 文件 nodaemon=false ;是否在前台启动,默认是false,即以 daemon 的方式启动 minfds=1024 ;可以打开的文件描述符的最小值,默认 1024 minprocs=200 ;可以打开的进程数的最小值,默认 200 [supervisorctl] serverurl=unix:///tmp/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 = supervisord.d/*.ini ;可以指定一个或多个以.ini结束的配置文件 配置Tomcat测试 /etc/supervisord.d/tomcat.ini [program:tomcat] command=/opt/apache-tomcat-8.0.44/bin/catalina.sh run stdout_logfile=/opt/apache-tomcat-8.0.44/logs/catalina.out autostart=true autorestart=true startsecs=5 priority=1 stopasgroup=true killasgroup=true 重启supervisor supervisord -c /etc/supervisord.conf 查看 [root@gr5bm1tynui4toof-0622769 system]# supervisorctl tomcat RUNNING pid 21609, uptime 0:25:15 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。 Supervisor的安装和入门 前几天准备部署一个go应用,由于目前go的daemon方案还不完善,只能借助其他工具进行部署,所以发现了一个非常好用的进程管理工具——Supervisor。 Supervisor () 是用Python实现的一款非常实用的进程管理工具。 本文将介绍如何在CentOS上Supervisor的安装和使用。 可以先运行以下命令看系统是否安装了python,以及python的版本 [root@192 ~]# python -V Supervisor需要的python版本是python2 2.4以上(暂未明确是否支持python3) 如果系统没有安装python2的话,可以使用系统自带安装工具安装python2 [root@192 ~]# yum install python2 再安装python包管理工具 easy_install [root@192 ~]# yum install python-setuptools 使用easy_install安装supervisor [root@192 ~]# easy_install supervisor 验证是否安装成功 [root@192 ~]# supervisord -v 注意:supervisor的命令是supervisord,命令比名称多一个d supervisor主要是两个命令: 执行如下命令 [root@192 ~]# echo_supervisord_conf 我们可以看到一份标准的配置文件模板 下面简单说明(翻译)一下这份模板 这个配置文件包含了supervisor主进程配置和应用程序(我们希望被管理的程序)配置,一般推荐将主程序配置和应用程序配置分开配置。 配置文件里面默认将很多文件放置到/tmp/下,但是有时候系统会自动清理该目录的文件,导致supervisor无故挂掉或者控制不了,所以我们需要先创建几个目录来存放文件 首先,推荐创建 /etc/supervisord.d/ 来放置应用程序的配置 然后,推荐创建 /var/supervisord/ 来放置sock和pid文件 最后,推荐创建 /var/supervisord/log/ 来放置日志文件 下面的操作都是以这几个路径来配置 生成主进程配置文件 [root@192 ~]# echo_supervisord_conf > /etc/supervisord.conf 注意:主配置文件请以这个名称放在这个目录,如果放在其他地方请创建一个软连接,否则supervisorctl将无法管理应用程序 下面讲一些需要修改的地方,不需要修改的保持原样即可 首先,在 /etc/supervisord.d/ 创建一个 ini 文件 [root@192 ~]# vim /etc/supervisord.d/demo.ini 然后把 [program:theprogramname] 模块整个拷贝进去 同样,讲一些需要修改的地方 这样就配置完成了 [root@192 ~]# supervisord -c /etc/supervisord.conf 使用该命令启动supervisor 查看是否启动成功 [root@192 ~]# supervisorctl status 可以看到,我们刚才配置的 demo_cat 程序已经在运行了 主要是通过 supervisorctl 来管理应用程序 同时,根据上面的配置,supervisor会重定向应用程序的输出,并保存到 /var/supervisord/log 里面 新建开机启动服务 [root@192 ~]# vim /lib/systemd/system/supervisord.service 在supervisord.service中添加以下内容: 将服务脚本添加到systemctl自启动服务: [root@192 ~]# systemctl enable supervisord.service 重启系统测试开机启动。 这个问题网上很多人说是防火墙问题,他们的解决办法都不适用。 supervisor是本地服务,跟防火墙没有关系。后面我发现是因为 supervisorctl 默认在 /etc/ 里面有 supervisord.conf 。所以如果你的 /etc/ 里面没有 supervisord.conf ,建议你建个软连接,把主程序配置文件连接过来。 例如: [root@192 ~]# ln -s /etc/supervisord.conf /etc/supervisord.conf 这个问题是因为supervisor没有启动导致的。请确认superviosr是否已经启动。 这个问题是因为sock文件不见了。 sock文件被删除一般是因为放在默认的 /tmp/ 里面被系统删除了。也有可能跟我一样,根据网上其他supervisor开机自启动的办法,将 supervisrod.conf 里面的 nodaemon=false 改成true,导致系统一直重启supervisor,sock文件也就会一直被删除和创建。 本人也是新手,欢迎大家一起讨论学习。 后面有新的学习经验和体会会进一步更新。 Supervisord安装和配置 推荐使用 yum 安装(easy_install安装有坑): 默认配置文件:/etc/supervisord.conf 进程管理配置文件放到:/etc/supervisord.d/目录下即可 编辑配置文件 参考地址注: 运行supervisord服务的时候,需要指定supervisor配置文件UNIX 进程管理,如果没有显示指定,默认在以下目录查找: $CWD表示运行supervisord程序的目录。 touch crawl_syn_server.ini 参数说明: program: 程序名称,名字不同于进程名子 user=root: 用哪个用户启动进程,默认是root command: 执行的命令,最好写绝对路径 directory: 执行命令的路径 autostart: 随supervisor启动 startsecs: 启动10秒后没有异常退出,就表示进程正常启动了,默认为1秒 autorestart: 程序退出后自动重启,可选值:[unexpected,true,false],默认为unexpected,表示进程意外杀死后才重启 startretries=60 : 启动失败自动重试次数,默认是3 priority=999: 进程启动优先级,默认999,值小的优先启动 redirect_stderr: 把stderr重定向到stdout,默认false stdout_logfile_maxbytes=50MB : stdout 日志文件大小,默认50MB stdout_logfile_backups = 10 : stdout 日志文件备份数,默认是10 stdout 日志文件,需要注意当指定目录不存在时无法正常启动,所以需要手动创建目录(supervisord 会自动创建日志文件) stdout_logfile=/var/log/supervisord/queue-groupon-success-listen.log stderr_logfile=/var/log/supervisord/queue-groupon-success-listen.log loglevel=info : 日志的级别 stopasgroup=false: 默认为false,进程被杀死时,是否向这个进程组发送stop信号,包括子进程 killasgroup=false: 默认为false,向进程组发送kill信号,包括子进程 1.交互终端 supervisord启动成功后,可以通过supervisorctl客户端控制进程,启动、停止、重启。 supervisor 使用教程 官网为 Supervisor是使用python开发的一个进程管工具,安装和使用都非常简单。使用 pip 或者 easy_install 安装会非常方便,自动解决依赖关系。 supervisorctl 用于管理supervisor服务,管理使用supervisor启动的进程。 安装好supervisor后需要手动的生成配置文件。 echo_supervisord_conf | sudo tee /etc/supervisord.conf supervisor默认读取的配置文件为 /etc/supervisord.conf ,建议将配置文件放在此位置。 我们先简单的查看一下 supervisord.conf ,配置文件格式和ini格式配置文件相同,由节、键、值组成,配置文件注释为 ; 。 读取/etc/supervisor.d/文件夹下所有后缀为conf的文件。 第一步 配置第一个使用supervisord管理的程序 我们使用 python2.7 来作为演示,使用SimpleHTTPServer模块方便快速的启动一个http server。 1,创建配置文件 /etc/supervisor.d/test1.conf,写入一下内容 这是一个最简单的例子,第一行指定当前配置的程序名称。 第二行程序运行命令(20080 为 http server端口号)。 2,第一个程序已经配置好,接下来就可以启动supervisord来查看一下效果。 输入命令 sudo supervisord 即可启动服务。 很多机器会打印出几行信息,这并不代表程序出错,意思是 3,现在使用 ps -ef | grep python 来检查一下刚才配置的程序是否已经启动。到此为止我们的第一步已经完成。 必要参数只有 command,其他未可选参数。 [program:x] 自定义的程序名不能重复 配置示例 管理tornado应用 需要启动4个进程,分别监听四个连续端口(20081 – 20084)。 将错误输出定向到标准输出,每个端口标准输出写入到不同文件中,单个文件最大50MB,最多保存3个备份。 启动前等待3秒。 supervisord启动时自动启动。 程序运行出错自动重启,最大尝试重启次数3次。 nginx默认运行状态是后台运行程序。supervisord不能管理此类程序需要,需要修改nginx主配置文件。 在nginx最外层加入 daemon off; 最简单的配置。 supervisor进程管理工具,可以方便启动停止进程,查看程序日志,重新载入配置文件。 如果supervisord配置文件不再默认位置,使用supervisorctl工具时需要指定配置文件路径 supervisordctl -c 配置文件路径 常用命令 start stop restart + all 表示启动,关闭,重启所有进程。 如果一个进程启动了多个副本,例如上文 tornado-test 。 (编辑:威海站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |