2017-05-07 11 views
0

API用のフラスコアプリケーションを使用してApacheサーバーをセットアップしようとしています。 mydomain.comにアクセスしているユーザーがapacheからindex.htmlを取得し、mydomain.com/apiフラスコへのリクエストがjsonに対応する必要がある場合。フラスコとスタティックファイルがmod_wsgで提供されています。

私はindex.htmlを入手できますが、mydomain.com/apiにアクセスすると404が見つかりません。

これは私のapache設定です。

<VirtualHost *:80> 
     ServerName temp.mydomain.com 
     ServerAlias mydomain.com 
     ServerAdmin [email protected] 

     WSGIDaemonProcess incubator-web user=incubator-web group=www-data home=/var/www/incubator-web threads=5 
     WSGIScriptAlias /api/ /var/www/incubator-web/incubator-web.wsgi 
     Alias//var/www/incubator-web/html/ 

     <Directory /var/www/incubator-web> 
       WSGIProcessGroup incubator-web 
       WSGIApplicationGroup %{GLOBAL} 
       WSGIScriptReloading On 
       Require all granted 
     </Directory> 
     ErrorLog /var/www/incubator-web/logs/error.log 

     <Directory /var/www/incubator-web/html> 
       Require all granted 
     </Directory> 
</VirtualHost> 

そして、私のフラスコアプリ:

from flask import Flask 

app = Flask(__name__) 

@app.route("/") 
def hello(): 
    return "Hello, World!" 

if __name__ == "__main__": 
    app.run(host="0.0.0.0") 

と私の.wsgiファイル:

#!/usr/bin/python 
import sys 
sys.path.insert(0, '/var/www/incubator-web') 
from incubator_web import app as application 

私はそう、私は私が欠けていることを推測しているすべてこれにはかなり新しいです何か明白です。

答えて

1

削除:

Alias//var/www/incubator-web/html/ 

追加:

DocumentRoot /var/www/incubator-web/html/ 

AliasWSGIScriptAliasよりも優先を取るようWSGIアプリケーションを隠しAlias/として設定します。 DocumentRootは、デフォルトのドキュメントディレクトリを指定する正しい方法です。

+0

私は 'WSGIScriptAlias/api /'を 'WSGIScriptAlias/api'に変更しなければならないと思います。あなたの修正プログラムを適用した後、私は多くのリダイレクトについて私のブラウザでエラーメッセージが表示されましたが、私は設定を変更しました(スラッシュを削除しました)Apacheを再起動し、ページをリロードして動作しました。 – evading

+0

ええ、私はほとんどそれについて何か言った。末尾にスラッシュが付いているかどうかは、使用されているPython Webフレームワークによって異なります。いくつかは必ずしもそれをうまく処理しない。 Flaskのように見えるのは、サブURLのマウントポイントに末尾にスラッシュを付けることができない場所です。 –

関連する問題