Django,apache,mod_wsgi - 错误:脚本标头过早结束

anh*_*ran 12 apache django mod-wsgi centos apache2

Apache登录模式调试:

[Tue Dec 21 11:36:33 2010] [info] [client 1.53.149.114] mod_wsgi (pid=24831, process='mysite', application='mysite.com|'): Loading WSGI script '/home/anhtran/webapps/mysite.com/django.wsgi'.
[Tue Dec 21 11:36:33 2010] [error] [client 1.53.149.114] Premature end of script headers: django.wsgi
[Tue Dec 21 11:36:33 2010] [notice] child pid 24831 exit signal Segmentation fault (11)
[Tue Dec 21 11:36:33 2010] [info] mod_wsgi (pid=24980): Attach interpreter ''.
Run Code Online (Sandbox Code Playgroud)

我的conf文件:

WSGISocketPrefix /tmp/wsgi

<VirtualHost *:80>
   ServerName mysite.com
   ServerAlias www.mysite.com
   ServerAdmin admin@mysite.com

   DocumentRoot /home/anhtran/webapps/mysite.com/public_html

   WSGIDaemonProcess mysite processes=5 threads=25
   WSGIProcessGroup mysite
   WSGIScriptAlias / /home/anhtran/webapps/mysite.com/django.wsgi

   LogLevel debug

   <Directory /home/anhtran/webapps/mysite.com/mysite>
      Order allow,deny
      Allow from all
   </Directory>

</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

Django在没有数据连接的基本项目中工作正常,例如MySQLdb或sqlite3.我使用的是CentOS 5 64位,apache 2.x,mod_wsgi 3.2.我认为这不是Django的问题,但我不知道它.每个人都可以解决它吗?帮我.谢谢!:)

django.wsgi

#!/usr/local/bin/python
import os, site, sys

# add the virtual environment path
site.addsitedir('/home/anhtran/webapps/mysite.com/env/lib/python2.6/site-packages')
site.addsitedir('/home/anhtran/webapps/mysite.com/mysite')
site.addsitedir('/home/anhtran/webapps/mysite.com')

# fix markdown.py (and potentially others) using stdout
sys.stdout = sys.stderr

#Calculate the path based on the location of the WSGI script.
project = os.path.dirname(__file__)
workspace = os.path.dirname(project)
sys.path.append(workspace)

os.environ['PYTHON_EGG_CACHE'] = '/home/anhtran/webapps/mysite.com/.python-eggs'
os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings'
from django.core.handlers.wsgi import WSGIHandler
application = WSGIHandler()
Run Code Online (Sandbox Code Playgroud)

我在这个链接中看到了一些问题:http://code.google.com/p/modwsgi/wiki/FrequentlyAskedQuestions 但我仍然不明白这些解决方案.

Gra*_*ton 10

守护进程崩溃了.请参阅mod_wsgi常见问题中的注释,了解导致崩溃的原因:

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

并按照那里的链接.

最终原因可能很多,包括同时加载不兼容的mod_python,使用不适用于子解释器的Python C扩展模块,Apache使用的不兼容的共享库版本和/或PHP中的扩展模块等.

  • 我有同样的问题是由Python C扩展引起的.我在我的Apache配置中添加了"WSGIApplicationGroup%{GLOBAL}",它解决了这个问题.该指令强制WSGI应用程序在第一个Python子解释器中运行,这消除了导致Apache重新启动进程的死锁.您可以在[Google Wiki]上了解更多相关信息(https://code.google.com/p/modwsgi/wiki/ApplicationIssues#Python_Simplified_GIL_State_API) (2认同)