nginx + uwsgi: - yêu cầu sửa đổi không khả dụng: 0 -


81

Ubuntu 12.04, nginx 1.2.0, uwsgi 1.0.3.

Tôi bắt đầu uwsgi bằng lệnh sau:

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

Trên mỗi yêu cầu, nginx trả lời bằng 502 và uwsgi ghi vào nhật ký dòng sau:

-- unavailable modifier requested: 0 --

Trên Ubuntu uwsgi được bắt đầu như là một dịch vụ: service uwsgi start.
sorin

Câu trả lời:


109

Câu trả lời ban đầu

Đối với Python 2 trên Ubuntu 11.10, bằng cách sử dụng upstart, cài đặt plugin python cho uWSGIvới apt-get install uwsgi-plugin-pythonvà nếu bạn đang sử dụng tệp ini để định cấu hình uWSGIứng dụng của mình , thì hãy thêm plugins = pythonvào [uwsgi]phần và nó sẽ giải quyết vấn đề này.

Chỉnh sửa: Đã cập nhật cho Python 3 và Ubuntu 17.10

Đối với Python 3 trên Ubuntu 17.10, bằng cách sử dụng systemd, cài đặt plugin python cho uWSGIvới apt-get install uwsgi-plugin-python3và nếu bạn đang sử dụng tệp ini để định cấu hình uWSGIứng dụng của mình , thì hãy thêm plugins = pythonvào [uwsgi]phần và nó sẽ giải quyết vấn đề này.

Để biết thêm thông tin về cách bắt đầu với python/ uWSGIứng dụng, bao gồm cách định cấu hình chúng bằng một initệp, vui lòng xem hướng dẫn hữu ích này


Điều tương đương với điều này (cài đặt plugin yum + thay đổi cấu hình uwsgi) chỉ hoạt động với tôi trên CentOS7.
Mike Howsden

Tôi đã bị vỡ đầu, không thể khắc phục sự cố này. Cảm ơn bạn !
SuperNova

Điều gì về linux alpine?
Adam Parkin

Tôi không biết tệp cho "cấu hình ứng dụng uwsgi riêng lẻ" ở đâu. Bạn có thể đặc sắc hơn không? Đây có phải là tệp ini của ứng dụng uwsgi của tôi không? Tệp / etc / something? Có thể dán một mẫu nội dung tệp trông như thế nào để tôi biết bạn đang đề cập đến điều gì? Và một vị trí điển hình cho tệp?
Jason

Đã khá lâu kể từ khi tôi phải lo lắng về điều này (thực tế là 7 năm) nhưng tôi thực sự muốn nói đến uwsgitệp ini của ứng dụng. Như bạn có thể tưởng tượng, tôi không còn có bất kỳ tệp cấu hình nào nằm xung quanh nhưng một tìm kiếm nhanh trên google đã tạo ra hướng dẫn (dường như) hữu ích này . Đối với vị trí của tệp ini, nó thực tế có thể sống ở hầu hết mọi nơi. Nếu bạn đã cảm thấy đặc biệt thích mạo hiểm, bạn thậm chí có thể phục vụ lên rằng tập tin này từ một máy chủ ở bất cứ đâu web trên thế giới, như vậy:uwsgi --ini http://uwsgi.it/configs/myapp.ini
SHaKie

26

Giải quyết bằng cách cài đặt uwsgi-plugin-python3plugin và thêm --plugin python3tùy chọn để uwsgibắt đầu lệnh


2
Vui lòng viết câu trả lời rộng với nhiều chi tiết hơn và đặt câu hỏi như đã giải quyết với @SHaKie answer
b1_

15

Tôi đang bắt đầu uwsgi từ phiên bản mới trên Ubuntu. Tôi đã giải quyết vấn đề bằng cách chạy apt-get install uwsgi-plugin-pythonvà sau đó thêm plugins=pythonvào application.ini của tôi trong / etc / uwsgi / Applications-available.


8

từ http://uwsgi-docs.readthedocs.org/en/latest/ThingsToKnow.html , "Để định tuyến các yêu cầu đến một plugin cụ thể, máy chủ web cần chuyển một số ma thuật được gọi là công cụ sửa đổi cho các bản sao uWSGI. Theo mặc định, điều này số được đặt thành 0, được ánh xạ tới Python. "

Tôi đang sử dụng 9 cho một tập lệnh bash và nó đang hoạt động. các con số và ý nghĩa của chúng có trên trang này: http://uwsgi-docs.readthedocs.org/en/latest/Protocol.html

trong cấu hình nginx của tôi:

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

0

Tôi đang sử dụng Ubuntu 18.04 với Python 3. Dưới đây là cấu hình chính xác mà tôi đã sử dụng để nó hoạt động.

Bạn phải cài đặt plugin Python 3 uWSGI:

apt install uwsgi-plugin-python3

Cấu hình trang web Nginx của bạn phải trỏ đến ổ cắm uWSGI của bạn. Đảm bảo rằng cổng phù hợp với cấu hình trong các bước sau.

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

Tải lại cấu hình Nginx để phản ánh những thay đổi bạn vừa thực hiện:

systemctl reload nginx

Bạn có thể sử dụng đối số dòng lệnh hoặc tệp ini để cấu hình. Tôi đã tạo ra uwsgi.ini. Đảm bảo rằng địa chỉ ổ cắm khớp với cấu hình nginx của bạn.

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

App.py của tôi chỉ có một ví dụ cơ bản:

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

Bây giờ khởi động máy chủ uWSGI từ dòng lệnh:

uwsgi uwsgi.ini
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.