私は自分のApacheサーバーのセットアップを持っており、mod_wsgiを介してFlaskの応答を処理しています。Apacheとmod_wsgiでFlaskルートを使用するにはどうすればよいですか?
[/ MNT/WWW /:私は上記のパスに対応するWSGIファイルを追加した
【のhttpd.conf]
WSGIScriptAlias /service "/mnt/www/wsgi-scripts/service.wsgi"
:私は、エイリアスを介しWSGIスクリプトを登録しましたWSGI-スクリプト/ service.wsgi]
import sys
sys.path.insert(0, "/mnt/www/wsgi-scripts")
from service import application
そして私は、サービスモジュールを提供して簡単なテストフラスコPythonスクリプトがあります。
を0[/mnt/www/wsgi-scripts/service.py]
from flask import Flask
app = Flask(__name__)
@app.route('/')
def application(environ, start_response):
status = '200 OK'
output = "Hello World!"
response_headers = [('Content-type', 'text/plain'),
('Content-Length', str(len(output)))]
start_response(status, response_headers)
return [output]
@app.route('/upload')
def upload(environ, start_response):
output = "Uploading"
status = '200 OK'
response_headers = [('Content-type', 'text/plain'),
('Content-Length', str(len(output)))]
start_response(status, response_headers)
return [output]
if __name__ == '__main__':
app.run()
私は私のウェブサイトのURLを[ホスト名]期待して私が手としてそれが動作/サービスに行くの "Hello World!"バック。問題は、上の例の「アップロード」のように、他のルートをどのように動作させるのか分かりません。これはスタンドアローンのFlaskではうまく動作しますが、mod_wsgiではうまく動作しません。私が想像できる唯一のことは、私が望む各エンドポイントのためのhttpd.confに別々のWSGIスクリプトエイリアスを登録することですが、それはFlaskのファンシールーティングサポートを奪います。この仕事をする方法はありますか?
あなたは '/ service/upload'を参照しようとしましたか?あなたはうれしく驚くかもしれません。 –
私が/ service/uploadを打つと、リクエストはまだ 'application'機能に送られます。実際、アプリケーション機能の前にroute文を削除することはできますが、それでも動作します。アプリケーションのエントリポイントとしてmod_wsgiがアプリケーションを常に使用しているようです。 Flaskのルーティングロジックを起動する「アプリケーション」の中で何かをする必要があるように感じます。 –