2013-02-26 29 views
10

私はCentOSにDjangoアプリケーションをデプロイしています。ここに私のhttpd.confファイルは、次のようになります。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:これは私の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です:これは、セットアップをメールで送信/私の管理者である:

私は
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 Internal Serverのエラーを引き起こしているのか分かりません。

EDIT:さらに設定した後、私はいくつかのエラー出力(@Mattスティーブンスのおかげで)得ることができ、ここでは、ログ出力は次のとおりです。

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

debugをtrueに設定すると、すべて正常に機能しますか? –

+0

はい - 私はすべて正常にアクセスできます(私のURLはすべて動作します)。 – lightningmanic

+0

template_dirsタプルはどのように見えますか? –

答えて

12

私は私のsettings.pyファイルの「ALLOWED_HOSTS」に自分のIPアドレスを追加する必要が判明。エラーログのおかげで、私はついにそれを見ることができました。

実際のコード:Apacheの再起動後に

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

関連する問題