2016-12-18 55 views
0

Gunicorn設置我試圖部署使用Djangovirtualenvwrapper它做了一個試驗場地。我想用nginx來請求。我使用Taskbuster的教程。所以我的項目層是類似如下:爲virtualenvwrapper

--abctasarim      **main folder 
--manage.py      **django manage file 
----/yogavidya      ** project folder 
----/yogavidya/wsgi.py    **wsgi file 
----/yogavidya/settings/base.py ***settings 

我準備了一個腳本使用gunicorn。我解決的virtualenv到virtualenvwrapper ENVS

#!/bin/bash 

NAME="yogavidya"        #Name of the application (*) 
DJANGODIR=/home/ytsejam/public_html/abctasarim  # Django project directory (*) 
SOCKFILE=/home/ytsejam/public_html/abctasarim/run/gunicorn.sock  # we will communicate using this unix socket (*) 
USER=ytsejam          # the user to run as (*) 
GROUP=webdata          # the group to run as (*) 
NUM_WORKERS=1          # how many worker processes should Gunicorn spawn (*) 
DJANGO_SETTINGS_MODULE=yogavidya.settings.base   # which settings file should Django use (*) 
DJANGO_WSGI_MODULE=yogavidya.wsgi      # WSGI module name (*) 

echo "Starting $NAME as `whoami`" 

# Activate the virtual environment 
cd $DJANGODIR 
source /home/ytsejam/.virtualenvs/yv_dev/bin/activate 
#export /home/ytsejam/.virtualenvs/yv_dev/bin/postactivate 
export DJANGO_SETTINGS_MODULE=$DJANGO_SETTINGS_MODULE 
export PYTHONPATH=$DJANGODIR:$PYTHONPATH 

# 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/ytsejam/public_html/abctasarim/gunicorn \ 
    --name $NAME \ 
    --workers $NUM_WORKERS \ 
    --env DJANGO_SETTINGS_MODULE=$DJANGO_SETTINGS_MODULE \ 
    --pythonpath $DJANGODIR \ 
    --user $USER \ 
    --bind=unix:$SOCKFILE yogavidya.wsgi:application 

當我嘗試運行它,我得到一個錯誤對我的服務文件:

... 
ImportError: No module named ' ' 
... 

如何解決我的腳本正確服務的網站?

感謝

回答

1

virtualenvwrapper應該是你在開發中使用了什麼。你想使用virtualenvwrapper是建立在-的virtualenv包的包來部署。最好的建議,我對你如何使這項工作是嘗試,你通常會使用來啓動virtualenvwrapper環境的步驟,即採購shell腳本,然後使用workon

NAME="yogavidya"        #Name of the application (*) 
DJANGODIR=/home/ytsejam/public_html/abctasarim  # Django project directory (*) 
SOCKFILE=/home/ytsejam/public_html/abctasarim/run/gunicorn.sock  # we will communicate using this unix socket (*) 
USER=ytsejam          # the user to run as (*) 
GROUP=webdata          # the group to run as (*) 
NUM_WORKERS=1          # how many worker processes should Gunicorn spawn (*) 
DJANGO_SETTINGS_MODULE=yogavidya.settings.base   # which settings file should Django use (*) 
DJANGO_WSGI_MODULE=yogavidya.wsgi      # WSGI module name (*) 

echo "Starting $NAME as `whoami`" 

# Activate the virtual environment 
cd $DJANGO_DIR 
source /path/to/virtualenvwrapper.sh 
workon yv_dev 

你也應該只需在命令行中調用gunicorn,然後執行activat就可以完成virtualenv。


這裏是你如何可以virtualenv做到這一點:

cd /home/ytsejam/public_html/abctasarim 
sudo pip install virtualenv 
virtualenv . 
. bin/activate 
pip install -r requirements.txt 
pip install gunicorn 

gunicorn腳本:

NAME="yogavidya"        #Name of the application (*) 
DJANGODIR=/home/ytsejam/public_html/abctasarim  # Django project directory (*) 
SOCKFILE=/home/ytsejam/public_html/abctasarim/run/gunicorn.sock  # we will communicate using this unix socket (*) 
USER=ytsejam          # the user to run as (*) 
GROUP=webdata          # the group to run as (*) 
NUM_WORKERS=1          # how many worker processes should Gunicorn spawn (*) 

cd $DJANGO_DIR 
. bin/activate 

# Create the run directory if it doesn't exist 
RUNDIR=$(dirname $SOCKFILE) 
test -d $RUNDIR || mkdir -p $RUNDIR 

exec /home/ytsejam/public_html/abctasarim/bin/gunicorn \ 
    --name $NAME \ 
    --workers $NUM_WORKERS \ 
    --user $USER \ 
    --bind=unix:$SOCKFILE yogavidya.wsgi:application 
+0

基本上,我只是失去了一次嘗試使用virtualenvwrapper,我明白了嗎? – ytsejam

+0

這是一個問題嗎? – 2ps

+0

是的,但讓自己確信,我不需要它,我只需要安裝應用程序進行生產僅的virtualenv和部署。我可以從命令行gunicorn的工作,但我不能讓它從劇本的工作,總是說「導入錯誤:沒有名爲' 模塊」 – ytsejam