2013-12-22 2 views
0

나는 gunicorn을 실행하기 위해 bash 스크립트를 사용합니다. 그것은 잘 작동

[/home/flame/Projects/new_project]$ bash run_gunicorn.sh 

: 나는이 프로젝트 디렉토리에서 실행하는 경우 그것은

#!/bin/bash 
NAME=new_project 
DJANGODIR=/home/flame/Projects/$NAME 
SOCKFILE=/home/flame/launch/web.sock 
USER=flame        
GROUP=flame              
DJANGO_SETTINGS_MODULE=$NAME.settings 
DJANGO_WSGI_MODULE=$NAME.wsgi 

# export PWD=$DJANGODIR # still not work if I uncomment THIS LINE 

RUNDIR=$(dirname $SOCKFILE) 
test -d $RUNDIR || mkdir -p $RUNDIR 
gunicorn ${DJANGO_WSGI_MODULE}:application \ 
    --name $NAME \ 
    --workers 7 \ 
    --user=$USER --group=$GROUP \ 
    --log-level=debug \ 
    --bind=unix:$SOCKFILE 

_run_gunicorn.sh_ 지정됩니다. 그러나

[~]$ bash Projects/new_project/run_gunicorn.sh 

경우 오류가 발생합니다 :

gunicorn.errors.HaltServer: <HaltServer 'Worker failed to boot.' 3> 

나는 그것이 현재 작업 디렉토리에 대한 추측. 그래서 나는 export PWD=$DJANGODIR을 변경하기 전에 gunicorn을 실행합니다. 그러나 오류가 남아 있습니다.

일부 파이썬 관련 환경 변수입니까? 또는 무엇이 문제입니까?

export PWD=$DJANGODIR 

당신이 실제로 현재 작업 디렉토리를 변경하지 않는 사용

+0

'export PWD = ...'대신'cd "$ DJANGODIR"'를 사용하십시오. – robertklep

답변

3

. set 뒤에 pwd 명령을 사용하여 쉘에서 쉽게 확인할 수 있습니다. 스크립트에

cd $DJANGODIR 

등의 문자를 포함시켜야합니다.

+0

Learned! 그러나 둘에 대한 차이점에 대해서는 여전히 궁금합니다. 프로그램이 쉘 프로세스의 환경 변수 PWD에서 현재 작업 디렉토리가 아닌가? 아니면 다른 방법으로? –

+0

bash의 매뉴얼 페이지에 따르면 env 변수 인 'PWD'는 쉘에 의해 자동으로 설정됩니다. 이렇게하면 현재 작업 디렉토리를 저렴하게 찾을 수 있습니다. 이 env 변수가 읽기 전용이 아닌 것은 약간 이상합니다. 그래서 당신은 그것을 변경할 수 있지만 쉘은 자동으로 작업 디렉토리를 변경하지 않습니다. –

+0

스크립트 내에서 디렉토리를 변경하면 해당 스크립트에만 로컬로 변경됩니다. 스크립트를 시작한 쉘의 디렉토리는 변경되지 않습니다. – robertklep

관련 문제