I am trying to set up a django project on an intermediate server with nginx, virtualenv and uwsgi, but I keep getting the import module wsgi error.
If theres a community, I can find the answer here ... Thank you all in advance.
These are my configuration files:
uwsgi.py in my django project:
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 configuration
# 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; } }
and, my uwsgi.conf
# file: /etc/init/uwsgi.conf description "uWSGI starter" start on (local-filesystems and runlevel [2345]) stop on runlevel [016] respawn
Nginx logs contain nothing but 500 in access.log, therefore herw uwsgi.log:
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)
I donβt know if anything related to my project has anything to do with it, but in any case the control file is used, which I use to redirect django utilities:
manage.sh
#!/bin/bash python ./project/configs/${DEPLOYMENT_TARGET:="common"}/manage.py $*
and just in case, as I created the django project:
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