2016-12-18 53 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