2010-11-16 3 views
5

Ich habe Probleme beim Einrichten von Wgsi mit Django. Ich folge diesem http://docs.djangoproject.com/en/dev/howto/deployment/modwsgi/. Dennoch bin ich immer noch ziemlich verwirrt, wo ich die .wsgi-Datei ablegen soll und ob ich den sys.path einstellen muss. Ich habe es sowohl direkt als auch innerhalb der Webroot versucht und ich kann nichts wie erwartet zu arbeiten.Django WGSI Pfade

# /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" 

Apache Protokollfehler (Standard Apache 500 Seiten):

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

Ich kann get django, um wenigstens einen Fehler von seinen eigenen Wurf von mit diesem:

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

, die in dieser django Fehlerseite geführt:

ImportError at /admin/ 
No module named testproject.urls 

Antwort

8

ich die wsgi auf gleicher Ebene als settings.py setzen, und sieht wie folgt aus:

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

das ist die Apache conf-Datei:

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

Dies gibt einen Apache 500. Auch versucht Einstellung 'os.environ [ 'DJANGO_SETTINGS_MODULE '] =' testproject.settings ' '. aber kein Glück. – Keyo

+0

ich bearbeite meine Antwort. – diegueus9

1

Here is a nice tutorial, die Ihnen zeigt, wie mod_wsgi mit Django und auch einige andere Elemente, die nicht mit dieser Frage verwandt sind, zu verwenden.

1

Als schnelle Lösung können Sie, neben dem Hinzufügen dieser zu sys.path:

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

auch hinzufügen:

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

Sie können auch Python ändern Pfad in Ihrem Apache Virtualhost:

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

Aber Sie sollten auch mod_wsgi docs überprüfen und erfahren, was Graham Dumpleton dort berät.

0

Ich habe gerade ein paar Stunden mit der Fehlersuche genau dieses Problem verbracht und mein Fix war SELinux verbot den Zugriff auf meine /django/ Ordner.

Um zu überprüfen, ob SEStatus Ihren Zugang blockiert, zeigen Sie das Protokoll bei /var/log/audit/audit.log

war meine fix ein einfach:

restorecon -R /var/www/django/