47

我正在尝试按照本指南中的步骤操作: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 日志时,它和上面的一样。

4

6 回答 6

52

我已经解决了这个

在我原来的命令行中没有包含运行 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

它奏效了

于 2013-07-09T18:45:45.530 回答
47

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

于 2015-08-07T18:02:00.267 回答
14

查看我关于在 uwsgi 后面部署 Django 的博文http://blog.johannesklug.de/2012/11/27/deploying-django-behind-nginx-with-uwsgi-and-virtualenv/。我创建了一个 ini-File 来设置 uwsgi,它指向可使用参数调用的应用程序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

请注意,我使用的是 virtualenv。

你可能也错过了这些行

import os

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

在你的wsgi.py

于 2013-07-09T18:44:01.523 回答
0

检查你是否从 Djano 应用程序中删除了任何init .py 文件。由于 django 使用它们来知道哪些文件夹是应用程序,所以它们很重要。

于 2019-07-29T11:31:28.623 回答
0

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

于 2020-05-13T13:55:27.077 回答
0

uwsgi.ini

确保您设置了正确的module.

[uwsgi]
module = yourapp.wsgi:application
...
于 2020-08-26T10:08:21.330 回答