mod_wsgi python confパーサー
質問
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
これにより、プロセスの作業ディレクトリが変更されます。
所属していません StackOverflow