2017-12-12 20 views
0

gungorn 및 supervisord에서 Django 응용 프로그램을 실행하려고합니다. 나는 잘 작동하고 GUI를 볼 수 있지만 내가 supervisorctl 에서이 응용 프로그램을 시작하려고했을 때 gunicorn에서 응용 프로그램을 실행하는 bash 스크립트를 구성했습니다. 나는 GUI를 볼 수 없다. 그러나 Gunicorn 프로세스가 실행 중입니다.Django 응용 프로그램이 Gunicorn 및 Supervisor로 실행되지 않습니다.

gunicorn_start2

#!/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

[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 프로세스는 : ​​

(analytics) [email protected]:~/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) [email protected]:~/code/current/analytics/analytics/analysis$ 

이 문제가 환경 변수 것 같다. 왜냐하면 내가 실행하려 할 때 python manage.py runserver도 작동하지 않기 때문입니다. 하지만 내가 ANALYTICS_ENV=dev python manage.py runserver을 실행하면 작동합니다.

그러나 어쨌든 나는 gunicorn으로 실행할 수 없습니다.

아이디어가 있으십니까?

+0

"'파이썬 manage.py의 runserver'가 작동하지 않습니다." 방법? 일부 로그/추적을 제공 할 수 있습니까? – vmonteco

+0

환경 변수를 내보내거나 파트 아래에 붙어 있으면 작동합니다. '시스템 검사 수행 중 ... 시스템 검사로 문제 없음 (0 개 음소거). December 12, 2017 - 15:29:09 'analytics.settings'설정을 사용하는 Django 버전 1.9 http://127.0.0.1:8000/에서 개발 서버 시작 CONTROL-C를 사용하여 서버를 종료하십시오. ' –

+0

Gunicorn은 PYTHONPATH의 export PYTHONPATH = "/ home/ubuntu/code/current/analytics/bin/python"을 내보내기 후에 작업을 시작하지만 로그인 쉘에서 시작합니다. 여전히 스크립트에서 실행할 수 없습니다. –

답변

0

이것은 아래 단계에 의해 해결되었습니다.

  1. 소스 VIRTUALENV
  2. 수출 ANALYTICS_ENV.
  3. 가상 PENTHONPATH를 내 보냅니다.

관리자 구성 :

[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