Pregunta

Estoy tratando de conseguir mi proyecto Django ejecuta en el servidor de producción.

I fijó el medio ambiente utilizando pip, por lo que es idéntico al entorno de desarrollo en el que todo está funcionando bien. La única diferencia es que yo no uso virtualenv en la producción, ya que este proyecto es el único que se va a ejecutar en la producción. También en la producción, hay un proxy inverso Nginx para servir contenido estático, y pasa las solicitudes dinámicas para Apache2.

El archivo wsgi Apache es el siguiente:

import sys, os

sys.path.append('/home/project/src')

os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()

Cuando tengo acceso al servidor, me sale un error de importación:

ImproperlyConfigured: Error importing middleware middleware: "cannot import name UserProfile"

Lo que se refiere a la middleware.py bajo src / carpeta que se conoce por los ajustes. Pero puedo importar tanto el middleware y la clase PerfilUsuario desde dentro ./manage.py Indicador Shell.

Parece que un problema con las rutas de archivo wsgi pero no puedo ver lo que. La estructura de directorios es:

/home/project
/home/project/src (which contains the settings.py, middleware.py and app folders)
/home/apache/apache.wsgi

Cualquier ayuda es muy apreciada.

Gracias, Omat

¿Fue útil?

Solución

Asegúrese de que todos los directorios / archivos pueden ser leídos por otros, para que el usuario pueda acceder a ellos Apache, a menos que se está ejecutando modo demonio con otro usuario en caso de que el usuario tiene que ser capaz de leerlos. Lea también:

http: // Blog .dscpl.com.au / 2010/03 / mejorada-wsgi-script para usar-with.html

No puede ayudar, pero el contenido del archivo de script WSGI descritos al final de la que asegurará entorno del proceso de instalación es más cerca de lo que hace el servidor de desarrollo de Django en caso de que se relaciona con esas diferencias.

Otros consejos

En cuanto a mi propio archivo, añadir el directorio que contiene los proyectos, y especificar project.settings, no settings

Trate:

import sys, os

sys.path.append('/home/')
sys.path.append('/home/project/')

os.environ['DJANGO_SETTINGS_MODULE'] = 'project.settings'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()

Sería mejor si hizo algo así como ~/django-sites en orden que especifique que en lugar de /home

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top