解决Supervisor和Django中的致命状态

时间:2017-11-23 22:54:09

标签: django ubuntu gunicorn

我正在使用Digital Ocean Ubuntu服务器来部署我的Django项目并按照本指南进行设置:A Complete Beginner's Guide to Django - Part 7

我是配置Gunicorn和Supervisor的过程,我收到以下错误:

enter image description here

我以非root身份登录,但我创建的sudo用户名为betofolio。我的django项目叫做betofolio。

下面是我的文件夹的截图: enter image description here

按照教程中的步骤进行操作:

在/ home / betofolio中创建名为gunicorn_start的新文件:

vim gunicorn_start 

我插入以下内容:

#!/bin/bash

NAME="betofolio"
DIR=/home/betofolio/betofolio
USER=betofolio
GROUP=betofolio
WORKERS=3
BIND=unix:/home/betofolio/run/gunicorn.sock
DJANGO_SETTINGS_MODULE=betofolio.settings
DJANGO_WSGI_MODULE=betofolio.wsgi
LOG_LEVEL=error

cd $DIR
source ../venv/bin/activate

export DJANGO_SETTINGS_MODULE=$DJANGO_SETTINGS_MODULE
export PYTHONPATH=$DIR:$PYTHONPATH

exec ../venv/bin/gunicorn ${DJANGO_WSGI_MODULE}:application \
  --name $NAME \
  --workers $WORKERS \
  --user=$USER \
  --group=$GROUP \
  --bind=$BIND \
  --log-level=$LOG_LEVEL \
  --log-file=-

然后我保存并退出。

使此文件可执行:

chmod u+x gunicorn_start

创建两个空文件夹,一个用于套接字文件,另一个用于存储日志:

mkdir run logs

配置主管

在/ home / betofolio / logs /文件夹中创建一个空日志文件:

touch logs/gunicorn.log

现在创建一个新的超级用户文件:

sudo vim /etc/supervisor/conf.d/betofolio.conf

[program:betofolio]
command=/home/betofolio/gunicorn_start
user=betofolio
autostart=true
autorestart=true
redirect_stderr=true
stdout_logfile=/home/betofolio/logs/gunicorn.log

然后:

sudo supervisorctl reread
sudo supervisorctl update

现在检查状态:

sudo supervisorctl status betofolio

我得到: enter image description here

我是linux和网络的新手,所以我不知道如何解决这个问题

1 个答案:

答案 0 :(得分:0)

我正在遵循相同的指南,并遇到了同样的问题。为我解决的是我意识到我的虚拟环境中没有安装gunicorn。我做了pip3 install gunicorn,但你需要做pip install gunicorn。如果它说你没有得到许可,你可能不得不说sudo(sudo pip install gunicorn

  1. 进入logs文件夹,然后打开gunicorn.logs。此文件位于/ home /(user)/ logs中,并键入less gunicorn.logs以查看它。它会告诉你它为什么会失败。在我的情况下,它说它无法在gunicorn_start文件中指定的位置找到gunicorn。
  2. 确保已激活虚拟环境命令行变为(name of virtual env) $...
  3. cd到/ home /(user)/(venv)/ bin,然后输入ls以查看目录中的文件,并查看gunicorn是否在那里。
  4. 修复后,它仍然无法运行,我在日志文件中意识到我在gunicorn_start文件中有一些拼写错误,因此日志文件非常便于排除故障。