2013-02-26 203 views
10

मेरे पास सेंटोस पर एक Django एप्लिकेशन तैनात है।Django Apache mod_wsgi 500

WSGISocketPrefix /var/run/wsgi 
<VirtualHost *:80> 

    WSGIDaemonProcess safe python-path=/usr/lib/python2.6/site-packages 
    WSGIProcessGroup safe 
    WSGIScriptAlias//opt/safe/safe/wsgi.py 

    <Directory /opt/safe/safe/> 
     Order deny,allow 
     Allow from all 
    </Directory> 
</VirtualHost> 

संपादित करें: यह मेरा TEMPLATE_DIRS

TEMPLATE_DIRS = (
    # Put strings here, like "/home/html/django_templates" or "C:/www/django/templates". 
    # Always use forward slashes, even on Windows. 
    # Don't forget to use absolute paths, not relative paths. 
    "/opt/safe/static/templates", 
    "/var/www/html/static/templates", 
) 

संपादित है: यहाँ क्या मेरी httpd.conf फ़ाइल लगता है कि यह मेरा है व्यवस्थापक/ईमेल सेटअप है:

ADMINS = (
# ('Your Name', '[email protected]'), 
('David', '[email protected]'), 
) 

SEND_BROKEN_LINK_EMAILS = True 

DEFAULT_FROM_EMAIL = '[email protected]' 
SERVER_EMAIL = DEFAULT_FROM_EMAIL 

में मेरी टेम्पलेट निर्देशिका, मैंने एक कस्टम 500.html फ़ाइल परिभाषित की है। जब मैं को DEBUG = False पर सेट करता हूं, तो मैं इस कस्टम 500.html पृष्ठ को देखे बिना अपनी साइट पर कहीं भी नहीं मिल सकता।

और भी अजीब बात यह है कि लॉग फ़ाइलों में कोई त्रुटि नहीं है - इसलिए मुझे यकीन है कि कहां देखना है या कैसे आगे बढ़ना है। मुझे पता है कि यह मेरी कस्टम 500.html फ़ाइल के कारण टेम्पलेट देख सकता है, लेकिन मुझे यकीन नहीं है कि 500 ​​आंतरिक सर्वर त्रुटियों का कारण क्या है।

संपादित करें:

Traceback (most recent call last): 
File "/usr/lib/python2.6/site-packages/django/core/handlers/base.py", line 89, in get_response 
response = middleware_method(request) 
File "/usr/lib/python2.6/site-packages/django/middleware/common.py", line 55, in process_request 
host = request.get_host() 
File "/usr/lib/python2.6/site-packages/django/http/__init__.py", line 223, in get_host 
"Invalid HTTP_HOST header (you may need to set ALLOWED_HOSTS): %s" % host) 
SuspiciousOperation: Invalid HTTP_HOST header (you may need to set ALLOWED_HOSTS): [my ip address] 
+0

जब आप सत्य पर डीबग सेट करते हैं, तो क्या सब कुछ सामान्य रूप से कार्य करता है? –

+0

हाँ - मैं सामान्य रूप से सबकुछ एक्सेस कर सकता हूं (मेरे सभी यूआरएल काम करते हैं, सबकुछ)। – lightningmanic

+0

आपके टेम्पलेट_डिर्स टुपल कैसा दिखता है? –

उत्तर

12

बाहर कर देता है मैं अपने settings.py फ़ाइल में "ALLOWED_HOSTS" करने के लिए अपने आईपी पते को जोड़ने के लिए की जरूरत है। त्रुटि लॉगिंग के लिए धन्यवाद, मैं अंततः इसे देखने में सक्षम था।

वास्तविक कोड:

ALLOWED_HOSTS = ['my.server.ip.address'] 

एक अपाचे पुनः आरंभ करने के बाद, अब सब कुछ ठीक से काम कर रहा है!

+2

समाधान पोस्ट करने के लिए वापस आने के लिए धन्यवाद! 'ALLOWED_HOSTS' के बारे में कभी नहीं पता था, ऐसा लगता है कि यह एक नई सुरक्षा सुविधा है: http://git.io/9Ytk6A – Matt

+0

अच्छा, यह आपका आईपी पता नहीं है जिसे आपको वहां जोड़ना चाहिए, लेकिन एक वैध HTTP-होस्ट। अपने आईपी पते का उपयोग करके अपने सर्वर तक पहुंचने पर, यह वही है, लेकिन आप शायद इसे उत्पादन वातावरण में एक एफक्यूडीएन में सेट करना चाहते हैं। [इसके बारे में Django दस्तावेज] देखें (https://docs.djangoproject.com/en/1.5/ref/settings/#allowed-hosts)। – gertvdijk

8

आप एक फ़ाइल के लिए सब कुछ प्रवेश करने का कारण naildown की कोशिश कर सकते: आगे विन्यास के बाद, मैं कुछ त्रुटियाँ निर्गम (@Matt स्टीवंस के लिए धन्यवाद) पाने में कामयाब रहे, यहां लॉग उत्पादन होता है ।

# in your settings file 
LOGGING = { 
    'version': 1, 
    'disable_existing_loggers': False, 
    'filters': { 
     'require_debug_false': { 
      '()': 'django.utils.log.RequireDebugFalse' 
     } 
    }, 
    'handlers': { 
     'mail_admins': { 
      'level': 'ERROR', 
      'filters': ['require_debug_false'], 
      'class': 'django.utils.log.AdminEmailHandler' 
     }, 
     'logfile': { 
      'class': 'logging.handlers.WatchedFileHandler', 
      'filename': '/var/log/django/error.log' 
     }, 
    }, 
    'loggers': { 
     'django.request': { 
      'handlers': ['mail_admins'], 
      'level': 'ERROR', 
      'propagate': True, 
     }, 
     'django': { 
      'handlers': ['logfile'], 
      'level': 'ERROR', 
      'propagate': False, 
     }, 
    } 
} 
+0

इसने "/ var/log/django" में कुछ भी नहीं रखा ... – lightningmanic

+3

यह सुनिश्चित नहीं है कि यह पहले कुछ क्यों नहीं लिख रहा था - लेकिन कुछ अन्य परिवर्तनों और कुछ अनुमति संशोधन के बाद, मैं लॉग प्राप्त करने में सक्षम था चीजों को थूकने के लिए। धन्यवाद! – lightningmanic

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

  • कोई संबंधित समस्या नहीं^_^