46
votes

I am trying to follow the steps in this guide: http://uwsgi-docs.readthedocs.org/en/latest/tutorials/Django_and_nginx.html

Before I even get to the nginx part I am trying to make sure that uWSGI works correctly

my folder structure is srv/www/domain/projectdatabank/

the project databank folder contains my manage.py file

my wsgi.py file looks like this:

import os
import sys
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()

do you need to see my settings.py?

i get the following error when i point myself to the browser:

-- no python application found, check your startup logs for errors --- [pid: 10165|app: -1|req: -1/1] 66.56.35.151 () {38 vars in 681 bytes} [Tue Jul 9 18:19:46 2013] GET /admin/ => generated 21 bytes in 0 msecs (HTTP/1.1 500) 1 headers in 57 bytes (0 switches on core 0) --- no python application found, check your startup logs for errors --- [pid: 10165|app: -1|req: -1/2] 66.56.35.151 () {36 vars in 638 bytes} [Tue Jul 9 18:19:49 2013] GET / => generated 21 bytes in 0 msecs (HTTP/1.1 500) 1 headers in 57 bytes (0 switches on core 0)

Now when I check my uWGI log it is just the same as above.

6

6 Answers

52
votes

I have solved this

in my original command line did not include full path to the wsgi.py file to run uWSGI

uwsgi --http :8000 --chdir /srv/www/databankinfo.com/projectdatabank/ --wsgi-file wsgi.py

to this

uwsgi --http :8000 --chdir /srv/www/databankinfo.com/projectdatabank/ --wsgi-file full/path/wsgi.py

and it worked

46
votes

For others debugging this same error, there is another possibility: an exception is being thrown by your uwsgi.py. To test this, open a django shell in your app directly with python manage.py shell and import your uwsgi.py (use the same path as in your uwsgi.ini).

14
votes

Check out my blog post on deploying Django behind uwsgi http://blog.johannesklug.de/2012/11/27/deploying-django-behind-nginx-with-uwsgi-and-virtualenv/. I created an ini-File to setup uwsgi, which points to the app callable with the parameter module=project.wsgi:application.

The whole file reads something like this:

(env)[project@host ~]$ cat uwsgi.ini 
[uwsgi]
# path to where you put your project code
chdir=/home/project/project

# python path to the wsgi module, check if you have one
module=project.wsgi:application

# this switch tells uwsgi to spawn a master process,
# that will dynamically spawn new child processes for
# server requests
master=True
# uwsgi stores the pid of your master process here
pidfile=/home/project/master.pid
vacuum=True
# path to your virtual environment
home=/home/project/env/
# path to log file
daemonize=/home/project/log
# this is where you need to point nginx to,
# if you chose to put this in project home make
# sure the home dir is readable and executable by
# nginx
socket=/tmp/uwsgi.sock

### SEE UPDATE NOTICE FOR THIS ONE
env = DJANGO_SETTINGS_MODULE=project.settings

Please note that I'm using virtualenv.

You might also be missing the lines

import os

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "project.settings")

in your wsgi.py

0
votes

Check if u deleted any init.py file from the Djano apps. As django uses them to know which folders are apps, so they are kind of important.

0
votes

I got this error because my /etc/uwsgi/vassals/ ini file for the site I was running had the word "module" misspelled as "modeule". Check that file carefully if you see htis ereror.

0
votes

In uwsgi.ini

Make sure you have set the right module.

[uwsgi]
module = yourapp.wsgi:application
...