Linux下Supervisor详细配置

前言: Linux下让程序后台运行的方法有很多,例如: nohuop、screen、supervisor等。

在我之前写一键脚本时,我一直喜欢使用 nohup server.py &这样的方法来使得程序后台运行。我们只需要在/etc/rc.local中追加上nohup server.py &这样就能保证程序开机自启。

在运行中发现一个问题,nohup会自动断开?

所以我写了这篇文章,来详细解释nohup断开的原因及处理办法: nohup自动断开原因及处理办法

俗话说,技多不压身,所以我下面详细介绍在Centos和Debian下的Supervisor的详细安装运行方法。 先说说安装方法: Debian:

apt-get install supervisor -y

Centos:

yum install epel-* -y yum install supervisor -y

还有一种采用python-pip来安装,我不推荐这种方式,这种方式安装之后不会有配置文件。 而是需要我们自己复制配置文件到/etc/文件夹。 安装方法如下: Debian:

apt-get install python-pip -y pip install supervisor wget -N -P  /etc/ --no-check-certificate  https://coding.net/u/cvc/p/supervisor/git/raw/master/supervisord.conf

Centos:

yum install python-pip -y pip install supervisor wget -N -P  /etc/ --no-check-certificate  https://coding.net/u/cvc/p/supervisor/git/raw/master/supervisord.conf

这样我们就安装完成了supervisor,下面我们来详细介绍运行方法:

Debian文件路径:

/etc/supervisor/conf.d /etc/supervisor/supervisord.conf

添加程序时,我们需要在conf.d文件夹下新建程序,保持后缀为conf即可,例如1.conf 在1.conf追加以下内容:

[program:test] #程序的名字,在supervisor中可以用这个名字来管理该程序。 user=root #指定运行用户 command=bash /root/1.sh #启动程序的命令 autorstart=true #设置改程序是否虽supervisor的启动而启动 directory=/home/lege #相当于在该目录下执行程序 autorestart=true #程序停止之后是否需要重新将其启动 startsecs=5 #重新启动时,等待的时间 startretries=100 #重启程序的次数 redirect_stderr=true #是否将程序错误信息重定向的到文件 stdout_logfile=/home/lege/supervisor_log/log.txt #将程序输出重定向到该文件 stderr_logfile=/home/lege/supervisor_log/err.txt #将程序错误信息重定向到该文件

文件很杂乱,我们一般只需要用到以下配置:

[program:test] #程序的名字,在supervisor中可以用这个名字来管理该程序。 user=root #指定运行用户 command=bash /root/1.sh #启动程序的命令

Centos文件路径:

/etc/supervisord.conf

