5

Nginx で uwsgi を使用して Python コードを実行しています。

uwsgi をディレクトリにバインドし、ブラウザでサーバーから呼び出した .py ファイルをレンダリングしたいと思います。ここでは PHP のように考えています (/index.php はそのファイルを実行し、/login.php はそのファイルを実行します)。

これは可能性がありますか?または、uwsgi で単一のモジュール/アプリ/ファイルを明示的に指定することしかできませんか?

これが私の初期化構文です:

/opt/uwsgi/uwsgi -s 127.0.0.1:9001 -M 4 -t 30 -A 4 -p 4 -d /var/log/uwsgi.log --pidfile /var/run/uwsgi.pid --pythonpath /srv/www

/srv/www.py ファイルが実行されるフォルダーとして機能できると思いました。

これが私のnginx構成です:

server {
    listen       80;
    server_name  DONT_NEED_THIS;

    access_log  /srv/www/logs/access.log;
    error_log   /srv/www/logs/error.log;

    location / {
        root  /srv/www;

        # added lines    
        include        uwsgi_params;
        uwsgi_pass     127.0.0.1:9001;

    }

現状では、Web ルート (つまり、www.site.com/) を呼び出そうとすると、次のようになります。

wsgi application not found

次の index.py ファイルを使用します。

import sys
import os

sys.path.append(os.path.abspath(os.path.dirname(__file__)))

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]

何か案は?

ありがとう!

4

2 に答える 2

10

WSGI は PHP とは異なります。一連の .py ファイルを含むディレクトリを uwsgi に指定することはできません。実際、サーバーからアクセスできるパブリック ディレクトリで Python モジュールを利用できるようにすることは絶対にしないでください。uwsgi を WSGI アプリケーション、できればフレームワークに接続する必要があります。WSGI の詳細については、こちらをご覧ください。小さくてシンプルな WSGI フレームワークであるbottleを調べてください。優れたドキュメントがあり、簡単に始めることができます。ただし、実際にはPython用の優れたWebフレームワークがたくさんあるので、自由に見て回ってください:)

于 2011-06-06T04:35:00.177 に答える
3

あなたはこのスレッドを読みたいかもしれません:

http://lists.unbit.it/pipermail/uwsgi/2011-March/001657.html

于 2011-06-06T04:44:13.480 に答える