私はhttp://www.enigmeta.com/2012/08/16/starting-flask/のチュートリアルに従って、 mod_wsgi を使用して単純なフラスコ アプリを開発し、Apache にデプロイしています。私はそれをApache構成の欠陥に絞り込んだと思います。コマンド ラインから helloflask.py を実行すると、問題なく動作します。localhost:5000 の別のシェルから wget 経由でアクセスでき、正しい応答が得られます。他の仮想ホスト (wsgi 以外) も稼働しているので、Apache が稼働しており、ポート 80 で他の要求に応答していることがわかります。
私は次の構造を持っています:
/sites/helloflask.mydomain.com
/helloflask
application.wsgi
helloflask.py
(rest of env from virtualenv)
/log
access.log
error.log
ハローフラスコ.py:
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return "Hello World!"
if __name__ == "__main__":
app.run()
アプリケーション.wsgi:
import os, sys, logging
logging.basicConfig(stream=sys.stderr)
PROJECT_DIR = '/sites/helloflask.mydomain.com/helloflask'
activate_this = os.path.join(PROJECT_DIR, 'bin', 'activate_this.py')
execfile(activate_this, dict(__file__=activate_this))
sys.path.append(PROJECT_DIR)
from helloflask import app as application
Apache 構成: /etc/apache2/sites-available/helloflask.mydomain.com
<VirtualHost *:80>
ServerName helloflask.mydomain.com
WSGIDaemonProcess helloflask user=myuser group=myuser threads=5
WSGIScriptAlias / /sites/helloflask.mydomain.com/helloflask/application.wsgi
<Directory /sites/helloflask.mydomain.com/helloflask>
WSGIProcessGroup helloflask
WSGIApplicationGroup %{GLOBAL}
Order deny,allow
Allow from all
</Directory>
LogLevel warn
ErrorLog /sites/helloflask.mydomain.com/log/error.log
CustomLog /sites/helloflask.mydomain.com/log/access.log combined
</VirtualHost>
vhost を有効にして、Apache を再起動しましたが、ブラウザーから応答がありません。「サーバーが見つかりません」なので、500 応答はなく、何もありません。アクセス/エラー ログにエントリがありません (この vhost に固有)。再起動するたびに、包括的なApacheエラーログに次のように表示されます。
[Sat Jun 29 20:07:58 2013] [notice] caught SIGTERM, shutting down
[Sat Jun 29 20:07:59 2013] [warn] mod_wsgi: Compiled for Python/2.7.2+.
[Sat Jun 29 20:07:59 2013] [warn] mod_wsgi: Runtime using Python/2.7.3.
[Sat Jun 29 20:07:59 2013] [notice] Apache/2.2.22 (Ubuntu) PHP/5.3.10-1ubuntu3.6 with Suhosin-Patch mod_wsgi/3.3 Python/2.7.3 configured -- resuming normal operations
Python のバージョンが異なることを示す 2 つの [warn] 行が私の問題なのかどうか疑問に思っていますが、それを修正するためにどのように、または何を変更すればよいかわかりません。任意の提案をいただければ幸いです。
ありがとう!