2012-04-09 2 views
0

해결할 수없는 장고 오류에 대한 도움이 필요합니다.Django + mod_wsgi => "모델이없는 모듈"오류

내 웹 사이트는 "python manage.py runserver"에서 잘 작동하지만 wsgi를 사용하여 배포하려고하면 알 수없는 오류가 계속 발생합니다. 나는이 오류를 Google에 최선을 다했지만 오류를 해결할 수 없습니다. 아무도 내 오류가 무엇인지 말할 수 있을까?

아파치 오류 로그

[error] /usr/local/lib/python2.6/dist-packages/django/middleware/csrf.py:262: DeprecationWarning: CsrfResponseMiddleware and CsrfMiddleware are deprecated; use CsrfViewMiddleware and the template tag instead (see CSRF documentation). 
[error] DeprecationWarning 
[error] [client 76.191.24.242] mod_wsgi (pid=21082): Exception occurred processing WSGI script '/srv/www/myapp/wsgi.py'. 
[error] [client 76.191.24.242] Traceback (most recent call last): 
[error] [client 76.191.24.242] File "/usr/local/lib/python2.6/dist-packages/django/core/handlers/wsgi.py", line 250, in __call__ 
[error] [client 76.191.24.242]  self.load_middleware() 
[error] [client 76.191.24.242] File "/usr/local/lib/python2.6/dist-packages/django/core/handlers/base.py", line 47, in load_middleware 
[error] [client 76.191.24.242]  raise exceptions.ImproperlyConfigured('Error importing middleware %s: "%s"' % (mw_module, e)) 
[error] [client 76.191.24.242] ImproperlyConfigured: Error importing middleware backends: "No module named models" 

wsgi.py

import os 
import sys 

sys.path.append('/srv/www') 
sys.path.append('/srv/www/myapp') 

os.environ['DJANGO_SETTINGS_MODULE'] = 'myapp.settings' 

import django.core.handlers.wsgi 
application = django.core.handlers.wsgi.WSGIHandler() 

아파치 오류 메시지가 장고 1.3 시리즈를 사용하고 있음을 보이는

<VirtualHost *:80> 

    ServerName www.myapp.com 
    DocumentRoot /srv/www/myapp 

    RewriteEngine On 
    RewriteCond %{HTTP_HOST} !^www.myapp.com$ [NC] 
    RewriteRule ^(.*)$ http://www.myapp.com$1 [R,L] 

    Alias /static/ /srv/www/myapp/static/ 

    <Directory /srv/www/myapp> 
     Order allow,deny 
     Allow from all 
    </Directory> 

    <Directory /srv/www/myapp/static> 
     Order allow,deny 
     Allow from all 
    </Directory> 

    WSGIDaemonProcess myapp.djangoserver processes=2 threads=15 display-name=%{GROUP} 
    WSGIProcessGroup myapp.djangoserver 
    WSGIScriptAlias//srv/www/myapp/wsgi.py 

</VirtualHost> 
+0

'설정'및 프로젝트 트리 구조를 표시하십시오. – ilvar

답변

0

backends.SomeClass에 의해 당신이 사용자 정의 MIDDLEWARE_CLASSES (어떤 모듈에 정의 된 어떤 클래스는 backends) d evelopment 서버가 현재 디렉토리 나 파이썬 경로에 있지만, mod_wsgi에 의해 시작된 경우는 그렇지 않습니다.

미들웨어 클래스의 전체 이름을 사용해야하며 필요한 Python 경로가 프로덕션 서버에 추가되었는지 확인해야합니다. 결국 sys.path.append를 wsgi.py 파일에서 사용하십시오. 개발 서버에서 파이썬 경로에 일부 패키지의 디렉토리를 추가했고 짧은 이름 ('백엔드')을 작성했지만 sys.path에이 패키지의 상위 디렉토리를 추가하고 전체 이름을 써야합니다.

(사용하는 경우 : virtualenv를 사용하는 경우 sys.executable이 일반적인 Python이 아닌 해당 virtualenv 디렉토리에서 실행 가능한 python인지 확인하십시오. 잊어 버린 virtualenv는 경로를 추가하여 수정하지 않아야합니다.)

관련 문제