Die NGINX-Einheit wurde veröffentlicht, und ich bin der Meinung, dass sie als Anwendungsserver verwendet werden kann, auf dem WSGI für Python ausgeführt wird. Ich habe vorerst versucht, Hello World zu bewegen.
Installieren Sie die Ubuntu-Paketversion, auf die hier Bezug genommen wird. https://github.com/nginx/unit#ubuntu-packages
Und Start
$ sudo service unitd start
Erstellen Sie eine Python-Anwendung mit wsgi. Platzieren Sie einfach eine Datei mit dem Namen wsgi.py im angegebenen Pfad und folgen Sie dem wsgi-Stil. Sie können es mit wsgi machen, so dass Sie jedes Framework verwenden können.
wsgi.py
def application(environ, start_response):
start_response('200 OK', [('Content-Type', 'text/plain')])
return ['Hello World\n'.encode('utf-8')]
Anstatt die platzierte Datei zu ändern, wird sie wie das Benachrichtigen der Einstellung mit der API verwendet. Beschreiben Sie daher die Einstellungsdatei und laden Sie sie hoch, um die Einstellung widerzuspiegeln.
start.json
{
"applications": {
"hello": {
"type": "python",
"workers": 2,
"path": "/home/ubuntu",
"module": "wsgi"
}
},
"listeners": {
"*:8400": {
"application": "hello"
}
}
}
Die Steuerungs-API trifft die API mit einem Unix-Socket. Siehe: https://github.com/nginx/unit#configuration
Laden Sie die beschriebene Einstellungsdatei mit curl hoch und reflektieren Sie sie.
$ sudo curl -X PUT -d @start.json --unix-socket /var/run/control.unit.sock http://localhost/
Oder die Paketinstallation von Ubuntu verfügt über ein Skript, das dies ermöglicht und daher einfach zu verwenden ist.
$ sudo service unitd restoreconfig start.json
Sie können die Einstellungen erhalten, indem Sie mit GET anfordern.
$ sudo curl --unix-socket /var/run/control.unit.sock http://localhost/
{
"applications": {
"hello": {
"type": "python",
"workers": 2,
"path": "/home/ubuntu",
"module": "wsgi"
}
},
"listeners": {
"*:8400": {
"application": "hello"
}
}
}
Da unitd keine Einstellungsdatei hat, muss diese bei jedem Neustart wiedergegeben werden.
Ich habe die Anwendung so eingestellt, dass sie auf Port 8400 funktioniert, also habe ich dort eine HTTP-Anfrage mit Curl gestellt und das Ergebnis erhalten.
$ curl http://localhost:8400/
Hello World
Im Vergleich zu uWSGI usw. sind die Funktionen überwiegend klein, können aber in Zukunft multifunktional werden. Wird es in Zukunft in virtualenv / venv verwendet?