2012-06-08 2 views
8

Ho seguito i documenti django su come distribuire django 1.4 ad apache utilizzando mod_wsgi https://docs.djangoproject.com/en/dev/howto/deployment/wsgi/modwsgi/ su mac osx lion e quando aggiungo WSGIPythonPath direttiva apache non può riavviare. Senza di essa la mia app non esiste nel percorso. Nel registro sto ottenendo un errore che leggedurante la configurazione di mod_wsgi per django 1.4 apache non viene avviato su mac osx dopo aver aggiunto WSGIPythonPath alla configurazione host virtuale

WSGIPythonPath non può avvenire all'interno della sezione VirtualHost

qui è quello che il mio virtuale configurazione dell'host sembra

<VirtualHost *:80> 
ServerAdmin [email protected] 
DocumentRoot "/Users/jamo/code/work/projects/bfpd/fapp" 
ServerName bfpd.dev 
ServerAlias bfpd.dev 
ErrorLog "/private/var/log/apache2/bfpd.dev-error_log" 
CustomLog "/private/var/log/apache2/bfpd.dev-access_log" common 
Alias /static/ /Users/jamo/code/work/projects/bfpd/fapp/fapp/static/ 
<Directory /Users/jamo/code/work/projects/bfpd/fapp/fapp/static> 
    Options Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews 
    AllowOverride All 
    Order allow,deny 
    Allow from all 
IndexOptions FancyIndexing 
</Directory> 
WSGIScriptAlias//Users/jamo/code/work/projects/bfpd/fapp/fapp/wsgi.py 
WSGIPythonPath /Users/jamo/code/work/projects/bfpd/fapp/ 
    <Directory /Users/jamo/code/work/projects/bfpd/fapp/fapp> 
    Options Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews 
    AllowOverride All 
    Order allow,deny 
    Allow from all 
    </Directory> 

    </VirtualHost> 

Che cosa sto facendo di sbagliato? ??

+2

fissato il 'WSGIPythonPath/Users/Jamo/code/lavoro/progetti/bfpd/FAPP /' dovrebbe essere nel http.conf –

+0

si dovrebbe rispondere alla tua domanda, allora lo accetta in 2 giorni in modo che altri possano vedere questa risposta facilmente. Sono contento che tu l'abbia capito! Sono sicuro che aiuterà qualcuno in futuro. –

+1

Cosa succede se la distribuzione su un server condiviso senza accesso in scrittura a httpd, ci sono altre alternative? – hobs

risposta

9

L'ho risolto. WSGIPythonPath /Users/jamo/code/work/projects/bfpd/fapp/ dovrebbe essere in http.conf

+27

Ma come posso fare quando ho diverse applicazioni Django sullo stesso server (ciascuna definita in un VirtualHost diverso su un altro URL)? –

+1

In realtà, questo errore non viene visualizzato finché si definisce 'WSGIPythonPath' al di fuori di un nodo' VirtualHost'. Questo è vero anche per gli stack di * nix. – nemesisfixx

+2

@MartinTrigaux, i documenti dicono: 'Se sono specificate più directory, dovrebbero essere separate da un ':' se si utilizza un sistema simile a UNIX, o ';' se si utilizza Windows. Se qualsiasi parte di un percorso di directory contiene un carattere di spazio, deve essere citata la stringa di argomento completa su WSGIPythonPath – nemesisfixx

5

Come accennato nel commento di nemesisfixx, e specificato dal errore nella domanda iniziale:

WSGIPythonPath non può avvenire all'interno della sezione VirtualHost

Moving WSGIPythonPath fuori di VirtualHost ha risolto l'arresto di Apache sul server OS X.

$ cat sites/0000_any_80_mysite.com.conf 
WSGIPythonPath /Library/Server/Web/Data/Sites/mysite/django-app:/Users/owen/.virtualenvs/mysite:/Users/owen/.virtualenvs/mysite/lib/python2.7/site-packages 

<VirtualHost *:80> 
    ServerName mysite.com 
    ServerAdmin [email protected] 
    DocumentRoot "/Library/Server/Web/Data/Sites/mysite/site" 
    ... 
    WSGIScriptAlias /api /Library/Server/Web/Data/Sites/mysite/django-app/mysite/wsgi.wsgi 
    ... 
<VirtualHost> 

Ci sono voluti un sacco di Putzing per me per ottenere i percorsi corretti (compreso il percorso completo al sito-ENV, che ho inizialmente pensato sarebbe incluso automaticamente dopo l'aggiunta di livello superiore virtualenv).