Внутренняя ошибка сервера с 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, он такой же, как и выше.
Ответы
Ответ 1
Я решил это
в моей исходной командной строке не включался полный путь к файлу wsgi.py для запуска uWSGI
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
и он работал
Ответ 2
Для других, отлаживающих эту же ошибку, есть еще одна возможность: исключение генерируется вашим uwsgi.py
. Чтобы проверить это, откройте оболочку django в приложении прямо с помощью python manage.py shell
и импортируйте uwsgi.py
(используйте тот же путь, что и в uwsgi.ini
).
Ответ 3
Отправляйте сообщение в своем блоге о развертывании Django за uwsgi http://blog.johannesklug.de/2012/11/27/deploying-django-behind-nginx-with-uwsgi-and-virtualenv/. Я создал ini-File для настройки uwsgi, который указывает на приложение, вызываемое с параметром module=project.wsgi:application
.
Весь файл читает что-то вроде этого:
(env)[[email protected] ~]$ 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
Ответ 4
Проверьте, не удалили ли вы файл init.py из приложений Djano. Поскольку django использует их, чтобы знать, какие папки являются приложениями, они очень важны.