2013-02-26 20 views
10

Ho un'applicazione Django distribuita su CentOS. Ecco ciò che il mio file httpd.conf assomiglia: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> 

EDIT: Questo è il mio 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", 
) 

EDIT: Questo è il mio Admin/setup Emailing:

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

SEND_BROKEN_LINK_EMAILS = True 

DEFAULT_FROM_EMAIL = '[email protected]' 
SERVER_EMAIL = DEFAULT_FROM_EMAIL 

Nella mia directory templates, ho definito un file personalizzato 500.html. Quando ho impostato il mioper avere DEBUG = False, non riesco ad andare da nessuna parte sul mio sito senza visualizzare questa pagina 500.html personalizzata.

Ciò che è ancora più strano è il fatto che non ci sono errori nei file di registro - quindi non sono sicuro di dove guardare o come procedere. So che può vedere i modelli a causa del mio file 500.html personalizzato, ma non sono sicuro di cosa stia causando gli errori del server interno 500.

EDIT: Dopo ulteriori configurazioni, sono riuscito a ottenere un output errori (grazie a @ Matt Stevens), ecco l'output del registro:

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

quando si imposta debug su true, tutto funziona normalmente? –

+0

sì - Posso accedere a tutto normalmente (tutti i miei URL funzionano, tutto). – lightningmanic

+0

Che aspetto ha la tupla template_dirs? –

risposta

12

Risulta avevo bisogno di aggiungere il mio indirizzo IP ai "allowed_hosts" nel mio file settings.py. Grazie alla registrazione degli errori, finalmente sono riuscito a vederlo.

codice vero e proprio:

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

Dopo il riavvio di Apache, tutto funziona correttamente ora!

+2

Grazie per essere tornato per pubblicare la soluzione! Mai saputo di 'ALLOWED_HOSTS', sembra che si tratti di una nuova funzionalità di sicurezza: http://git.io/9Ytk6A – Matt

+0

Bene, non è il tuo indirizzo IP che dovresti aggiungere, ma un HTTP-Host valido. Quando si accede al server usando il suo indirizzo IP, questo è lo stesso, ma probabilmente si desidera impostarlo su un FQDN negli ambienti di produzione. Vedi la [documentazione di Django a riguardo] (https://docs.djangoproject.com/en/1.5/ref/settings/#allowed-hosts). – gertvdijk

8

Si potrebbe provare la registrazione di tutto per un file da naildown la causa .

# 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

Questo non ha inserito nulla in "/ var/log/django" ... – lightningmanic

+3

Non sono sicuro del motivo per cui non stava scrivendo nulla all'inizio - ma dopo alcune altre modifiche e alcune modifiche ai permessi, sono stato in grado di ottenere il registro sputare cose. Grazie! – lightningmanic

Problemi correlati