nginx + uwsgi:—使用できない修飾子が要求されました:0-


81

Ubuntu 12.04、nginx 1.2.0、uwsgi1.0.3。

次のコマンドでuwsgiを起動します。

uwsgi -s 127.0.0.1:9010 -M -t 30 -A 4 -p 4 -d /var/log/uwsgi.log

リクエストごとに、nginxは502で応答し、uwsgiは次の行をログに記録するように書き込みます。

-- unavailable modifier requested: 0 --

Ubuntuでは、uwsgiはサービスとして開始されますservice uwsgi start
sorin 2012年

回答:


109

元の回答

以下のためのPython 2のUbuntu 11.10上、使用してupstart、用のPythonプラグインをインストールuWSGIしてapt-get install uwsgi-plugin-python、あなたの設定するには、iniファイルを使用している場合はuWSGIアプリを、その後、追加plugins = python[uwsgi]セクションと、それはこの問題を解決する必要があります。

編集:Python3およびUbuntu17.10用に更新

以下のためのPython 3のUbuntu 17.10上、使用してsystemd、用のPythonプラグインをインストールuWSGIしてapt-get install uwsgi-plugin-python3、あなたの設定するには、iniファイルを使用している場合はuWSGIアプリを、その後、追加plugins = python[uwsgi]セクションと、それはこの問題を解決する必要があります。

ファイルを使用してアプリを構成する方法など、python/uWSGIアプリの使用を開始する方法のini詳細については、この便利なガイドをご覧ください。


これに相当するもの(yumプラグインのインストール+ uwsgi構成の変更)は、CentOS7で機能しました。
マイクハウズデン2017年

私の頭を壊していて、この問題を修正することができません。ありがとうございました !
SuperNova 2018年

アルパインLinuxはどうですか?
アダムパーキン

「個々のuwsgiアプリ構成」のファイルがどこにあるのかわかりません。具体的に教えてください。これは私のuwsgiアプリのiniファイルですか?/ etc / somethingファイル?たぶん、ファイルの内容がどのように見えるかのサンプルを貼り付けて、あなたが何を参照しているのかわかりますか?そして、ファイルの典型的な場所は?
ジェイソン

これについて心配しなければならなかったのでかなり長い間(実際には7年)ですが、私は確かにuwsgiアプリのiniファイルを意味します。ご想像のとおり、設定ファイルはもうありませんが、グーグルですばやく検索すると、この(一見)便利なガイドが作成されました。iniファイルの場所については、ほぼどこにでも現実的に存在する可能性があります。特に冒険心があれば、次のように、世界中の別のWebサーバーからそのiniファイルを提供することもできます。uwsgi --ini http://uwsgi.it/configs/myapp.ini
SHaKie19年

26

uwsgi-plugin-python3プラグインをインストールし、コマンド--plugin python3uwsgi開始するオプションを追加することで解決しました


2
@SHaKieの回答で解決された詳細を含む幅広い回答を記入し、質問を設定してください
b1_ 2012

15

Ubuntuでupstartからuwsgiを起動しています。を実行しapt-get install uwsgi-plugin-pythonplugins=pythonから、/ etc / uwsgi / applications-availableのapplication.iniに追加することで問題を解決しました。


8

http://uwsgi-docs.readthedocs.org/en/latest/ThingsToKnow.htmlから、「リクエストを特定のプラグインにルーティングするには、ウェブサーバーは修飾子と呼ばれるマジックナンバーをuWSGIインスタンスに渡す必要があります。デフォルトではこれnumberは0に設定され、Pythonにマッピングされます。」

私はbashスクリプトに9を使用していますが、機能しています。番号とその意味は次のページにあります:http//uwsgi-docs.readthedocs.org/en/latest/Protocol.html

私のnginx構成では:

location ~ .cgi$ {
    include uwsgi_params;
    uwsgi_modifier1 9;
    uwsgi_pass 127.0.0.1:3031;
}


0

私はPython3でUbuntu18.04を使用しています。以下はそれを機能させるために使用した正確な構成です。

Python 3uWSGIプラグインがインストールされている必要があります。

apt install uwsgi-plugin-python3

Nginxサイト構成は、uWSGIソケットを指している必要があります。後の手順で、ポートが構成と一致していることを確認してください。

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

Nginx構成をリロードして、今行った変更を反映します。

systemctl reload nginx

構成には、コマンドライン引数またはiniファイルを使用できます。作成しましたuwsgi.ini。ソケットアドレスがnginx構成と一致していることを確認してください。

[uwsgi]
socket = 127.0.0.1:9090
chdir = /var/www
processes = 4
threads = 2
plugins = python3
wsgi-file = /var/www/app.py

私のapp.pyには基本的な例があります:

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

次に、コマンドラインからuWSGIサーバーを起動します。

uwsgi uwsgi.ini
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.