web-dev-qa-db-fra.com

Erreur de serveur interne avec Django et uWSGI

J'essaie de suivre les étapes de ce guide: http://uwsgi-docs.readthedocs.org/fr/latest/tutorials/Django_and_nginx.html

Avant même d’arriver à la partie nginx, j’essaie de vérifier que uWSGI fonctionne correctement

ma structure de dossier est srv/www/domain/projectdatabank /

le dossier banque de données du projet contient mon fichier manage.py

mon fichier wsgi.py ressemble à ceci:

import os
import sys
from Django.core.wsgi import get_wsgi_application
application = get_wsgi_application()

avez-vous besoin de voir mon settings.py?

je reçois le message d'erreur suivant lorsque je me dirige vers le navigateur:

-- no python application found, check your startup logs for errors --- [pid: 10165|app: -1|req: -1/1] 66.56.35.151 () {38 vars in 681 bytes} [Tue Jul 9 18:19:46 2013] GET /admin/ => generated 21 bytes in 0 msecs (HTTP/1.1 500) 1 headers in 57 bytes (0 switches on core 0) --- no python application found, check your startup logs for errors --- [pid: 10165|app: -1|req: -1/2] 66.56.35.151 () {36 vars in 638 bytes} [Tue Jul 9 18:19:49 2013] GET / => generated 21 bytes in 0 msecs (HTTP/1.1 500) 1 headers in 57 bytes (0 switches on core 0)

Maintenant, quand je vérifie mon journal uWGI, il est identique à celui ci-dessus.

41
tareq

J'ai résolu ceci

dans ma ligne de commande d'origine n'incluait pas le chemin complet du fichier wsgi.py pour exécuter uWSGI

uwsgi --http :8000 --chdir /srv/www/databankinfo.com/projectdatabank/ --wsgi-file wsgi.py

pour ça

uwsgi --http :8000 --chdir /srv/www/databankinfo.com/projectdatabank/ --wsgi-file full/path/wsgi.py

et cela a fonctionné

45
tareq

Pour d’autres déboguant cette même erreur, il existe une autre possibilité: une exception est levée par votre uwsgi.py. Pour tester cela, ouvrez un shell Django dans votre application directement avec python manage.py Shell et importez votre uwsgi.py (utilisez le même chemin que dans votre uwsgi.ini).

39
Fraser Harris

Découvrez mon article de blog sur le déploiement Django derrière uwsgi http://blog.johannesklug.de/2012/11/27/deploying-Django-behind-nginx-with-uwsgi -and-virtualenv / . J'ai créé un fichier ini pour configurer uwsgi, qui pointe vers l'application appelable avec le paramètre module=project.wsgi:application.

Le fichier entier se lit comme ceci:

(env)[project@Host ~]$ cat uwsgi.ini 
[uwsgi]
# path to where you put your project code
chdir=/home/project/project

# python path to the wsgi module, check if you have one
module=project.wsgi:application

# this switch tells uwsgi to spawn a master process,
# that will dynamically spawn new child processes for
# server requests
master=True
# uwsgi stores the pid of your master process here
pidfile=/home/project/master.pid
vacuum=True
# path to your virtual environment
home=/home/project/env/
# path to log file
daemonize=/home/project/log
# this is where you need to point nginx to,
# if you chose to put this in project home make
# sure the home dir is readable and executable by
# nginx
socket=/tmp/uwsgi.sock

### SEE UPDATE NOTICE FOR THIS ONE
env = Django_SETTINGS_MODULE=project.settings

Veuillez noter que j'utilise virtualenv.

Vous pourriez aussi manquer les lignes

import os

os.environ.setdefault("Django_SETTINGS_MODULE", "project.settings")

dans votre wsgi.py

12
room2web

Vérifiez si vous avez supprimé un fichier init. Py des applications Djano. As Django les utilise pour savoir quels dossiers sont des applications, donc ils sont assez importants.

0
Ibrahim Tayseer