質問

MOD_WSGIを使用して、Apacheの下でPython WebマイクロフレームワークであるFlaskをセットアップしています。

アプリケーションは、Python confparserを除き、正常に機能します。これはエラーをスローしません:

parser = ConfigParser.ConfigParser()
parser.read('snati.con')

しかし、私が追加するとき:

parser.get('database', 'user')

私は手に入れました 内部サーバーエラー Apacheのログは何もありません

私も試しました:

file = open("sample.txt")

同じ結果。

構成の問題がいくつかある必要がありますが、見つかりません。

私のapache confは次のように見えます:

WSGIRestrictStdout Off

<VirtualHost *:80>
    ServerName my.com

    WSGIDaemonProcess myapp user=me group=me threads=5

    WSGIScriptAlias / /home/me/www/myapp.wsgi

    <Directory /home/me/www/myapp >
        WSGIProcessGroup myapp
        WSGIApplicationGroup %{GLOBAL}
        Order deny,allow
        Allow from all
    </Directory>
</VirtualHost>

私のapp.wsgi

#active the python virtualenv for this application
activate_this = '/home/gilles/www/snati/env/bin/activate_this.py'
execfile(activate_this, dict(__file__=activate_this))


import sys
sys.path.insert(0, '/home/gilles/www/snati/src')
sys.stdout = sys.stderr

from app import app as application

何が間違っている可能性があり、なぜApacheログでエラーを取得できないのですか?

役に立ちましたか?

解決

相対パスではなく、Pythonコードのファイルに絶対パスを使用します。

プロセスの現在の作業ディレクトリは、アプリケーションコードとファイルがある場所ではありません。

デバッグモードではない場合、フラスコはそれらを記録しないため、エラーが表示されません。それらをキャプチャして電子メールを送信するためにアプリケーションをセットアップするか、その他の方法で記録します。フラスコが後者に持っているオプションは覚えていません。

他のヒント

ホーム変数を使用してファイルを設定するためにパスを追加する

WSGIDaemonProcess myapp user=me group=me threads=5 home=/path/to/your/directory

これにより、プロセスの作業ディレクトリが変更されます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top