2010-11-16 8 views
5

Tengo problemas para configurar wgsi con django. Estoy siguiendo este http://docs.djangoproject.com/en/dev/howto/deployment/modwsgi/. Sin embargo, todavía estoy realmente confundido acerca de dónde colocar el archivo .wsgi y si necesito establecer sys.path. Lo probé tanto directamente dentro como fuera de la raíz web y no puedo hacer que nada funcione como esperaba.Django Trayectos 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 de configuración del Apache:

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

Apache registra error (estándar página de Apache 500):

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

que puedo en get Django a por lo menos Lanza un error que es propia de usando esto:

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

, que dio lugar a esta página de error de Django:

ImportError at /admin/ 
No module named testproject.urls 

Respuesta

8

pongo el wsgi al mismo nivel que settings.py, y se ve así:

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

este es el archivo de Apache conf:

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

Esto da un Apache 500. También probamos la configuración 'os.environ [ 'DJANGO_SETTINGS_MODULE '] =' testproject.settings ' '. pero sin suerte. – Keyo

+0

edito mi respuesta. – diegueus9

1

Here is a nice tutorial que le muestra cómo usar mod_wsgi con Django y también algunos otros elementos que no están relacionados con esta pregunta.

1

como una solución rápida que pueda, junto a la adición de este a sys.path:

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

también añadir lo siguiente:

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

También puede cambiar la ruta de Python en su Apache VirtualHost:

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

Pero también debe revisar mod_wsgi docs y aprender lo que Graham Dumpleton aconseja allí.

0

Acabo de pasar unas horas solucionando este problema y mi solución era SELinux que prohibía el acceso a mi carpeta /django/.

para comprobar si SEStatus está bloqueando el acceso al usuario, ver el registro en /var/log/audit/audit.log

Mi solución fue simple:

restorecon -R /var/www/django/