2010-12-21 11 views
11

अपाचे लॉग:Django, अपाचे, mod_wsgi - त्रुटि: स्क्रिप्ट के समय से पहले अंत हेडर मोड डिबग में

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

मेरे conf फ़ाइल:

WSGISocketPrefix /tmp/wsgi 

<VirtualHost *:80> 
    ServerName mysite.com 
    ServerAlias www.mysite.com 
    ServerAdmin [email protected] 

    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 एक डेटा के बिना एक बुनियादी परियोजना में ठीक काम करता है कनेक्शन जैसे 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() 

मैं इस कड़ी में कुछ सवाल पढ़ा है: http://code.google.com/p/modwsgi/wiki/FrequentlyAskedQuestions लेकिन मैं अभी भी समाधान नहीं समझते।

+0

आप अपने django.wsgi फ़ाइल को पोस्ट कर सके

AddHandler cgi-स्क्रिप्ट: cgi कॉन्फ़िगर है कि मुझे किसी दिन से जोड़ा गया है निकालना चाहते हैं? –

+0

django.wsgi फ़ाइल ने जोड़ा है। मुझे आशा है कि इससे आपको कुछ विचार करने में मदद मिलेगी :( – anhtran

+0

मेरे पास कोई विशिष्ट सुझाव नहीं है, लेकिन मुझे यह लिंक मिल गया है जो सहायक हो सकता है: http://htmlfixit.com/cgi-tutes/tutorial_Common_Web_dev_error_messages_and_what_they_mean.php#premature –

उत्तर

9

डिमन प्रक्रिया क्रैश हो गई। क्या दुर्घटनाओं का कारण बनता है के बारे में पूछे जाने वाले प्रश्न mod_wsgi में टिप्पणियां देखें:

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

और वहाँ लिंक का अनुसरण करें।

आखिरकार कारण कई चीजें हो सकती हैं, जिसमें पाइथन सी एक्सटेंशन मॉड्यूल का उपयोग करके असंगत mod_python लोड करना शामिल है, जो उप दुभाषियों के साथ काम नहीं करता है, अपाचे और/या PHP में एक्सटेंशन मॉड्यूल द्वारा उपयोग किए जाने वाले असंगत साझा लाइब्रेरी संस्करण।

+2

I पाइथन सी एक्सटेंशन के कारण एक ही समस्या थी। मैंने अपने अपाचे कॉन्फ़िगरेशन में "डब्ल्यूएसजीआईप्लिकेशन ग्रुप% {ग्लोबल}" जोड़ा और यह समस्या हल हो गई। निर्देश डब्लूएसजीआई एप्लिकेशन को पहले पायथन उप दुभाषिया के भीतर चलाने के लिए मजबूर करता है, जो समाप्त होता है डेडलॉक्स जो अपाचे को प्रक्रियाओं को पुनरारंभ करने का कारण बनता है। आप इसके बारे में अधिक जानकारी [Google विकी] (https://code.google.com/p/modwsgi/wiki/ApplicationIssues#Python_Simplified_GIL_State_API) – Imraan

+0

@ ग्राहम मेरे पास 66 लाख हैं लॉग फाइलों में लाइन। इस मॉड wsgi डिमन प्रक्रिया क्रैशिंग को पढ़ने के दौरान। कृपया wsgi अनुप्रयोग में बड़ी जीबी फ़ाइल पढ़ने में मदद करें। – Mushir

+0

@Mushir एक नया प्रश्न बनाएं, या यदि आपको लगता है कि यह जी है चर्चा करने की आवश्यकता के लिए, mod_wsgi मेलिंग सूची का उपयोग करें। http://modwsgi.readthedocs.io/en/develop/finding-help.html –

0

इस

WSGIDaemonProcess mysite processes=5 threads=25 
WSGIProcessGroup mysite 

अपने सर्वर पर यह काम करता है इस

WSGISocketPrefix /tmp/wsgi 

नष्ट करने के लिए प्रयास करें और।

+1

आपके रास्ते से, यह कोई प्रतिक्रिया नहीं है। इसका मतलब है कि कोई त्रुटि नहीं है और कोई डेटा नहीं :( – anhtran

+0

यह एक दयालुता है। मुझे नहीं पता कि क्या गलत है। – Stan

4

अंत में, मुझे समाधान मिला। यह एकाधिक पायथन संस्करणों की एक समस्या है: http://code.google.com/p/modwsgi/wiki/InstallationIssues#Multiple_Python_Versions

धन्यवाद सब! : पी

+0

यह भी मेरी सटीक समस्या थी, सर्वर नट्टी चला रहा था, जो पाइथन 2.7 के साथ जहाजों को स्थापित करता था, लेकिन mod_wsgi इंस्टॉल करने से python2 भी इंस्टॉल हो जाता है। 6, क्योंकि वह मॉड्यूल का उपयोग करता है। एक स्पष्ट पायथन दुभाषिया के बिना वर्चुअल वातावरण बनाकर, यह मान लिया जाता है कि सिस्टम डिफ़ॉल्ट (v2.7) जो mod_wsgi आवश्यकता (v2.6) के साथ संघर्ष करता है। पर्यावरण को फिर से बनाने के बाद python2.6 निष्पादन योग्य, और अद्यतन कुछ पथ संदर्भ, यह काम किया। –

0

मुझे यह वही त्रुटि मिल रही है, और अंतर्निहित कारण एकाधिक पायथन संस्करण हो सकता है, मुझे पता चला है कि यह Django से मेरे MySQL सर्वर पर लटका प्रश्नों के कारण हो रहा है। यदि मैं

show processlist; 

MySQL प्रॉम्प्ट पर चलाता है, तो मुझे लगता है कि प्रश्न कतार में बैक अप ले रहे हैं। यदि मैं शीर्ष पर क्वेरी को मारता हूं, तो अन्य सभी खुली प्रक्रियाएं तुरंत पूरी होती हैं और मेरी साइट वापस आती है।

उम्मीद है कि यह किसी और की मदद करेगा। आप

show full processlist; 

सटीक क्वेरी देखने के लिए भी चला सकते हैं। मेरे मामले में, यह एक django select_related क्वेरी थी जिसने क्वेरी में INNER JOIN खंडों का निर्माण किया था।

देखें: http://dev.mysql.com/doc/refman/5.1/en/show-processlist.html

4

मैं Django, apache2, mod_wsgi, python2.6 एक आभासी मशीन पर स्थापित पर एक समान समस्या थी।मैंने आभासी मशीन को सौंपे गए राम को घुमाने में समस्या हल की।

मुझे आशा है कि इससे मदद मिलेगी।

+0

ओओएम की वजह से क्रैशिंग निश्चित रूप से इस असंगत त्रुटि संदेश के पीछे कारणों में से एक है। –

0

मेरी एक ही मुद्दा इस तरह हल किया गया था: .py

संबंधित मुद्दे