Python uWSGI Installation und Konfiguration
Dieser Artikel stellt hauptsächlich vor, wie man einfache WSGI-Anwendungen und gängige Web-Frameworks bereitstellt.
Am Beispiel von Ubuntu/Debian installieren Sie zuerst die Abhängigkeitspakete:
apt-get install build-essential python-dev
uWSGI mit Python installieren
1. Mit dem pip-Befehl:
pip install uwsgi
2. Laden Sie das Installationsskript herunter:
curl http://uwsgi.it/install | bash -s default /tmp/uwsgi
Installieren Sie die uWSGI-Binärdatei nach /tmp/uwsgi; Sie können sie ändern.
3. Installation aus dem Quellcode:
wget http://projects.unbit.it/downloads/uwsgi-latest.tar.gz tar zxvf uwsgi-latest.tar.gz cd uwsgi-latest make
Nach Abschluss der Installation erhalten Sie eine uwsgi-Binärdatei im aktuellen Verzeichnis.
Die erste WSGI-Anwendung
Beginnen wir mit einem einfachen "Hallo Welt", indem wir die Datei foobar.py mit dem folgenden Code erstellen:
def application(env, start_response):
start_response('200 OK', [('Content-Type','text/html')])
return [b"Hello World"]
Die Standardfunktion, nach der der uWSGI-Python-Loader sucht, istapplication 。
Als Nächstes starten wir uWSGI, um einen HTTP-Server auszuführen und das Programm auf HTTP-Port 9090 bereitzustellen:
uwsgi --http :9090 --wsgi-file foobar.py
Hinzufügen von Nebenläufigkeit und Überwachung
Standardmäßig startet uWSGI einen einzelnen Prozess und einen einzelnen Thread.
Sie können die--processesOption verwenden, um weitere Prozesse hinzuzufügen, oder die--threadsOption verwenden, um weitere Threads hinzuzufügen, oder beides gleichzeitig.
uwsgi --http :9090 --wsgi-file foobar.py --master --processes 4 --threads 2
Der obige Befehl erzeugt 4 Prozesse mit jeweils 2 Threads.
Wenn Sie Überwachungsaufgaben durchführen müssen, können Sie das Stats-Subsystem verwenden. Das Format der Überwachungsdaten ist JSON:
uwsgi --http :9090 --wsgi-file foobar.py --master --processes 4 --threads 2 --stats 127.0.0.1:9191
Wir können uwsgitop installieren (ähnlich dem Linux-Befehl top), um die Überwachungsdaten anzuzeigen:
pip install uwsgitop
Verwendung mit Webservern
Wir können uWSGI zusammen mit dem Nginx-Webserver verwenden, um eine höhere Nebenläufigkeitsleistung zu erzielen.
Eine übliche nginx-Konfiguration sieht wie folgt aus:
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:3031;
}
Der obige Code zeigt an, dass die von nginx empfangenen Webanfragen zur Verarbeitung an den uWSGI-Dienst auf Port 3031 weitergeleitet werden.
Jetzt können wir uWSGI so erzeugen, dass es das uwsgi-Protokoll lokal verwendet:
uwsgi --socket 127.0.0.1:3031 --wsgi-file foobar.py --master --processes 4 --threads 2 --stats 127.0.0.1:9191
Wenn Ihr Webserver HTTP verwendet, müssen Sie uWSGI anweisen, das http-Protokoll lokal zu verwenden (dies unterscheidet sich von --http, das einen eigenen Proxy erstellt):
uwsgi --http-socket 127.0.0.1:3031 --wsgi-file foobar.py --master --processes 4 --threads 2 --stats 127.0.0.1:9191
Django bereitstellen
Django ist das am häufigsten verwendete Python-Webframework. Angenommen, das Django-Projekt befindet sich unter /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
--chdirWird verwendet, um den Projektpfad anzugeben.
Wir können den obigen Befehl in eine yourfile.ini-Konfigurationsdatei einfügen:
[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
Als Nächstes müssen Sie nur den folgenden Befehl ausführen:
uwsgi yourfile.ini
Flask bereitstellen
Flask ist ein beliebtes Python-Webframework.
Erstellen Sie die Datei myflaskapp.py mit dem folgenden Code:
from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
return "<span style='color:red'>I am app 1</span>"
Führen Sie den folgenden Befehl aus:
uwsgi --socket 127.0.0.1:3031 --wsgi-file myflaskapp.py --callable app --processes 4 --threads 2 --stats 127.0.0.1:9191Weitere Erweiterungen