2010-11-16 16 views
5

Je rencontre des problèmes lors de la configuration de wgsi avec django. Je suis ce http://docs.djangoproject.com/en/dev/howto/deployment/modwsgi/. Pourtant, je suis encore vraiment confus quant à l'endroit où mettre le fichier .wsgi et si j'ai besoin de définir le sys.path. Je l'ai essayé à la fois directement à l'extérieur et à l'intérieur de la racine web et je ne peux rien faire pour fonctionner comme prévu.Chemins Django WGSI

# /home/ben/public_html/django_test/testproject/apache/django.wsgi: 

import os 
import sys 

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

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

Relivant apache conf:

DocumentRoot "/home/ben/public_html/django_test/testproject/" 
WSGIScriptAlias/"/home/ben/public_html/django_test/testproject/apache/django.wsgi" 

erreur Apache journaux (page apache 500 standard):

ImportError: Could not import settings 'testproject.settings' (Is it on sys.path? ... 

je peux à get django au moins jeter une erreur de son propre par en utilisant ceci:

import os 
import sys 

path = '/home/ben/public_html/django_test/testproject' 
if path not in sys.path: 
    sys.path.append(path) 

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

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

, qui a donné lieu à cette page d'erreur de django:

ImportError at /admin/ 
No module named testproject.urls 

Répondre

8

Je mets le wsgi au même niveau que settings.py, et ressemble à ceci:

import os 
import sys 

sys.path.insert(0,os.sep.join(os.path.abspath(__file__).split(os.sep)[:-2])) 


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

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

c'est le fichier de configuration apache:

NameVirtualHost *:80 
<VirtualHost *:80> 
    ServerAdmin [email protected] 
    ServerName www.yourprojectname.com 
    Alias /media/ /home/diegueus9/workspace/yourprojectname/media/ 

    <Directory /home/diegueus9/workspace/yourprojectname/media/> 
     Order deny,allow 
     Allow from all 
    </Directory> 

    WSGIScriptReloading On 
    WSGIDaemonProcess yourprojectname 
    WSGIProcessGroup yourprojectname 
    WSGIApplicationGroup yourprojectname 
    WSGIPassAuthorization On 

    WSGIScriptAlias//home/diegueus9/workspace/yourprojectname/yourfile.wsgi 
    ErrorLog /var/log/apache2/yourprojectname-error.log 

    # Possible values include: debug, info, notice, warn, error, crit, 
    # alert, emerg. 
    LogLevel debug 

    CustomLog /var/log/apache2/yourprojectname-access.log combined 

</VirtualHost> 
+0

Cela donne un apache 500. essayé également la mise 'os.environ [ 'DJANGO_SETTINGS_MODULE '] =' testproject.settings ' '. mais pas de chance. – Keyo

+0

je modifie ma réponse. – diegueus9

1

Here is a nice tutorial qui vous montre comment utiliser mod_wsgi avec Django et aussi d'autres éléments qui ne sont pas liés à cette question.

1

Comme une solution rapide, vous pouvez, à côté d'ajouter ceci à sys.path:

path = '/home/ben/public_html/django_test/testproject' 

ajouter aussi ceci:

path2 = '/home/ben/public_html/django_test' 

Vous pouvez également modifier votre chemin Python dans Apache VirtualHost:

WSGIDaemonProcess [...] python-path=/home/ben/public_html/django_test 

Mais vous devriez également passer en revue les docs de mod_wsgi et apprendre ce que Graham Dumpleton conseille là.

0

Je viens de passer quelques heures à résoudre ce problème et mon correctif était interdisait l'accès à mon dossier /django/.

Pour vérifier si SEStatus bloque votre accès, consultez le journal à /var/log/audit/audit.log

Mon solution était simple:

restorecon -R /var/www/django/