2013-02-26 5 views
10

Mam aplikację Django wdrożoną na CentOS. Oto co mój plik httpd.conf wygląda następująco: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: To jest mój 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: To jest mój Admin/Wysyłanie setup:

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

SEND_BROKEN_LINK_EMAILS = True 

DEFAULT_FROM_EMAIL = '[email protected]' 
SERVER_EMAIL = DEFAULT_FROM_EMAIL 

W moim katalog szablonów, zdefiniowałem niestandardowy plik 500.html. Kiedy ustawiam settings.py na DEBUG = False, nie mogę dostać się nigdzie na mojej stronie, nie widząc tej niestandardowej strony 500.html.

Co jeszcze dziwniejsze, to fakt, że w plikach dziennika nie ma błędów - nie jestem więc pewny, gdzie szukać i jak postępować. Wiem, że może zobaczyć szablony z powodu mojego niestandardowego pliku 500.html, ale nie jestem pewien, co powoduje błędy 500 serwera wewnętrznego.

EDIT: Po dalszej konfiguracji, udało mi się dostać jakieś wyjście błędów (dzięki @Matt Stevens), tutaj jest wyjście dziennika:

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

Po ustawieniu debugowania na wartość prawda, czy wszystko działa normalnie? –

+0

tak - mogę uzyskać dostęp do wszystkiego normalnie (wszystkie moje adresy URL działają, wszystko). – lightningmanic

+0

Jak wygląda twoja krotka szablonów? –

Odpowiedz

12

Okazuje się, że muszę dodać mój adres IP do „ALLOWED_HOSTS” w moim pliku settings.py. Dzięki rejestrowaniu błędów w końcu mogłem to zobaczyć.

Rzeczywisty kod:

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

Po restarcie Apache, wszystko działa prawidłowo teraz!

+2

Dzięki za powrót do opublikowania rozwiązania! Nigdy nie wiedziałem o 'ALLOWED_HOSTS', wygląda na to, że jest to nowa funkcja bezpieczeństwa: http://git.io/9Ytk6A – Matt

+0

Cóż, to nie jest twój adres IP, który powinieneś dodać, ale poprawny host HTTP. Uzyskując dostęp do serwera przy użyciu jego adresu IP, jest taki sam, ale prawdopodobnie chcesz ustawić go na nazwę FQDN w środowiskach produkcyjnych. Zobacz [dokumentację Django na ten temat] (https://docs.djangoproject.com/en/1.5/ref/settings/#allowed-hosts). – gertvdijk

8

można spróbować zalogowaniu wszystko do pliku do naildown przyczynę .

# 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

Nie wpisano niczego w "/ var/log/django" ... – lightningmanic

+3

Nie wiem, dlaczego na początku nic nie napisano - ale po kilku innych zmianach i modyfikacjach uprawnień udało mi się uzyskać log wypluć rzeczy. Dzięki! – lightningmanic