Django WGSI caminos

Estoy teniendo 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 en cuanto a dónde colocar el archivo .wsgi y si necesito configurar el archivo sys.path. Lo he intentado directamente tanto dentro como fuera de la raíz web y no puedo hacer que nada funcione como se esperaba.

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

Error de Apache Logs (página estándar de apache 500):

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

Puedo hacer que django al menos lance un error propio al usar 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 resultó en esta página de error de django:

 ImportError at /admin/ No module named testproject.urls 

Puse 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  ServerAdmin webmaster@localhost ServerName www.yourprojectname.com Alias /media/ /home/diegueus9/workspace/yourprojectname/media/  Order deny,allow Allow from all  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  

Como solución rápida puede, junto a agregar esto a sys.path:

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

También agrega esto:

 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 los documentos mod_wsgi y aprender lo que Graham Dumpleton aconseja allí.

Aquí hay un buen tutorial que muestra cómo usar mod_wsgi con Django y también algunos otros elementos que no están relacionados con esta pregunta.

Acabo de pasar unas horas resolviendo este problema y mi solución fue que SELinux estaba prohibiendo el acceso a mi carpeta /django/ .

Para verificar si SEStatus está bloqueando su acceso, vea el registro en /var/log/audit/audit.log

Mi solución fue una simple:

 restrecon -R /var/www/django/