Django, apache, mod_wsgi和python py- script不能一起工作



我正在运行一个ec2实例来托管一些Django网站。这些网站由Apache使用mod_wsgi

提供服务。

因为几天我试图部署一个新的网络平台,我们正在开发,但我遇到了一个问题,我似乎不可能解决。出于安全考虑,我们使用scrypt 0.4来保护用户的个人信息,如密码。

在开发服务器上,一切都像魅力一样工作,但是当我们部署到我们的实时服务器时,我们得到一个500内部服务器错误。apache日志给了我以下消息

脚本头过早结束:socialmarketingplatform。wsgi推荐人:

当我取消使用脚本模块的行注释时,一切正常。此外,当我运行与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 *: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>
我希望有人能帮我解决这个问题。

参见:

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

消息"脚本头过早结束"通常表示您的代码使守护进程崩溃。您可以通过在Apache主错误日志文件中查找分段错误或类似消息来验证这一点。如果你在Apache主配置和VirtualHost中启用'LogLevel info',那么mod_wsgi将记录更多关于守护进程重启的信息。

如果在该守护进程组中只运行应用程序,一个快速的补救方法是添加:

WSGIApplicationGroup %{GLOBAL}

这将解决由于Python的第三方扩展模块损坏而导致的崩溃,这些扩展模块没有正确编写以在子解释器中工作。

除此之外,还可以像FAQ中描述的那样共享库版本不匹配。

相关内容

  • 没有找到相关文章

最新更新