前言:
Linux下让程序后台运行的方法有很多,例如: nohuop、screen、supervisor等。
在我之前写一键脚本时,我一直喜欢使用 nohup server.py &这样的方法来使得程序后台运行。我们只需要在/etc/rc.local中追加上nohup server.py &这样就能保证程序开机自启。
在运行中发现一个问题,nohup会自动断开?
所以我写了这篇文章,来详细解释nohup断开的原因及处理办法: nohup自动断开原因及处理办法
俗话说,技多不压身,所以我下面详细介绍在Centos和Debian下的Supervisor的详细安装运行方法。
先说说安装方法:
Debian:
Centos:
yum install supervisor -y
还有一种采用python-pip来安装,我不推荐这种方式,这种方式安装之后不会有配置文件。
而是需要我们自己复制配置文件到/etc/文件夹。
安装方法如下:
Debian:
pip install supervisor
wget -N -P /etc/ --no-check-certificate https://coding.net/u/cvc/p/supervisor/git/raw/master/supervisord.conf
Centos:
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/supervisord.conf
添加程序时,我们需要在conf.d文件夹下新建程序,保持后缀为conf即可,例如1.conf
在1.conf追加以下内容:
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 #将程序错误信息重定向到该文件
文件很杂乱,我们一般只需要用到以下配置:
user=root #指定运行用户
command=bash /root/1.sh #启动程序的命令
Centos文件路径:
我们只需要在supervisord.conf后面追加或者调用/etc/supervisord.d/*.ini文件。
所以我们有两种办法来建立程序,一般我推荐第一种,直接在supervisor.conf后面追加。
里面追加以下内容:
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 #将程序错误信息重定向到该文件
文件很杂乱,我们一般只需要用到以下配置:
user=root #指定运行用户
command=bash /root/1.sh #启动程序的命令
所以我们总结一下,Debian和Centos的Supervisor配置文件异同点如下:
差异:
Centos配置位于supervisord.d/下,后缀为.ini
相同点:
运行均相同,相关命令如下:
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中,追加内容如下:
port = 0.0.0.0:14502 #IP和绑定端口
username = root #管理员名称
password = 123456 #管理员密码
然后通过http://ip:9001即可在线管理supervisor程序。
后记:Supervisor的安装方法不算麻烦,但是在制作一键脚本时,我们需要对用户的系统进行判断,然后执行相应的安装方法,以及记录下安装文件路径,然后才能去追加程序文件,这样才能达到自动化运行的方法。切记不要混淆Debian和Centos的配置文件以及路径,不然会出现添加的程序无法自启等情况。
请教一个问题,就是按你说的配置安装Supervisor后,重启vps后,Supervisor不会自己启动~
开机执行supervisord -c /etc/supervisord.conf加载配置启动,或者将此配置文件写到rc.local即可开机自启。或者看这篇文章,自行加入启动程序:https://www.2cto.com/kf/201704/567567.html