3

PythonフラスコアプリをApacheサーバーにデプロイしました。これが私のabc.confファイルです:

WSGIDaemonProcess voting_app threads=5
WSGIScriptAlias /election /var/www/voting_app/voting.wsgi

LogLevel info
ErrorLog "/var/www/voting_app/error.log"
CustomLog "/var/www/voting_app/access.log" combined

<Directory /var/www/voting_app>
    WSGIProcessGroup voting_app
    WSGIApplicationGroup %{GLOBAL}
    Order deny,allow
    Allow from all
</Directory>

デバッグを確認するために、アプリケーションで構文エラーを作成しました。サーバーを再起動すると、500サーバーエラーが発生しますが、エラーの詳細がどこにも表示されません。ログとして追加した2つのファイルを確認しました。これらは完全に空白です。のログファイルも同様です/var/log/apache2。ここで何が欠けていますか?

4

3 に答える 3

6

組み込みの開発サーバーではなく、本番環境でFlaskを実行すると、アプリケーションの例外がHTTP 500応答に変換されますが、ログには記録されません。だからあなたが見ているものは正常です。

サイトを表示しているのが1人だけの場合は、開発サーバーで自動的に実行されるように、デバッグモードを一時的に有効にすることができます。これを行う方法については、以下を参照してください。

http://flask.pocoo.org/docs/quickstart/#debug-mode

具体的には:

app.debug = True

ここで、「app」はFlaskクラスのインスタンスです。

これにより、リクエストを行っているブラウザにエラーの詳細が表示されます。

実際の本番システムでは、明らかにそれを使用するべきではないので、その場合は、そのようなアプリケーションエラーをログに記録するようにFlaskを設定する必要があります。そのために参照してください:

http://flask.pocoo.org/docs/errorhandling/

于 2012-09-16T05:06:37.200 に答える
0

Apacheがvoting_appディレクトリに書き込みアクセス権を持っているかどうかを確認しましたか?

于 2012-09-12T16:08:12.697 に答える
0

Ubuntu 11.10以降で実行している場合は、このバグに噛まれている可能性があります。どうやら、Pythonサブプロセスがクラッシュすると、スタックトレースがApacheログにダンプされるはずですが、失敗する場合もあります。そのバグレポートは、mod_wsgiのメンテナによる別のバグレポートを参照しています。レポーターは問題のデバッグにいくらかの進歩を遂げましたが、2013年に立ち往生し、AFAICTの進歩はその後止まりました。

少なくとも今のところは、Graham Dumpletonの回答に従い、Flaskのドキュメントで説明されているようにアプリケーションのロガーを構成する必要があります。初期設定が失敗した場合に備えて、そのロガー構成コードをtry-exceptブロックでラップすることをお勧めします。

于 2014-08-26T00:42:50.393 に答える