2008-08-31 7 views
8

Ich wurde auf mod_wsgi und Apache statt mod_python verkauft. Ich habe alle Teile installiert (django, apache, mod_wsgi), aber habe ein Problem beim Deployment bekommen.Setup django mit WSGI und Apache

Ich bin auf osx 10.5 mit Apache 2.2 und django 1.0b2, mod_wsgi-2.3

Meine Anwendung ist tred genannt.

Hier sind die relevanten Dateien: httpd-vhosts (in httpd-conf enthalten)

 
NameVirtualHost tred:80 



    ServerName tred 

    Alias /admin_media /usr/lib/python2.5/site-packages/django/contrib/admin/media 

    
    Order allow,deny 
    Allow from all 
    

    Alias /media /Users/dmg/Sites/tred/media 

    
    Order allow,deny 
    Allow from all 
    

    Alias//Users/dmg/Sites/tred/ 

    
     Order allow,deny 
     Allow from all 
    

    WSGIScriptAlias//Users/dmg/Sites/tred/mod_wsgi-handler.wsgi 

    WSGIDaemonProcess tred user=dmg group=staff processes=1 threads=10 
    WSGIProcessGroup tred 


mod_wsgi-handle.wsgi

 
import sys 
import os 

sys.path.append(os.path.dirname(os.path.abspath(__file__)) + '/..') 
os.environ['DJANGO_SETTINGS_MODULE'] = 'tred.settings' 

import django.core.handlers.wsgi 

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

Als ich nach http://tred gehe ich ein Verzeichnis erhalten anstatt der gerenderten Website. Ich denke, ich habe die Tutorials richtig verfolgt, aber es ist offensichtlich nicht richtig. Was kann ich tun, damit dies funktioniert?

Antwort

6

Was passiert, wenn Sie die Alias / Anweisung entfernen?

5

Es funktioniert. Ich habe keine Ahnung warum, aber es tut es.

Für die Zukunft:

Es funktioniert, weil Apache alias Richtlinien, um verarbeitet und verwendet das erste Spiel. Es traf immer Alias /, was alles vor WSGIScriptAlias übereinstimmen wird.

Vom mod_alias documentation:

Zuerst werden alle Umleitungen werden verarbeitet, bevor Aliases verarbeitet werden, und damit eine Anforderung, die ein Redirect oder RedirectMatch entspricht, wird nie Aliases angewendet. Zweitens werden die Aliase und Redirects in der Reihenfolge verarbeitet, in der sie in den Konfigurationsdateien erscheinen, wobei die erste Übereinstimmung Vorrang hat.

7

Beachten Sie, dass Alias- und WSGIScriptAlias-Direktiven nicht die gleiche Priorität haben. Daher werden sie nicht in der Dateireihenfolge wie beschrieben verarbeitet. Stattdessen erhalten alle Alias-Anweisungen Vorrang vor WSGIScriptAlias-Anweisungen. Es wäre also nicht wichtig gewesen, wenn der Alias ​​für '/' nach WSGIScriptAlias ​​erschienen wäre, hätte er dennoch Vorrang gehabt.

2

Versuch nach diesem Tutorial - http://singlas.in/5-step-tutorial-for-using-django-with-apache-and-mod_wsgi/

Sie versuchen, Apache/var/www/Ordner und die Django-Applikation sowohl auf Root (/) zu hosten. Da die Alias-Anweisung Vorrang vor WSGIScriptAlias ​​hat, wird das Apache-Verzeichnis gerendert.

können Sie versuchen, die Django App unter/app hosten. Alternativ können Sie den Ordner/var/www/an einem anderen Ort wie/public

hosten