Django, apache, mod_wsgi - Error: Premature end of script headers

旧时模样 提交于 2019-12-21 03:44:18

问题


Apache logs in mode debug:

[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 ''.

My conf file:

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>

Django works fine in a basic project without a data connection such as MySQLdb or sqlite3. I'm using CentOS 5 64 bit, apache 2.x, mod_wsgi 3.2. I think this is not a problem of Django, but I have no idea for it. Everybody can fix it? Help me. Thanks! :)

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

I've read some questions in this link: http://code.google.com/p/modwsgi/wiki/FrequentlyAskedQuestions But I still don't understand the solutions.


回答1:


The daemon process crashed. See comments in the mod_wsgi FAQ about what causes crashes:

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

and follow links there.

Ultimately the cause can be many things, including loading incompatible mod_python at same time, using Python C extension module that doesn't work with sub interpreters, incompatible shared library versions used by Apache and/or extension modules in PHP etc.




回答2:


Finally, I found the solution. It's a problem of Multiple Python Versions: http://code.google.com/p/modwsgi/wiki/InstallationIssues#Multiple_Python_Versions.

Thanks all! :P




回答3:


I had a similar problem on django,apache2,mod_wsgi,python2.6 installed on a virtual machine. I solved the problem incerasing the ram assigned to the virtual machine.

I hope this will help.




回答4:


Try to delete this

WSGISocketPrefix /tmp/wsgi

And this

WSGIDaemonProcess mysite processes=5 threads=25
WSGIProcessGroup mysite

On my server it works.




回答5:


I am getting this same error, and while the underlying cause may be the multiple python versions, I have found that it is happening because of hung queries from Django to my MySQL server. If I run a

show processlist;

at the MySQL prompt, I see that queries are backing up in the queue. If I kill the query at the top, all other open processes immediately complete and my site comes back to life.

Hope this helps someone else. You can also run

show full processlist;

to see the exact query. In my case, it was a django select_related query that created tons of INNER JOIN clauses in the query.

See: http://dev.mysql.com/doc/refman/5.1/en/show-processlist.html




回答6:


my same issue was resolved like this: remove cgi configure that was added by me someday:

AddHandler cgi-script .py



来源:https://stackoverflow.com/questions/4501817/django-apache-mod-wsgi-error-premature-end-of-script-headers

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!