2016-04-20 12 views
0

私は、アプリケーションアカウントの下でlinux apache 2.4.12とmod_wsgi 4.5.2(mod_wsgi.soがApacheにインストールされています)を持っています。 Apacheは、アプリケーションアカウントの下でポート8050で動作します。テストmod_wsgiへのこのリンクに続いて:http://modwsgi.readthedocs.org/en/develop/user-guides/quick-configuration-guide.html#wsgi-application-script-fileと私はURL:http://mytest.mydomain.com:8050/myappを入力しました。それは "Hello World"を表示したので、私のmod_wsgiのインストール作業を示しました。次に、私はフラスコの塗布作業をすることができるかどうかを試しました。Pythonフラスコアプリケーションをlinuxのapacheとmod_wsgiで設定する

私は家/ MYUSERID/WSGI /下に簡単なhello.pyファイル作成:その後、私はのような簡単なWSGIファイルを作成し

from flask import Flask 
app = Flask(__name__) 

@app.route('/') 
def hello_world(): 
    return 'Hello World!' 

if __name__ == '__main__': 
    app.run() 

を:

import sys, os 
sys.path.insert(0, "/home/myuserId/wsgi") 

from hello import app as application 

その後、私はこれを含め、他の提案に従っhttp://flask.pocoo.org/docs/0.10/deploying/mod_wsgi/私のapache http.confファイルをvirtualhostで設定する:

<VirtualHost *:8050> 

    # ServerName www.example.com 

    WSGIDaemonProcess hello user=appuser group=appuser threads=5 
    WSGIScriptAlias//home/myuserId/wsgi/hello.wsgi 

<Directory /home/myuserId/wsgi> 
    WSGIProcessGroup hello 
    WSGIApplicationGroup %{GLOBAL} 
    Require all granted 
    Options +ExecCGI 
    AddHandler wsgi-script .wsgi 
</Directory> 
</VirtualHost> 

私はhttpd.confファイルを入手して、Apache w/oエラーを再起動しました。私はクロームでURLを入力した場合:http://mytest.mydomain.com:8050/helloまたはhttp://mytest.mydomain.com:8050/hello_world、私はこのエラーを得た:

**Not Found** 

The requested URL /hello was not found on this server. 
Apache/2.4.12 (Unix) mod_wsgi/4.5.2 Python/2.7.9 Server at mytest.mydomain.com port 8050. 

は、私の質問は以下のとおりです。

  1. 間違って私の設定ですか?
  2. 上記のhelloフラスコアプリケーションを使用するための正しいURLは何ですか?
  3. WSGIScriptAlias /hello /home/myuserId/wsgi/hello.wsgiはhelloアプリケーションをマウントしようとしましたが、見つかりませんでした。
  4. フラスコアプリのために、なぜconfファイルがアプリケーションをVirtualHostにconfする必要がありますか?

答えて

0

ホスト名でServerNameディレクティブを指定していません。その結果、VirtualHostと一致せず、最初のVirtualHostがApache設定ファイルで見つかったものに置き換えられます。

+0

私はVirtualHostタグをコメントアウトしました。 VirtualHostを使用して、ServerName mytest.mydomain.comを追加しましたが、動作しませんでした。しかし、VirtualHostについて言及して以来、私は別のWebアプリケーションを次のようにリバースプロキシで設定しています: ProxyPreserveHost On ProxyPass http:// localhost:8040/mywebapp/ProxyPassReverse http:// localhost: 8040/mywebapp/このVirtualHostをコメントアウトすると、wsgi virtualHostが機能しました。どうすれば一緒に仕事をすることができますか?あなたの返信とmod_wsgiの提供に感謝します。 – user3400152

+0

同じリスナーポート上にあるがホスト名が異なる場合は、それぞれに異なるServerNameを設定します。それ以外の場合は、2つのVirtualHostがURL名前空間の異なる部分をカバーする場合は、2つのVirtualHostを1つにマージします。 –

+0

ありがとうございます。できます。 – user3400152

関連する問題