Проблема конфигурации Django apache-wsgi - PullRequest
2 голосов
/ 17 июня 2010

Я пытаюсь запустить мой проект Django на рабочем сервере.

Я настраиваю среду с помощью pip, поэтому она идентична среде разработки, где все работает нормально.Разница лишь в том, что я не использую virtualenv на производстве, потому что этот проект - единственный, который будет запущен на производстве.Также на производстве имеется обратный прокси-сервер Nginx для обслуживания статического содержимого, который передает динамические запросы в Apache2.

Файл wsgi Apache выглядит следующим образом:

import sys, os

sys.path.append('/home/project/src')

os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()

Когда я получаю доступ к серверу, Я получаю ошибку импорта:

ImproperlyConfigured: Error importing middleware middleware: "cannot import name UserProfile"

, которая ссылается на файл middleware.py в папке src /, на который ссылаются настройки.Но я могу импортировать и промежуточное ПО, и класс UserProfile из командной строки оболочки ./manage.py.

Кажется, что проблема с путями в файле wsgi, но я не вижу, что именно.Структура каталогов:

/home/project
/home/project/src (which contains the settings.py, middleware.py and app folders)
/home/apache/apache.wsgi

Любая помощь приветствуется.

Спасибо, oMat

Ответы [ 2 ]

3 голосов
/ 18 июня 2010

Убедитесь, что все каталоги / файлы доступны для чтения другим пользователям, чтобы пользователь Apache мог получить к ним доступ, если только вы не используете режим демона с другим пользователем на тот случай, если этот пользователь должен иметь возможность читать их.Читайте также:

http://blog.dscpl.com.au/2010/03/improved-wsgi-script-for-use-with.html

Это может не помочь, но содержимое файла сценария WSGI, описанное в конце этого, обеспечит настройку среды процесса ближе к тому, что делает сервер разработки Django в случае егосвязано с этими различиями.

1 голос
/ 18 июня 2010

Глядя на свой собственный файл, я добавляю каталог, содержащий проекты, и указываю project .settings, а не settings

Попробуйте:

import sys, os

sys.path.append('/home/')
sys.path.append('/home/project/')

os.environ['DJANGO_SETTINGS_MODULE'] = 'project.settings'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()

Это будетбыло бы лучше, если бы вы сделали что-то вроде ~/django-sites, чтобы вы указали это вместо /home

...