2 votes

django, apache, mod_wsgi et python py-scrypt ne fonctionnent pas ensemble

J'utilise une instance ec2 pour héberger quelques sites web Django. Les sites sont servis par Apache avec l'utilisation de mod_wsgi.

Depuis quelques jours, j'essaie de déployer une nouvelle plateforme web que nous développons, mais je me heurte à un problème qui me semble impossible à résoudre. Pour des raisons de sécurité, nous utilisons scrypt 0.4 pour sécuriser les informations personnelles des utilisateurs, comme les mots de passe.

Sur le serveur de développement, tout fonctionne comme sur des roulettes, mais lorsque nous déployons sur notre serveur réel, nous obtenons une erreur 500 Internal Server. Le journal d'apache me donne le message suivant

Fin prématurée des en-têtes script : socialmarketingplatform.wsgi, referer :

Lorsque je décommente la ligne où le module scrypt est utilisé, tout fonctionne bien. De même, lorsque j'exécute le serveur livré avec Django avec scrypt activé, tout fonctionne sur le serveur en direct. C'est donc une combinaison de mod_wsgi, django et scrypt qui génère l'erreur.

J'utilise le fichier wsgi suivant :

import os
import sys

path = '/var/www/vhosts/[sub_domain]'
if path not in sys.path:
    sys.path.append(path)
sys.path.append(path + '/socialmarketingplatform')
os.environ['DJANGO_SETTINGS_MODULE'] = 'socialmarketingplatform.settings'

import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()

Et la configuration suivante pour le virtualhost :

<VirtualHost *:80>
    #Basic setup
    ServerAdmin [removed email]
    ServerName luxdevelopment.net
    ServerAlias [sub domain]
    DocumentRoot /var/www/vhosts/[sub domain]/socialmarketingplatform/

    Alias /media/admin /usr/lib/python2.6/site-packages/Django-1.3-py2.6.egg/django/contrib/admin/media
    Alias /media /var/www/vhosts/[sub domain]/socialmarketingplatform/media
    <Location media="">
        SetHandler None
    </Location>

    LogLevel warn
    ErrorLog  /var/log/httpd/smp_error.log
    CustomLog /var/log/httpd/smp_access.log combined

    WSGIDaemonProcess luxdevelopment.net user=apache group=apache threads=25
    WSGIProcessGroup luxdevelopment.net

    WSGIScriptAlias / /var/www/cgi-bin/socialmarketingplatform.wsgi
</VirtualHost>

J'espère que quelqu'un pourra m'aider à résoudre ce problème. Si vous avez d'autres questions, faites-le moi savoir.

1voto

Graham Dumpleton Points 23711

Voir :

http://code.google.com/p/modwsgi/wiki/FrequentlyAskedQuestions#Apache_Process_Crashes

Le message "fin prématurée des en-têtes script" indique généralement que votre code fait échouer le processus du démon. Vous pouvez le vérifier en recherchant une erreur de segmentation ou un message similaire dans le fichier journal principal des erreurs d'Apache. Si vous activez l'option 'LogLevel info' dans la configuration principale d'Apache et dans le VirtualHost, mod_wsgi enregistrera davantage les redémarrages du processus du démon.

Un remède rapide si vous exécutez seulement une application dans ce groupe de processus démon est d'ajouter :

WSGIApplicationGroup %{GLOBAL}

Cela permettra de contourner les plantages causés par des modules d'extension tiers pour Python qui ne sont pas écrits correctement pour fonctionner dans les sous-interprètes.

En dehors de cela, il peut s'agir de décalages de versions de bibliothèques partagées, comme décrit dans la FAQ.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X