supervisor极简教程

最近部署网站,发现supervisor这个包非常好用,但是也有一些小坑,这边写一些必要步骤,帮助有需要的朋友把。

1.安装

pip install supervisor
apt-get install supervisor   

因为我用的Ubuntu,也装了Python环境,所以两条命令都可以用,大家酌情安装

2.生成配置文件(pip需要,apt-get自动生成)

这种配置文件一般都放到/etc里,所以在/etc里创建一个supervisor的文件夹吧

cd /etc
mkdir supervisor    #创建supervisor目录
cd /etc/supervisor
echo_supervisord_conf > /etc/supervisor/supervisord.conf    #生成配置文件
mkdir conf.d            #生成放置具体配置文件的目录

进入到/etc/supervisor 这个目录,可以看到一个supervisord.conf的文件,这就说明已经说明生成配置文件成功了!

3.修改与具体配置

打开supervisord.conf这个文件,可以直接ftp,vim也行,基本啥也不用改,直接拉到最底下,增加两行代码

[include]
files = /etc/supervisor/conf.d/*.ini

顾名思义,会把conf.d里所有的ini文件都加载作为配置文件

拓展:

可以看到supervisord.conf这个文件下有许许多多的配置,还有很多前面加了;符号,这些是注释了的,去掉;就可以生效,比如想加个用户名密码啥的…

配置文件也在里头写清楚了默认在这个位置

[supervisord]
logfile=/tmp/supervisord.log ; main log file; default $CWD/supervisord.log

具体配置:

进入到conf.d里加ini文件,随便命名就行

mkdir /etc/supervisor/conf.d/helloWord.ini    #随便命名生成配置文件

然后编辑helloWord.ini文件,这边我给出三个配置示例

[program:redis]         #命名,会在一会启动中显示
command=/usr/bin/redis-server      #命令语句    (找不到命令的文件夹用whereis查一下就好了)
autostart=true                    #自动启动
autorestart=true                  #自动重启
startsecs=3                      #启动时间

[program:uwsgi]
command=/usr/local/bin/uwsgi --ini /home/project_uwsgi/uwsgi.ini     #(ini后显示uwsgi的ini文件位置)
startsecs=5
autostart=true
autorestart=true

stdout_logfile=/home/supervisor_log/uwsgi.log              #(该进程日志文件存贮的位置)
stderr_logfile=/home/supervisor_log/uwsgi.log

[program:asgi]                               
socket=tcp://localhost:8000
directory=/home/project/
command=/home/project_env/bin/daphne -p 8000 project.asgi:application   #这个例子主要展示虚拟环境下启动
# Number of processes to startup, roughly the number of CPUs you have    #需要到虚拟环境所在位置发送命令
numprocs=1
startsecs=5
autostart=true
autorestart=true

stdout_logfile=/home/supervisor_log/asgi.log
redirect_stderr=true

4.启动与查看状态

supervisord #初始启动
supervisorctl #进入交互式(如果设置秘密,到这一步会出现提示要输入密码)
>update #更新conf配置文件
>status #查看状态

5.常见命令

>reread #每次重写配置后需要先重新读取
>update #重新读取后也需要更新配置文件
>status #查看状态
>restart #重启进程(后面跟进程名称)
   restart asgi
   restart all(重启所有进程)
>stop  #停止进程(后面跟进程名称)
>start  #启动进程(后面跟进程名称)

6.常见错误

单个进程错误,请看单个进程的 日志;supervisor错误看supervisor的日志,好像和没说一样..

其实最常见的错误是守护进程导致的!例如nginx,uwsgi,redis;这些基本都有守护进程,简单来说就是他们都是会自动重启的,你不能通过supervisor来开关,这个就很烦了。

要解决也很简单,找到对应的配置文件,注释掉守护进程就行了,这个配置的特征是“daemon ”

daemon off  #关闭守护进程

这样就可以了。

supervisor本身不是很难,目前基本没再碰到坑了(守护进程这个坑到过),若有再坑,再议!

标签:Supervisor 发布于:2019-10-16 17:03:23