Django和uWSGI的内部服务器错误

时间:2013-07-09 18:37:14

标签: django uwsgi

我正在尝试按照本指南中的步骤操作:http://uwsgi-docs.readthedocs.org/en/latest/tutorials/Django_and_nginx.html

在我进入nginx部分之前,我正在尝试确保uWSGI正常工作

我的文件夹结构是srv / www / domain / projectdatabank /

项目数据库文件夹包含我的manage.py文件

我的wsgi.py文件如下所示:

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

你需要看看我的settings.py吗?

当我指向浏览器时,我收到以下错误:

-- 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)

现在,当我检查我的uWGI日志时,它与上面的相同。

6 个答案:

答案 0 :(得分:44)

我已经解决了这个问题

我的原始命令行中的

没有包含运行uWSGI的wsgi.py文件的完整路径

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

到这个

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

并且有效

答案 1 :(得分:37)

对于调试此相同错误的其他人,还有另一种可能性:uwsgi.py引发异常。要对此进行测试,请使用python manage.py shell直接在您的应用中打开django shell,然后导入uwsgi.py(使用与uwsgi.ini中相同的路径)。

答案 2 :(得分:12)

查看关于在uwsgi http://blog.johannesklug.de/2012/11/27/deploying-django-behind-nginx-with-uwsgi-and-virtualenv/后面部署Django的博客文章。我创建了一个ini-File来设置uwsgi,它指向可以使用参数module=project.wsgi:application调用的app。

整个文件的内容如下:

(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

请注意我正在使用virtualenv。

您可能也错过了

import os

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "project.settings")
在你的wsgi.py

答案 3 :(得分:0)

检查是否从Djano应用程序中删除了任何 init .py文件。 django使用它们来了解哪些文件夹是应用程序,因此它们很重要。

答案 4 :(得分:0)

我收到此错误是因为我正在运行的站点的/ etc / uwsgi / vassals / ini文件中的“模块”一词拼写为“ modeule”。如果看到htis ereror,请仔细检查该文件。

答案 5 :(得分:0)

uwsgi.ini

确保设置了正确的module

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