天天看点

supervisor管理uwsgi运行的项目

supervisor管理uwsgi运行的项目

环境 :ubuntu16.04+supervisor+uwsgi

后台进程管理工具supervisor

​ 通过查看supervisor的官方文档,发现supervisor目前只能运行在python2的版本中,但我们开发中常用的是Python3版本,还好我们项目一般建在虚拟环境中,于是就可以在外部python2的环境下使用supervisor管理虚拟环境内部的项目.

说明:

我使用的python版本管理工具是pyenv,非常方便,之前的博客也有介绍,想安装的可以看一下,哈哈哈.(https://blog.csdn.net/yingfeng_yang/article/details/82527321)

1.安装后台管理工具

将python切换到python2的版本
    pyenv global 2.7.14
    使用apt安装supervisor
    sudo apt install supervisor
           

2.测试是否安装

sudo supervisorctl

出现supervisor>说明安装成功
           

supervisor管理uwsgi运行的项目

说明:

之前博客有提到使用uwsgi+django+nginx运行项目(https://blog.csdn.net/yingfeng_yang/article/details/82531258),不过有一个问题,uwsgi可以后台运行,不过启动与关闭很不方便,需要使用supervisor控制项目的开关.

1.创建项目的配置(我们使用apt安装的,配置文件一般在/etc/下)  

cd /etc/supervisor/conf.d
    配置文件的名字一般使用项目名.conf,我以todolist项目为例
    sudo vim todolist.conf
------------------------------------------------------------------------        [program:todolist]
    
    directory = /home/yfx/download/todolist
    command =/home/yfx/.pyenv/versions/todolist/bin/uwsgi --http :8000 --            chdir=/home/yfx/download/todolist --module todolist.wsgi --threads 
    user = yfx
    stdout_logfile = /home/yfx/download/todolist/log/uwsgi_stdout.log
    stderr_logfile = /home/yfx/download/todolist/log/uwsgi_stderr.log
    redirect_stderr = True
    environment = PRODUCTION=1
    -----------------------------------------------------------------------------
    [program:todolist]   你项目的名字
    
    directory = /home/yfx/download/todolist 项目跟目录的绝对路径
    command 启动命令(注意:uwsgi应使用用虚拟环境中安装的uwsgi的绝对路径)
    --http :8000 端口
    --chdir=/home/yfx/download/todolist 项目根目录
    user 用户名
    stdout_logfile 输出日志
    stderr_logfile 错误日志 
    redirect_stderr = True 开启错误日志输出
    environment = PRODUCTION=1 使用生产环境
2.重新加载supervisor
    sudo supervisorctl reload
3.启动supervisor
    sudo supervisorctl
    如果出现下面状态,说明管理项目成功
    todolist                         RUNNING   pid 97392, uptime 0:00:03
supervisor>
    可以直接使用stop todolist关闭项目,start todolist 开启项目
    supervisor> stop todolist
    todolist: stopped
    supervisor> start todolist
    todolist: started    
           

supervisor运行错误

退出太快错误

todolist                         BACKOFF   Exited too quickly (process log may have details)
           

原因可能有一下几个:

1.使用了python2下的uwsgi直接运行的项目,我们的项目是用Python3写的,当然要用python3下安装的uwsgi

此原因错误检查方法:

将上述配置中的command的命名直接在python2的命令行下运行,如果,运行成功,可排除该原因造成的错误.

2.你的项目可能开了多进程

即在运行django项目是加了–processes 4

当你使用stop todolist关闭项目时,进程只关闭了一个,自然会出现异常

3.日志文件或项目根目录出错

存放日志文件的目录没有存在,或项目根目录路径出错都会出现这种问题

转载 : https://blog.csdn.net/yingfeng_yang

继续阅读