Domanda

Mi è stato venduto mod_wsgi e apache anziché mod_python.Ho installato tutte le parti (django, apache, mod_wsgi) ma ho riscontrato un problema durante la distribuzione.

Sono su OSX 10.5 con Apache 2.2 e Django 1.0b2, mod_wsgi-2.3

La mia applicazione si chiama tred.

Ecco i file rilevanti:httpd-vhosts (incluso in httpd-conf)

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

Quando vado a http://tred Ottengo un elenco di directory anziché il sito Web visualizzato.Penso di aver seguito correttamente i tutorial ma ovviamente non è giusto.Cosa posso fare per farlo funzionare?

È stato utile?

Soluzione

Cosa succede se rimuovi il file Alias / direttiva?

Altri suggerimenti

Tieni presente che le direttive Alias ​​e WSGIScriptAlias ​​non hanno la stessa precedenza.Pertanto, non verranno elaborati nell'ordine dei file così come scritto.Tutte le direttive Alias ​​hanno invece la precedenza sulle direttive WSGIScriptAlias.Pertanto, non avrebbe avuto importanza se l'alias per '/' fosse apparso dopo WSGIScriptAlias, avrebbe comunque avuto la precedenza.

Funziona.Non ho idea del perché, ma è così.

Per riferimento futuro:

Funziona perché Apache elabora le direttive alias in ordine e utilizza la prima corrispondenza.Colpisce sempre Alias /, che corrisponderà a qualsiasi cosa, prima WSGIScriptAlias.

Dal mod_alias documentazione:

Innanzitutto, tutti i reindirizzamenti vengono elaborati prima degli alias e quindi una richiesta che corrisponde a Redirect O RedirectMatch non verranno mai applicati gli Alias.In secondo luogo, gli alias e i reindirizzamenti vengono elaborati nell'ordine in cui appaiono nei file di configurazione, con la prima corrispondenza che ha la precedenza.

prova a seguire questo tutorial - http://singlas.in/5-step-tutorial-for-using-django-with-apache-and-mod_wsgi/

stai tentando di ospitare la cartella apache /var/www/ e l'app Django entrambe su root (/).Poiché la direttiva Alias ​​ha la precedenza su WSGIScriptAlias, esegue il rendering della directory apache.

puoi provare a ospitare l'app Django su /app.In alternativa, ospita la cartella /var/www/ in una posizione diversa come /public

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top