7

ここの手順に従って、ubuntuのmod-wsgiを使用してapache2にデプロイされたonefileflask-appを作成しました。元のフラスコアプリを使用すると、すべて正常に機能します。ただし、インポートnltkをフラスコアプリに追加すると、apacheがハングします(500なし)。

私はpython2.7とnltk2.0.4を使用しています

のパッケージでも同様の問題が発生したようです。設定

WSGIApplicationGroup %{GLOBAL}

VirtualHost構成で役に立ったようです。ただし、それでも同じ動作が得られます。誰かが同じ問題に遭遇しましたか?助けてくれてありがとう!

VirtualHost構成ファイルは次のとおりです。

<VirtualHost *:8080>

    # ---- Configure VirtualHost Defaults ----

    ServerAdmin jsmith@whoi.edu 

    DocumentRoot /home/bitnami/public_html/http

    <Directory />
            Options FollowSymLinks
            AllowOverride None
    </Directory>

    <Directory /home/bitnami/public_html/http/>
            Options Indexes FollowSymLinks MultiViews
            AllowOverride None
            Order allow,deny
            Allow from all
    </Directory>

    # ---- Configure WSGI Listener(s) ----

    WSGIDaemonProcess flaskapp user=www-data group=www-data processes=1 threads=5
    WSGIScriptAlias /flasktest1 /home/bitnami/public_html/wsgi/flasktest1.wsgi 

    <Directory /home/bitnami/public_html/http/flasktest1>
            WSGIProcessGroup flaskapp
            WSGIApplicationGroup %{GLOBAL}
            Order deny,allow
            Allow from all
    </Directory>

    # ---- Configure Logging ----

ErrorLog /home/bitnami/public_html/logs/error.log
LogLevel warn
CustomLog /home/bitnami/public_html/logs/access.log combined

これが変更されたフラスココードです

#!/usr/bin/python
from flask import Flask

import nltk
app = Flask(__name__)
@app.route('/')
def home():
    return """<html>
    <h2>Hello from Test Application 1</h2>
    </html>"""

@app.route('/<foo>')
def foo(foo):
    return """<html>
    <h2>Test Application 1</2>
    <h3>/%s</h3>
    </html>""" % foo

if __name__ == '__main__':
    "Are we in the __main__ scope? Start test server."
    app.run(host='0.0.0.0',port=5000,debug=True)
4

1 に答える 1

6

あなたが持っている場所:

<Directory /home/bitnami/public_html/http/flasktest1>
        WSGIProcessGroup flaskapp
        WSGIApplicationGroup %{GLOBAL}
        Order deny,allow
        Allow from all
</Directory>

そのはず:

<Directory /home/bitnami/public_html/http>
        WSGIProcessGroup flaskapp
        WSGIApplicationGroup %{GLOBAL}
        Order deny,allow
        Allow from all
</Directory>

ディレクティブが間違ったコンテキストにあるため、アプリをデーモンモードでもメインインタープリターでも実行していないためです。

そのディレクトリディレクティブは、上記の同じディレクトリのディレクティブと競合するため、それらをマージします。

mod_wsgi 3.0以降を使用している場合は、代わりに2番目のDirectoryブロックを削除して、次を使用してください。

WSGIDaemonProcess flaskapp threads=5
WSGIScriptAlias /flasktest1 /home/bitnami/public_html/wsgi/flasktest1.wsgi process-group=flaskapp application-group=%{GLOBAL}

これがデフォルトであるため、processes = 1が削除されていることに注意してください。これを設定すると、他の不要なことが暗示されます。とにかくApacheユーザーとして自動的に実行されるため、ユーザー/グループを設定する必要もありません。

于 2012-12-15T23:27:25.797 に答える