Nginx, virtualenv ve uwsgi ile bir hazırlama sunucusunda django projemi kurmaya çalışıyorum, ancak bir içe aktarma modülü wsgi hatası alıyorum.Django, Virtualenv, nginx + uwsgi içe aktarma modülü wsgi hatası
Burada bir topluluk varsa, bir cevap burada bulabilir ... Önceden teşekkür ederiz. Benim django proje üzerinde
uwsgi.py:
Bu benim yapılandırma dosyalarıdır
import os
import sys
import site
site.addsitedir(os.path.join(os.environ['WORKON_HOME'],'project/lib/python2.6/site-packages'))
sys.path.append(os.path.abspath(os.path.dirname(__file__)))
sys.path.append(os.path.join(os.path.realpath(os.path.dirname(__file__)), '../../../'))
sys.path.append(os.path.join(os.path.realpath(os.path.dirname(__file__)), '../../'))
os.environ['DJANGO_SETTINGS_MODULE'] = 'project.configs.staging.settings'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
Nginx Yapılandırma
# nginx configuration for project.maumercado.com
server {
server_name project.maumercado.com;
access_log /home/ubuntu/logs/project/nginx/access.log;
error_log /home/ubuntu/logs/project/nginx/error.log;
location/{
uwsgi_pass unix:/tmp/uwsgi.sock;
include /etc/nginx/uwsgi_params;
}
location /static {
root /home/ubuntu/django-projects/project/project/media;
}
location /media {
root /home/ubuntu/django-projects/project/project/media;
}
}
ve benim uwsgi.conf
# file: /etc/init/uwsgi.conf
description "uWSGI starter"
start on (local-filesystems and runlevel [2345])
stop on runlevel [016]
respawn
# home - is the path to our virtualenv directory
# pythonpath - the path to our django application
# module - the wsgi handler python script
exec /home/ubuntu/ve/project/bin/uwsgi \
--uid www-data \
--pythonpath /home/ubuntu/django-projects/project/project/configs/staging/ \
--socket /tmp/uwsgi.sock \
--chmod-socket \
--module wsgi \
--logdate \
--optimize 2 \
--processes 2 \
--master \
--logto /home/ubuntu/logs/project/uwsgi.log
Nginx lo neyse heres
Mon Feb 6 13:58:23 2012 - *** Starting uWSGI 1.0.2.1 (32bit) on [Mon Feb 6 13:58:23 2012] ***
Mon Feb 6 13:58:23 2012 - compiled with version: 4.4.5 on 06 February 2012 12:32:36
Mon Feb 6 13:58:23 2012 - current working directory:/
Mon Feb 6 13:58:23 2012 - detected binary path: /home/ubuntu/ve/project/bin/uwsgi
Mon Feb 6 13:58:23 2012 - setuid() to 1000
Mon Feb 6 13:58:23 2012 - your memory page size is 4096 bytes
Mon Feb 6 13:58:23 2012 - chmod() socket to 666 for lazy and brave users
Mon Feb 6 13:58:23 2012 - uwsgi socket 0 bound to UNIX address /tmp/uwsgi.sock fd 3
Mon Feb 6 13:58:23 2012 - Python version: 2.6.6 (r266:84292, Sep 15 2010, 16:02:57) [GCC 4.4.5]
Mon Feb 6 13:58:23 2012 - Set PythonHome to /home/ubuntu/ve/project
Mon Feb 6 13:58:23 2012 - Python main interpreter initialized at 0x9a9d740
Mon Feb 6 13:58:23 2012 - your server socket listen backlog is limited to 100 connections
Mon Feb 6 13:58:23 2012 - *** Operational MODE: preforking ***
Mon Feb 6 13:58:23 2012 - added /home/ubuntu/django-projects/project/ to pythonpath.
ImportError: No module named wsgi
Mon Feb 6 13:58:23 2012 - unable to load app 0 (mountpoint='') (callable not found or import error)
Mon Feb 6 13:58:23 2012 - *** no app loaded. going in full dynamic mode ***
Mon Feb 6 13:58:23 2012 - *** uWSGI is running in multiple interpreter mode ***
Mon Feb 6 13:58:23 2012 - spawned uWSGI master process (pid: 551)
Mon Feb 6 13:58:23 2012 - spawned uWSGI worker 1 (pid: 588, cores: 1)
Mon Feb 6 13:58:23 2012 - spawned uWSGI worker 2 (pid: 589, cores: 1)
projemi kurmak yolu onunla ilgisi olup olmadığını bilmiyorum, ama: gs access.log bir 500 dışında bir şey ifade, çok heres uwsgi.log gelmez
manage.sh
#!/bin/bash
python ./project/configs/${DEPLOYMENT_TARGET:="common"}/manage.py $*
ve her ihtimale karşı bu bir django projesini kurdunuz nasıl:
project
|-manage.sh -> this fellow is redirected to settings.py (production, common or staging)
|-requirements.txt
|-README
|-dashbard.py
|-project.sqlite
|- project/
|- apps
|- accounts
|-other internal apps
|- configs
|- common -> for local development
|-settings.py
|-manage.py
|-urls
|-staging
|-manage.py
|-settings.py
|-wsgi.py
|-logging.conf
|-production
|-manage.py
|-settings.py
|-wsgi.py
|-logging.conf
|-media
|-templates
django yardımcı programlarını yönlendirmek için kullanın dosyayı yönetme
import os
import sys
import site
site.addsitedir(os.path.join('/home/ubuntu/ve','project/lib/python2.6/site-packages'))
sys.path.append(os.path.abspath(os.path.dirname(__file__)))
sys.path.append(os.path.join(os.path.realpath(os.path.dirname(__file__)), '../../../'))
sys.path.append(os.path.join(os.path.realpath(os.path.dirname(__file__)), '../../'))
os.environ['DJANGO_SETTINGS_MODULE'] = 'project.configs.staging.settings'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
: 0
Birden çok proje için yaptığım şey, uwsgi Debian paketini kullanmaktır. Init betikleri, bazı varsayılan .ini ayarları dosyaları ile birlikte gelir ve her bir projeyi yönetir. Her dosya için bir konfigürasyona ve her biri için farklı bir sokete (varsayılan olarak işlenir) ihtiyacınız vardır ve hepsi aynı sistemde iyi çalışırlar.Debian'da olmasanız bile, init komut dosyalarını ve yapılandırma düzenini Debian paketinden hala kullanabilirsiniz: http://ftp.de.debian.org/debian/pool/main/u/uwsgi/uwsgi_1.2.3 + dfsg.orig.tar.gz – freb