2011-04-05 1 views
2

J'utilise une instance ec2 pour héberger des sites Django. Les sites web sont servis par Apache avec l'utilisation de mod_wsgidjango, apache, mod_wsgi et python py-scrypt ne fonctionnent pas ensemble

Depuis quelques jours j'essaie de déployer une nouvelle plate-forme Web que nous développons mais je rencontre 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 un charme, mais lorsque nous déployons sur notre serveur en direct, nous obtenons une erreur 500 interne au serveur. Le journal apache me donne le message suivant

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

Quand je décommenter la ligne où le module est utilisé scrypt tout fonctionne bien. Aussi quand je cours le serveur livré avec Django avec scrypt activé tout fonctionne sur le serveur de phase. 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 VirtualHost suivante:

<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 peut me aider avec ce problème. S'il y a d'autres questions faites le moi savoir.

+0

Argh! Ne mettez pas votre code dans votre DocumentRoot! Surtout si vous êtes préoccupé par la sécurité. –

+0

@ daniel-roseman: C'est pourquoi ma racine de document est/var/www/html/si ce n'est pas encore assez sécurisé, que suggérez-vous? Peut-être que je vous ai mal compris, je verrai si je peux déplacer la source en dehors de ce dossier. Merci pour votre suggestion. –

+0

Eh bien ce que je veux dire, c'est que vous définissez DocumentRoot à l'emplacement de votre code, dans la configuration vhost. Ne fais pas ça. –

Répondre

1

Voir:

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

Le message 'fin prématurée des en-têtes de script' est généralement indicatif de votre code écraser le processus démon. Vous pouvez le vérifier en recherchant une erreur de segmentation ou un message similaire dans le fichier journal des erreurs Apache principal. Si vous activez 'LogLevel info' dans la configuration principale d'Apache et dans VirtualHost, alors mod_wsgi en connaîtra plus sur les redémarrages du processus daemon.

Un remède rapide en cas d'exécution seule application dans ce groupe de processus démon est d'ajouter:

WSGIApplicationGroup %{GLOBAL} 

Cela fonctionne percuter causés par des tiers brisés modules d'extension pour Python qui ne sont pas écrites correctement travailler dans sous-interprètes.

À part cela, il peut y avoir des incompatibilités de version de bibliothèque partagées, comme décrit dans la FAQ.

+0

Merci pour ce commentaire, à la fin je n'ai pas fini par régler le problème. –

Questions connexes