前面介绍了如何在centos7自定义系统服务来达到程序开机自启的目的,但如果程序运行挂掉了,必须等到机器重启或者人工去手动恢复。因此这里使用supervisor
来进行程序管理。
安装
>>> yum install epel-release
>>> yum install supervisor
>>> systemctl enable supervisord # 开机自启动
>>> systemctl start supervisord # 启动supervisord服务
>>> systemctl status supervisord # 查看supervisord服务状态
配置
- 接下来进行
supervisor
的配置,其配置文件默认目录在/etc/supervisord.conf
。有两种方式配置管理自己的程序,一种是直接在/etc/supervisord.conf
配置文件中的[program:theprogramname]
配置相应的程序启动命令,一种是通过自定义*.ini
文件的方式来挂载启动,我们可以看到配置文件最后一行有如下配置命令:
[include]
files = /etc/supervisord.d/*.ini
因此我们只需要在/etc/supervisord.d/
创建我们自己的*.ini
文件就好了,这里举例说明。
- 我有一个贴吧爬虫程序,所以在
/etc/supervisord.d/
目录下新建一个tieba.ini
文件,然后其中填入具体的配置,如下所示:
[program:tieba]
command= /root/anaconda3/envs/lch_spider/bin/python /home/lch/cetc10/tiebaspider/run_tieba_spiders.py ## 可以通过&& 执行多条命令
stdout_logfile=/home/lch/cetc10/tiebaspider/log.out # 日志文件
directory=/home/lch/cetc10/encyclopediaSpider/ # 在执行命令前,先进入此目录
environment=PATH=/root/anaconda3/envs/lch_spider/bin/ # 配置python环境,配置了这个,前面的command中的python就不用加具体的路径了
autostart=true # 随着supervisor的自启动而启动
autorestart=true # 程序退出后自动重启,可选值:[unexpected,true,false],默认为unexpected,表示进程意外杀死后才重启
startsecs=5 # 启动5秒后没有异常退出,就表示进程正常启动了,默认为1秒
priority=999 # 进程启动优先级,默认999,值小的优先启动
stopasgroup=true # 默认为false,进程被杀死时,是否向这个进程组发送stop信号,包括子进程
killasgroup=true # 默认为false,向进程组发送kill信号,包括子进程
配置完成后保存退出,然后重新启动supervisor
:
>>> supervisorctl reload
>>> supervisorctl status # 查看状态
-
supervisor
也提供了web管理程序,我们只需要将配置文件中的相应配置,按如下方式配置:
[inet_http_server] ; inet (TCP) server disabled by default
port=0.0.0.0: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))
配置完成后,重启程序,然后在浏览器中输入对应主机的ip就可以访问查看了。
网友评论