django, apache, mod_wsgi и python py-scrypt не работают вместе - PullRequest
2 голосов
/ 05 апреля 2011

Я использую экземпляр ec2 для размещения некоторых веб-сайтов Django. Веб-сайты обслуживаются Apache с использованием mod_wsgi

Уже несколько дней я пытаюсь развернуть новую веб-платформу, которую мы разрабатываем, но я сталкиваюсь с проблемой, которую я не могу решить. В целях безопасности мы используем scrypt 0.4 для защиты личных данных пользователей, таких как пароли.

На сервере разработки все работает как чудо, но при развертывании на нашем действующем сервере мы получаем ошибку 500 Internal Server. Журнал apache выдает мне следующее сообщение

Преждевременный конец заголовков скриптов: socialmarketingplatform.wsgi, реферер:

Когда я раскомментирую строку, где используется модуль scrypt, все работает нормально. Также, когда я запускаю сервер, поставляемый с Django с включенным scrypt, все работает на живом сервере. Так что это комбинация mod_wsgi, django и scrypt, которая генерирует ошибку.

Я использую следующий файл wsgi:

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()

И следующий конфиг 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>

Я надеюсь, что кто-то может помочь мне с этой проблемой. Если есть еще вопросы, дайте мне знать.

1 Ответ

1 голос
/ 06 апреля 2011

См:

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

Сообщение 'преждевременное завершение заголовков скрипта' обычно указывает на то, что ваш код приводит к сбою процесса демона. Вы можете убедиться в этом, посмотрев ошибку сегментации или подобное сообщение в основном файле журнала ошибок Apache. Если вы включите «LogLevel info» в основной конфигурации Apache и VirtualHost, то mod_wsgi будет записывать больше информации о перезапуске процесса демона.

Быстрое исправление, если запустить только приложение в этой группе процессов-демонов, это добавить:

WSGIApplicationGroup %{GLOBAL}

Это поможет избежать сбоев, вызванных неработающими модулями расширения сторонних разработчиков для Python, которые не написаны должным образом для работы в суб-интерпретаторах.

Кроме этого, могут быть несовпадения версий разделяемой библиотеки, как описано в FAQ.

...