2013-02-26 45 views
10

Tôi có một ứng dụng Django được triển khai trên CentOS. Đây là những gì file httpd.conf của tôi trông giống như: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: Đây là tôi 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: Đây là quản lý của tôi/gửi email thiết lập:

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

SEND_BROKEN_LINK_EMAILS = True 

DEFAULT_FROM_EMAIL = '[email protected]' 
SERVER_EMAIL = DEFAULT_FROM_EMAIL 

Trong tôi thư mục mẫu, tôi đã xác định tệp 500.html tùy chỉnh. Khi tôi đặt số settings.py của mình thành DEBUG = False, tôi không thể đến bất kỳ đâu trên trang web của mình mà không thấy trang 500.html tùy chỉnh này.

Điều kỳ lạ hơn nữa là thực tế là không có lỗi trong tệp nhật ký - vì vậy tôi không chắc chắn về nơi cần tìm hoặc cách tiếp tục. Tôi biết nó có thể thấy các mẫu vì tệp 500.html tùy chỉnh của tôi, nhưng tôi không chắc chắn nguyên nhân gây ra lỗi 500 Máy chủ nội bộ.

EDIT: Sau khi cấu hình hơn nữa, tôi quản lý để có được một số lỗi đầu ra (nhờ @ Matt Stevens), đây là sản phẩm ghi:

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

khi bạn đặt gỡ lỗi thành đúng, mọi chức năng có bình thường không? –

+0

có - Tôi có thể truy cập mọi thứ bình thường (tất cả các URL của tôi đều hoạt động, mọi thứ). – lightningmanic

+0

Mẫu template_dir của bạn trông như thế nào? –

Trả lời

12

Tắt Tôi cần thêm địa chỉ IP của mình vào "ALLOWED_HOSTS" trong tệp settings.py của mình. Nhờ lỗi đăng nhập, cuối cùng tôi cũng có thể thấy điều đó.

đang thực tế:

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

Sau một khởi động lại Apache, mọi thứ đều hoạt động bình thường bây giờ!

+2

Cảm ơn bạn đã quay lại để đăng giải pháp! Không bao giờ biết về 'ALLOWED_HOSTS', có vẻ như đây là một tính năng bảo mật mới: http://git.io/9Ytk6A – Matt

+0

Vâng, đó không phải là địa chỉ IP của bạn mà bạn nên thêm vào đó, nhưng là một HTTP-Host hợp lệ. Khi truy cập vào máy chủ của bạn bằng cách sử dụng địa chỉ IP của nó, điều này là như nhau, nhưng bạn có thể muốn đặt điều này thành một FQDN trong môi trường sản xuất. Xem [tài liệu Django về nó] (https://docs.djangoproject.com/en/1.5/ref/settings/#allowed-hosts). – gertvdijk

8

Bạn có thể thử đăng nhập tất cả mọi thứ vào một tập tin để naildown nguyên nhân .

# 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

Điều này không đặt bất cứ điều gì trong "/ var/log/django" ... – lightningmanic

+3

Không chắc chắn lý do tại sao nó không viết bất cứ điều gì lúc đầu - nhưng sau một vài thay đổi khác và sửa đổi một số quyền, tôi đã có thể nhận được đăng nhập để nhổ ra. Cảm ơn! – lightningmanic

Các vấn đề liên quan