Django和uWSGI的内部服务器错误

tar*_*req 41 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()
Run Code Online (Sandbox Code Playgroud)

你需要看看我的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日志时,它与上面的相同.

tar*_*req 48

我解决了这个问题

在我的原始命令行中没有包含运行uWSGI的wsgi.py文件的完整路径

uwsgi --http :8000 --chdir /srv/www/databankinfo.com/projectdatabank/ --wsgi-file wsgi.py
Run Code Online (Sandbox Code Playgroud)

对此

uwsgi --http :8000 --chdir /srv/www/databankinfo.com/projectdatabank/ --wsgi-file full/path/wsgi.py
Run Code Online (Sandbox Code Playgroud)

它起作用了


Fra*_*ris 43

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

  • @AlexVanLiew完全适合添加更多信息来调试问题.现有答案仅解决一个可能的错误(路径).你是谁判断人们应该为SO做出什么贡献? (28认同)
  • @AlexVanLiew - SO与论坛不同.这里[回答旧问题](http://meta.stackexchange.com/questions/23996/does-it-make-sense-to-answer-old-questions)并不合适.事实上,有一个[necromancer](http://stackoverflow.com/help/badges/17/necromancer)徽章.如果有任何问题的信息,无论是否回答,都可能为未来的访问者增加价值,那么就应该加以补充.这就是问答网站的全部目的. (13认同)
  • 好吧,我刚刚在我的日志中使用完全相同的错误消息调试了这个确切的问题,这是因为在uwsgi.py中抛出异常.所以,你的直觉是错误的. (7认同)
  • 对这个答案的极端**有用性**的另一次投票.我的错误是我的日志配置,甚至uwsgi,@ AlexVanLiew,我收到同样的确切消息.我没想到只打开一个shell(甚至不必导入uwsgi).UWSGI是错误的_awful_并且完全不透明,所以需要任何有助于调试UWSGI引发的错误消息的东西. (6认同)
  • 可能导致此错误消息的另一个问题是db无法正确连接。我偶然发现了这个,只是忘记了密码。棘手的是,由于使用了.pgpass(PostgreSQL)的密码,因此`manage.py dbshel​​l`不一定能揭示这一点。 (2认同)

roo*_*web 13

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

整个文件的内容如下:

(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
Run Code Online (Sandbox Code Playgroud)

请注意,我正在使用virtualenv.

你可能也会错过这些台词

import os

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "project.settings")
Run Code Online (Sandbox Code Playgroud)

在你的wsgi.py中