Python uWSGI インストール設定

この記事では、簡単な WSGI アプリケーションと一般的な Web フレームワークのデプロイ方法を主に紹介します。

Ubuntu/Debian を例にとり、まず依存パッケージをインストールします。

apt-get install build-essential python-dev

Python で uWSGI をインストール

1、pip コマンドを使用:

pip install uwsgi

2、インストールスクリプトをダウンロード:

curl http://uwsgi.it/install | bash -s default /tmp/uwsgi

uWSGI バイナリを /tmp/uwsgi にインストールします。変更することもできます。

3、ソースコードからのインストール:

wget http://projects.unbit.it/downloads/uwsgi-latest.tar.gz
tar zxvf uwsgi-latest.tar.gz
cd uwsgi-latest
make

インストールが完了すると、現在のディレクトリに uwsgi バイナリファイルが生成されます。


最初の WSGI アプリケーション

簡単な "Hello World" から始めましょう。ファイル foobar.py を作成します。コードは次のとおりです。

def application(env, start_response):
    start_response('200 OK', [('Content-Type','text/html')])
    return [b"Hello World"]

uWSGI Python ローダーが検索するデフォルト関数application 。

次に、uWSGI を起動して HTTP サーバーを実行し、プログラムを HTTP ポート 9090 にデプロイします。

uwsgi --http :9090 --wsgi-file foobar.py

並行性と監視の追加

デフォルトでは、uWSGI は単一のプロセスと単一のスレッドで起動します。

使用できます--processesオプションを使用してプロセスを追加するか、または--threadsオプションを使用してスレッドを追加し、両方を同時に使用することもできます。

uwsgi --http :9090 --wsgi-file foobar.py --master --processes 4 --threads 2

上記のコマンドにより、4 つのプロセスが生成され、各プロセスには 2 つのスレッドがあります。

監視タスクを実行する場合は、stats サブシステムを使用できます。監視データの形式は JSON です。

uwsgi --http :9090 --wsgi-file foobar.py --master --processes 4 --threads 2 --stats 127.0.0.1:9191

uwsgitop(Linux の top コマンドに類似)をインストールして、監視データを確認できます。

pip install uwsgitop

Webサーバーと組み合わせて使用

uWSGI と Nginx Web サーバーを組み合わせて使用することで、より高い並行性能を実現できます。

一般的な nginx 設定は次のとおりです。

location / {
    include uwsgi_params;
    uwsgi_pass 127.0.0.1:3031;
}

上記のコードは、nginx が受信した Web リクエストをポート 3031 の uWSGI サービスに渡して処理することを示しています。

次に、uWSGI を起動して、ローカルで uwsgi プロトコルを使用できます。

uwsgi --socket 127.0.0.1:3031 --wsgi-file foobar.py --master --processes 4 --threads 2 --stats 127.0.0.1:9191

Web サーバーが HTTP を使用する場合、uWSGI にローカルで http プロトコルを使用するように指示する必要があります(これは、プロキシを自動生成する –http とは異なります)。

uwsgi --http-socket 127.0.0.1:3031 --wsgi-file foobar.py --master --processes 4 --threads 2 --stats 127.0.0.1:9191

Django のデプロイ

Django は最もよく使用される Python Web フレームワークです。Django プロジェクトが /home/foobar/myproject にあると仮定します。

uwsgi --socket 127.0.0.1:3031 --chdir /home/foobar/myproject/ --wsgi-file myproject/wsgi.py --master --processes 4 --threads 2 --stats 127.0.0.1:9191

--chdirプロジェクトのパスを指定するために使用します。

上記のコマンドを yourfile.ini 設定ファイルにまとめることができます。

[uwsgi]
socket = 127.0.0.1:3031
chdir = /home/foobar/myproject/
wsgi-file = myproject/wsgi.py
processes = 4
threads = 2
stats = 127.0.0.1:9191

次に、以下のコマンドを実行するだけで済みます。

uwsgi yourfile.ini

Flask のデプロイ

Flask は人気のある Python Web フレームワークです。

ファイル myflaskapp.py を作成します。コードは次のとおりです。

from flask import Flask

app = Flask(__name__)

@app.route('/')
def index():
    return "<span style='color:red'>I am app 1</span>"

以下のコマンドを実行します:

uwsgi --socket 127.0.0.1:3031 --wsgi-file myflaskapp.py --callable app --processes 4 --threads 2 --stats 127.0.0.1:9191
その他の拡張機能