首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django应用程序没有与Gunicorn和Supervisor一起运行

Django应用程序没有与Gunicorn和Supervisor一起运行
EN

Stack Overflow用户
提问于 2017-12-12 14:53:43
回答 1查看 934关注 0票数 0

我正在试图运行一个Django申请从古尼科恩和监督。我已经将bash脚本配置为从gunicorn运行应用程序,它工作得很好,我能够看到GUI,但是当我试图从supervisorctl启动这个应用程序时。我无法看到GUI。然而,Gunicorn进程正在运行。

gunicorn_start2

代码语言:javascript
复制
#!/bin/bash
export ANALYTICS_ENV="dev"
NAME="analytics"                                  # Name of the application
DJANGODIR=/home/ubuntu/code/current/analytics/analytics/analysis/             # Django project directory
SOCKFILE=/home/ubuntu/code/current/analytics/analytics/run/gunicorn.sock  # we will communicte using this unix socket
USER=ubuntu                                       # the user to run as
GROUP=ubuntu                                     # the group to run as
NUM_WORKERS=3                                     # how many worker processes should Gunicorn spawn
DJANGO_SETTINGS_MODULE=analytics.settings             # which settings file should Django use
DJANGO_WSGI_MODULE=analytics.wsgi                     # WSGI module name

echo "Starting $NAME as `whoami`"

# Activate the virtual environment
cd $DJANGODIR
echo $DJANGODIR
source /home/ubuntu/code/current/analytics/analytics/bin/activate
export DJANGO_SETTINGS_MODULE=$DJANGO_SETTINGS_MODULE
#export PYTHONPATH=$DJANGODIR:$PYTHONPATH
#export PYTHONPATH=/home/ubuntu/code/analytics/bin/python
# Create the run directory if it doesn't exist
RUNDIR=$(dirname $SOCKFILE)
test -d $RUNDIR || mkdir -p $RUNDIR

# Start your Django Unicorn
# Programs meant to be run under supervisor should not daemonize themselves (do not use --daemon)
exec /home/ubuntu/code/current/analytics/bin/gunicorn ${DJANGO_WSGI_MODULE}:application \
  --name $NAME \
  --workers $NUM_WORKERS \
  --user=$USER --group=$GROUP \
  --bind=unix:$SOCKFILE \
  --log-level=all \
  --log-file=-

gunicorn_start.conf

代码语言:javascript
复制
[program:analytics]
command = bash /home/ubuntu/code/current/analytics/analytics/analysis/gunicorn_start2                    ; Command to start app
user = ubuntu                                    ; User to run as
stdout_logfile = /home/ubuntu/code/current/analytics/analytics/analysis/gunicorn_start2.log   ; Where to write log messages
redirect_stderr = true                                                ; Save stderr in the same log
environment=LANG=en_US.UTF-8,LC_ALL=en_US.UTF-8,ANALYTICS_ENV=dev                     ; Set UTF-8 as default encoding

Gunicorn进程:

代码语言:javascript
复制
(analytics) ubuntu@ip-172-31-25-151:~/code/current/analytics/analytics/analysis$ ps aux | grep [g]unicorn
ubuntu   16039  0.3  0.9  57152 18436 ?        S    14:47   0:00 /home/ubuntu/code/current/analytics/bin/python2 /home/ubuntu/code/current/analytics/bin/gunicorn analytics.wsgi:application --name analytics --workers 3 --user=ubuntu --group=ubuntu --bind=unix:/home/ubuntu/code/current/analytics/analytics/run/gunicorn.sock --log-level=all --log-file=-
ubuntu   16050  1.1  2.3 276744 48792 ?        Sl   14:47   0:00 /home/ubuntu/code/current/analytics/bin/python2 /home/ubuntu/code/current/analytics/bin/gunicorn analytics.wsgi:application --name analytics --workers 3 --user=ubuntu --group=ubuntu --bind=unix:/home/ubuntu/code/current/analytics/analytics/run/gunicorn.sock --log-level=all --log-file=-
ubuntu   16053  1.1  2.3 276760 47212 ?        Sl   14:47   0:00 /home/ubuntu/code/current/analytics/bin/python2 /home/ubuntu/code/current/analytics/bin/gunicorn analytics.wsgi:application --name analytics --workers 3 --user=ubuntu --group=ubuntu --bind=unix:/home/ubuntu/code/current/analytics/analytics/run/gunicorn.sock --log-level=all --log-file=-
ubuntu   16056  1.1  2.3 276768 47228 ?        Sl   14:47   0:00 /home/ubuntu/code/current/analytics/bin/python2 /home/ubuntu/code/current/analytics/bin/gunicorn analytics.wsgi:application --name analytics --workers 3 --user=ubuntu --group=ubuntu --bind=unix:/home/ubuntu/code/current/analytics/analytics/run/gunicorn.sock --log-level=all --log-file=-
(analytics) ubuntu@ip-172-31-25-151:~/code/current/analytics/analytics/analysis$

问题似乎与环境变量有关。因为当我试图运行python manage.py runserver时,它也不起作用。但是当我运行ANALYTICS_ENV=dev python manage.py runserver时,它就开始工作了。

然而,无论如何,我都无法用火鸟来运行它。

有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-12-13 09:03:16

通过以下步骤解决了这一问题。

  1. 源虚拟
  2. 出口ANALYTICS_ENV。
  3. 出口虚拟的PYTHONPATH

主管配置:

代码语言:javascript
复制
[program:analytics]
command = gunicorn analytics.wsgi:application --name analytics --workers 4 --user=ubuntu --timeout=3600 --bind 127.0.0.1:8000 ; Command to start app
user = ubuntu ; User to run as
stdout_logfile = /home/code/example/gunicorn_start2.log ; Where to write log messages
redirect_stderr = true ; Save stderr in the same log
environment=LANG=en_US.UTF-8,LC_ALL=en_US.UTF-8,ANALYTICS_ENV=dev,PYTHONPATH=/home/ubuntu/code/current/analytics/bin/python ; Set UTF-8 as default encoding
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47775501

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档