django、apache、mod_wsgi 和 python py-scrypt 不能一起工作

发布于 2024-10-30 07:18:11 字数 1751 浏览 0 评论 0原文

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

几天来,我尝试部署我们正在开发的新网络平台,但遇到了一个似乎无法解决的问题。出于安全原因,我们使用 scrypt 0.4 来保护用户的个人信息(例如密码)。

在开发服务器上,一切都很顺利,但是当我们部署到实时服务器时,我们会收到 500 内部服务器错误。 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 *: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>

我希望有人可以帮助我解决这个问题。如果还有任何其他问题,请告诉我。

I am running a ec2 instance to host some Django websites. The websites are being served by Apache with the use of mod_wsgi

Since a few days I am trying to deploy a new webplatform we are developing but I am running into a problem that seems impossible for me to solve. For security reasons we use scrypt 0.4 to secure the users personal information like passwords.

On the development server everything works like a charm but when we deploy to our live server we get a 500 Internal Server error. The apache log gives me the following message

Premature end of script headers: socialmarketingplatform.wsgi, referer:

When I uncomment the line where the scrypt module is used everything works fine. Also when I run the server delivered with Django with scrypt enabled everything works on the live server. So it is a combination of mod_wsgi, django and scrypt that generates the error.

I am using the following wsgi file:

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

And the following virtualhost config:

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

I hope someone can help me with this problem. If there are any further question let me know.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

梦醒时光 2024-11-06 07:18:11

请参阅:

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

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

如果仅在该守护进程进程组中运行应用程序,则快速补救措施是添加:

WSGIApplicationGroup %{GLOBAL}

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

除此之外,可能是共享库版本不匹配,如常见问题解答中所述。

See:

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

The message 'premature end of script headers' is usually indicative of your code crashing the daemon process. You can verify this by looking for segmentation fault or similar message in main Apache error log file. If you enable 'LogLevel info' in main Apache config and VirtualHost then mod_wsgi will log more about daemon process restarts.

A quick remedy if running only application in that daemon process group is to add:

WSGIApplicationGroup %{GLOBAL}

This will work around crashes caused by broken third party extension modules for Python which aren't written properly to work in sub interpreters.

Other than that, can be shared library version mismatches as described in the FAQ.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文