2013-02-26 3 views
10

CentOS에 장고 응용 프로그램을 배포했습니다.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 파일을 정의했습니다. 내 settings.py에 을 설정하면이 사용자 지정 500.html 페이지를 보지 않고도 내 사이트의 어느 곳으로도 이동할 수 없습니다.

로그 파일에 오류가 없다는 사실이 훨씬 이상합니다. 그래서 어디를 보거나 진행할 지 확신 할 수 없습니다. 내 사용자 지정 500.html 파일 때문에 템플릿을 볼 수 있지만 500 내부 서버 오류의 원인을 모르겠습니다.

편집 : 당신은 원인을 naildown 할 파일에 모든 로그인 시도 할 수

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

디버그를 true로 설정하면 모든 것이 정상적으로 작동합니까? –

+0

예 - 정상적으로 모든 항목에 액세스 할 수 있습니다 (모든 URL이 작동하며 모든 것). – lightningmanic

+0

template_dirs 튜플의 모양은 무엇입니까? –

답변

12

내가 내 settings.py 파일에서 "ALLOWED_HOSTS"내 IP 주소를 추가하는 데 필요한 밝혀졌습니다. 오류 로깅 덕분에 마침내 그것을 볼 수있었습니다.

실제 코드 : 아파치를 다시 시작 후

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

은, 모든 이제 제대로 작동!

+2

해결책을 게시하기 위해 다시 방문해 주셔서 감사합니다. 'ALLOWED_HOSTS'에 대해 전혀 알지 못했지만 새로운 보안 기능인 것 같습니다 : http://git.io/9Ytk6A – Matt

+0

글쎄, 거기에 추가해야하는 IP 주소가 아니라 유효한 HTTP 호스트입니다. IP 주소를 사용하여 서버에 액세스 할 때도 마찬가지지만 프로덕션 환경에서는이 값을 FQDN으로 설정하려고합니다. [Django 관련 문서] (https://docs.djangoproject.com/en/1.5/ref/settings/#allowed-hosts)를 참조하십시오. – gertvdijk

8

: 추가 구성 후, 나는 몇 가지 오류 출력 (@ 매트 스티븐스 덕분에) 얻을 수 있었다, 여기에 로그 출력 .

# 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

관련 문제