Frage

Ich bin eher von mod_wsgi und apache als von mod_python überzeugt.Ich habe alle Teile installiert (Django, Apache, mod_wsgi), bin aber auf ein Problem bei der Bereitstellung gestoßen.

Ich verwende OSX 10.5 mit Apache 2.2 und Django 1.0b2, mod_wsgi-2.3

Meine Anwendung heißt tred.

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()

Wenn ich gehe http://tred Ich erhalte eine Verzeichnisliste und nicht die gerenderte Website.Ich glaube, ich habe die Tutorials richtig befolgt, aber es ist offensichtlich nicht richtig.Was kann ich tun, damit das funktioniert?

War es hilfreich?

Lösung

Was passiert, wenn Sie das entfernen? Alias / Richtlinie?

Andere Tipps

Beachten Sie, dass Alias- und WSGIScriptAlias-Direktiven nicht die gleiche Priorität haben.Daher werden sie nicht in der Dateireihenfolge wie geschrieben verarbeitet.Stattdessen haben alle Alias-Anweisungen Vorrang vor WSGIScriptAlias-Anweisungen.Daher hätte es keine Rolle gespielt, wenn der Alias ​​für „/“ nach WSGIScriptAlias ​​aufgetaucht wäre, er hätte trotzdem Vorrang gehabt.

Es klappt.Ich habe keine Ahnung warum, aber es passiert.

Zum späteren Nachschlagen:

Es funktioniert, weil Apache Alias-Direktiven der Reihe nach verarbeitet und die erste Übereinstimmung verwendet.Es war immer ein Schlag Alias /, was zu allem passt, vorher WSGIScriptAlias.

Von dem mod_alias Dokumentation:

Zuerst werden alle Weiterleitungen verarbeitet, bevor Aliase verarbeitet werden und daher eine Anfrage, die mit a übereinstimmt, verarbeitet wird Redirect oder RedirectMatch Es werden niemals Aliase angewendet.Zweitens werden die Aliase und Weiterleitungen in der Reihenfolge verarbeitet, in der sie in den Konfigurationsdateien erscheinen, wobei die erste Übereinstimmung Vorrang hat.

Versuchen Sie, diesem Tutorial zu folgen - http://singlas.in/5-step-tutorial-for-using-django-with-apache-and-mod_wsgi/

Sie versuchen, den Apache-Ordner /var/www/ und die Django-App beide im Stammverzeichnis (/) zu hosten.Da die Alias-Direktive Vorrang vor WSGIScriptAlias ​​hat, rendert sie das Apache-Verzeichnis.

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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top