我们只需要在supervisord.conf后面追加或者调用/etc/supervisord.d/*.ini文件。 所以我们有两种办法来建立程序,一般我推荐第一种,直接在supervisor.conf后面追加。 里面追加以下内容:

[program:test] #程序的名字,在supervisor中可以用这个名字来管理该程序。 user=root #指定运行用户 command=bash /root/1.sh #启动程序的命令 autorstart=true #设置改程序是否虽supervisor的启动而启动 directory=/home/lege #相当于在该目录下执行程序 autorestart=true #程序停止之后是否需要重新将其启动 startsecs=5 #重新启动时,等待的时间 startretries=100 #重启程序的次数 redirect_stderr=true #是否将程序错误信息重定向的到文件 stdout_logfile=/home/lege/supervisor_log/log.txt #将程序输出重定向到该文件 stderr_logfile=/home/lege/supervisor_log/err.txt #将程序错误信息重定向到该文件

文件很杂乱,我们一般只需要用到以下配置:

[program:test] #程序的名字,在supervisor中可以用这个名字来管理该程序。 user=root #指定运行用户 command=bash /root/1.sh #启动程序的命令

所以我们总结一下,Debian和Centos的Supervisor配置文件异同点如下: 差异:

Debian配置文件位于conf.d/下,后缀为.conf Centos配置位于supervisord.d/下,后缀为.ini

相同点: 运行均相同,相关命令如下:

supervisorctl reload  //重载supervisor supervisorctl update //更新supervisor supervisorctl status //查看状态 supervisorctl update //更新新的配置到supervisord supervisorctl start [all]|[x]     //启动所有/指定的程序进程 supervisorctl stop [all]|[x]      //关闭所有/指定的程序进程 supervisord          //启动supervisor supervisord -c supervisor.conf   //通过配置文件启动supervisor supervisorctl start test  //开启test服务

我们可以开启supervisor的http服务端,这样我们可以通过网页来管理运行的supervisor程序 我们按照上面的方法,追加相关文件到conf或者ini中,追加内容如下:

[inet_http_server] port = 0.0.0.0:14502 #IP和绑定端口 username = root #管理员名称 password = 123456 #管理员密码

然后通过http://ip:9001即可在线管理supervisor程序。

后记:Supervisor的安装方法不算麻烦,但是在制作一键脚本时,我们需要对用户的系统进行判断,然后执行相应的安装方法,以及记录下安装文件路径,然后才能去追加程序文件,这样才能达到自动化运行的方法。切记不要混淆Debian和Centos的配置文件以及路径,不然会出现添加的程序无法自启等情况。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏云计算教程系列

如何在Ubuntu 14.04上安装Linux,Nginx,MySQL,以及PHP(LNMP)堆栈

LNMP软件堆栈是一组可用于为动态网页和Web应用程序提供服务的软件。这是一个描述Linux操作系统的首字母缩写词,带有Nginx Web服务器。后端数据存储在...

1474
来自专栏云计算教程系列

如何在CentOS 7上将ngx_pagespeed添加到Nginx

ngx_pagespeed,或者pagespeed,是一个Nginx模块,旨在通过精简资源的规模来缩短客户端浏览器加载它所需的时间,从而自动优化您的网站。如果您...

1160
来自专栏电光石火

如何让nginx显示文件夹目录

1. 如何让nginx显示文件夹目录 vi /etc/nginx/conf.d/default.conf 添加如下内容: location / ...

19710
来自专栏LIN_ZONE

ubuntu16.04中supervisor安装与简单使用(转载)

supervisor 可以将每个进程分别写成一个文件,supervisor 的进程文件放在 /etc/supervisor/conf.d/ 目录下,本例创建 t...

1014
来自专栏技术博文

git常用命令

克隆分支(ssh方式) git clone git@xxx:branch.git#xxx代表服务器 设置全局的用户名和邮箱 git config --globa...

2778
来自专栏云计算教程系列

如何在Ubuntu上找到Redis日志

日志对于Redis安装的故障排除至关重要。你可能会问自己“我的Redis在哪里登录?” 或者“Redis在Ubuntu 14.04上存储日志文件的位置是什么?”

6283
来自专栏Linux驱动

第4阶段——制作根文件系统之编译配置安装busybox(3)

在上一节分析出制作一个最小的根文件系统至少需要: (1)/dev/console(终端控制台, 提供标准输入、标准输出以及标准错误) /dev/null  (为...

1915
来自专栏大前端开发

使用mpvue开发小程序教程(二)

在上一篇文章中,我们介绍了使用mpvue开发小程序所需要的一些开发环境的搭建,并创建了第一个mpvue小程序代码骨架并将其运行起来。在本文中,我们来研究熟悉一下...

1122
来自专栏13blog.site

Spring+SpringMVC+MyBatis+easyUI整合基础篇(十一)SVN服务器进阶

前言 上一篇文章《Spring+SpringMVC+MyBatis+easyUI整合基础篇(十)SVN搭建》简单的讲了一下SVN服务器的搭建,并没有详细的介绍配...

30610
来自专栏屈定‘s Blog

网站升级HTTPS与HTTP2记录

最近看到两篇文章对于HTTPS与HTTP2两者讲解的很详细,分享并实践一下,正好近期捣鼓了一个个人站点https://mrdear.cn/,可以用来实验. 文章...

3344

扫码关注云+社区