2016-07-11 11 views
1

私はUbuntuバックエンドでApache2サーバーを使ってDjangoを実行しています。私のサイトの負荷では、500の内部サーバーエラーが発生します。これはmail_adminsメソッドが呼び出され、エラーであることを私には見えますmail_adminsがDjango/Apache2の接続を拒否しましたか?

AH00094: Command line: '/usr/sbin/apache2'  
mod_wsgi (pid=9568): Exception occurred processing WSGI script '/home/ubuntu/project/project/wsgi.py'. 
Traceback (most recent call last): 
File "/home/ubuntu/.virtualenvs/api/local/lib/python2.7/site- packages/django/core/handlers/wsgi.py", line 177, in __call__ 
    response = self.get_response(request) 
File "/home/ubuntu/.virtualenvs/api/local/lib/python2.7/site-packages/django/core/handlers/base.py", line 216, in get_response 
    'request': request 
File "/usr/lib/python2.7/logging/__init__.py", line 1178, in error 
    self._log(ERROR, msg, args, **kwargs) 
File "/usr/lib/python2.7/logging/__init__.py", line 1271, in _log 
    self.handle(record) 
File "/usr/lib/python2.7/logging/__init__.py", line 1281, in handle 
    self.callHandlers(record) 
File "/usr/lib/python2.7/logging/__init__.py", line 1321, in  callHandlers 
    hdlr.handle(record) 
File "/usr/lib/python2.7/logging/__init__.py", line 749, in handle 
    self.emit(record) 
File "/home/ubuntu/.virtualenvs/api/local/lib/python2.7/site-packages/django/utils/log.py", line 117, in emit 
    self.send_mail(subject, message, fail_silently=True, html_message=html_message) 
File "/home/ubuntu/.virtualenvs/api/local/lib/python2.7/site-packages/django/utils/log.py", line 120, in send_mail 
    mail.mail_admins(subject, message, *args, connection=self.connection(), **kwargs) 
File "/home/ubuntu/.virtualenvs/api/local/lib/python2.7/site-packages/django/core/mail/__init__.py", line 97, in mail_admins 
    mail.send(fail_silently=fail_silently) 
File "/home/ubuntu/.virtualenvs/api/local/lib/python2.7/site-packages/django/core/mail/message.py", line 292, in send 
    return self.get_connection(fail_silently).send_messages([self]) 
File "/home/ubuntu/.virtualenvs/api/local/lib/python2.7/site-packages/django/core/mail/backends/smtp.py", line 100, in send_messages 
    new_conn_created = self.open() 
File "/home/ubuntu/.virtualenvs/api/local/lib/python2.7/site-packages/django/core/mail/backends/smtp.py", line 58, in open 
    self.connection = connection_class(self.host, self.port, **connection_params) 
File "/usr/lib/python2.7/smtplib.py", line 256, in __init__ 
    (code, msg) = self.connect(host, port) 
File "/usr/lib/python2.7/smtplib.py", line 316, in connect 
    self.sock = self._get_socket(host, port, self.timeout) 
File "/usr/lib/python2.7/smtplib.py", line 291, in _get_socket 
    return socket.create_connection((host, port), timeout) 
File "/usr/lib/python2.7/socket.py", line 571, in create_connection 
    raise err 
error: [Errno 111] Connection refused 

:Apacheのログは次のようになります。それが必要な場合はwsgi.pyまたは他のファイルの内容を投稿できます。私のアプリケーションには明示的な電子メールの使用が含まれていないので、どのように起こっているのか分かりません。何か案は?ありがとう。

答えて

1

Djangoには、500エラーが発生したときに管理者に電子メールを送信するための特別なロガーがあります。詳細についてはhttps://docs.djangoproject.com/en/1.9/topics/logging/#django.utils.log.AdminEmailHandlerをご覧ください。

例外がスローされ、Djangoはあなたに電子メールを送信することによってそれを伝えようとしますが、電子メールは送信できないため、別の例外が発生します。おそらく実際の例外の原因は、電子メールを送信できないことが原因で発生した例外の前です。しかし、500エラーが発生したときにdjangoがこれらの電子メールを送信できるように電子メール設定を修正することを提案します。これは素晴らしい機能です(Sentryのような完全な例外トラッカーの第一歩です)。何らかの理由でそのサーバーからメールを送信することができない、場合、私は、少なくともコンソール(EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend')のいずれかにあなたの電子メールのバックエンド(https://docs.djangoproject.com/en/1.9/topics/email/#email-backends)を設定したり、メールバックエンドが動作するよう

 
EMAIL_BACKEND = 'django.core.mail.backends.filebased.EmailBackend' 
EMAIL_FILE_PATH = '/tmp/app-messages' # change this to a proper location 

を提出することをお勧めします。

+0

ありがとうございました!問題は 'settings.py'ファイルの無効な電子メールアドレスでした。デフォルト値は 'webmaster @ localhost'でしたが、明らかにubuntuはこれを「疑わしい」アドレスにフラグを立てていますので、修正する必要がありました。 @セラーフェイム – user2740614

関連する問題