NGINX Unit ist ein leichter und vielseitiger Open-Source-Server, der über zwei Hauptfunktionen verfügt:
stellt statische Medienressourcen bereit,
führt Anwendungscode in acht Sprachen aus.
Unit komprimiert mehrere Schichten des modernen Anwendungsstapels zu einer leistungsstarken, kohärenten Lösung mit Schwerpunkt auf Leistung, geringer Latenz und Skalierbarkeit. Es ist als universeller Baustein für jede Webarchitektur gedacht, unabhängig von ihrer Komplexität, von Bereitstellungen im Unternehmensmaßstab bis hin zur Homepage Ihres Haustieres.
Seine native RESTful-JSON-API ermöglicht dynamische Updates ohne Unterbrechungen und flexible Konfiguration, während seine sofort einsatzbereite Produktivität zuverlässig an Workloads der Produktionsklasse angepasst werden kann. Dies erreichen wir mit einer komplexen, asynchronen Multithreading-Architektur, die mehrere Prozesse umfasst, um Sicherheit und Robustheit zu gewährleisten und gleichzeitig das Beste aus den heutigen Computerplattformen herauszuholen.
Führen Sie den folgenden Befehl aus, um sowohl unitd
(den Unit-Daemon) als auch unitctl
(das Steuerungstool) zu installieren.
$ brew installiere nginx/unit/unit
Einzelheiten und verfügbare Sprachpakete finden Sie in den Dokumenten.
$ docker pull unit:$ mkdir /tmp/unit-control # nach Bedarf anpassen.$ docker run -d --mount type=bind,src=/tmp/unit-control,dst=/var/run --mount type=bind,src=.,dst=/www --network host unit
Eine Beschreibung der Bild-Tags finden Sie in den Dokumenten.
ACHTUNG: Das neueste Bild-Tag bietet möglicherweise keine Unterstützung für bestimmte Sprachmodule. Überprüfen Sie die verfügbaren Bild-Tags über den Link oben, bevor Sie Ihr Bild abrufen.
Ihr aktuelles Arbeitsverzeichnis wird nun im Unit-Image unter /www
gemountet. Sie können den Socket unter /tmp/unit-control/control.unit.sock
erreichen, sofern keine weiteren Anpassungen vorgenommen wurden.
Dieses Hilfsskript konfiguriert die richtigen Paket-Repositorys für das System.
$ wget https://raw.githubusercontent.com/nginx/unit/master/tools/setup-unit && chmod +x setup-unit# ./setup-unit repo-config
Debian-Derivate:
# apt-Installationseinheit
Fedora-Derivate:
# lecker, installiere die Einheit
Einzelheiten und verfügbare Sprachpakete finden Sie in den Dokumenten.
unitctl
unitctl
optimiert die Verwaltung von NGINX Unit-Prozessen über eine benutzerfreundliche Befehlszeilenschnittstelle. Um mit unitctl
zu beginnen, laden Sie es von den offiziellen GitHub-Versionen oder Homebrew herunter.
Notiz
Wenn Sie Unit mit Homebrew installiert haben, können Sie diesen Schritt überspringen, da unitctl
standardmäßig enthalten ist.
Laden Sie die entsprechende unitctl
Binärdatei für Ihr System aus den NGINX Unit-Versionen herunter.
$ tar xzvf unitctl-master-x86_64-unknown-linux-gnu.tar.gz# mv unitctl /usr/local/bin/
Wenn Sie Docker auf Ihrem Computer installiert haben, können Sie neben Ihrer Anwendung mühelos eines der offiziellen Docker-Images von Unit hochfahren.
Tipp
Anleitungen und Konfigurationshandbücher sind auf unit.nginx.org für Webanwendungs-Frameworks verfügbar, die mit Python, PHP, WebAssembly, Node.js, Ruby und mehr erstellt wurden.
Hier ist ein Beispiel mit dem Docker-Image unit:python
:
$ unitctl Instanzen neu 127.0.0.1:8001 /path/to/app 'unit:python'
/path/to/app
wird im Docker-Dateisystem nach /www
gemountet.
Speichern Sie dies unter /path/to/app/wsgi.py
:
def application(environ, start_response): start_response("200 OK", [("Content-Type", "text/plain")]) return (b"Hallo, Python auf Unit!")
Anschließend können Sie die aktuell aktive Konfiguration interaktiv bearbeiten:
$unitctl bearbeiten
{ "listeners": { "*:8000": { // Listener auf neue Anwendung verweisen "pass": "applications/python" } }, // Anwendungsdefinition hinzufügen "applications": { "python": { "type ": "python", "path": "/www/", "module": "wsgi" } }}
Gültige Konfigurationen werden beim Speichern und Schließen angewendet.
$ curl localhost:8000Hallo, Python auf Unit!
Weitere Python-Konfigurationsbeispiele finden Sie in den Unit-Dokumenten.
Das Gerät führt Apps in verschiedenen Sprachen aus. Lassen Sie uns die Konfiguration einer einfachen PHP-App auf Unit mit curl
untersuchen.
Angenommen, Sie haben ein PHP-Skript als /www/helloworld/index.php
gespeichert:
Um es auf Unit mit installiertem unit-php
Modul auszuführen, richten Sie zunächst ein Anwendungsobjekt ein. Speichern wir unseren ersten Konfigurationsausschnitt in einer Datei namens config.json
:
{ "helloworld": { "type": "php", "root": "/www/helloworld/" } }
Das Speichern als Datei ist nicht notwendig, kann aber bei größeren Objekten nützlich sein.
PUT
es nun in den Abschnitt /config/applications
der Steuer-API von Unit ein, der normalerweise standardmäßig über einen Unix-Domänen-Socket verfügbar ist:
# curl -X PUT --data-binary @config.json --unix-socket /path/to/control.unit.sock http://localhost/config/applications
{"success": "Neukonfiguration abgeschlossen."}
Verweisen Sie als Nächstes über ein Listener-Objekt im Abschnitt /config/listeners
der API auf die App. Dieses Mal übergeben wir den Konfigurationsausschnitt direkt von der Befehlszeile aus:
# curl -X PUT -d '{"127.0.0.1:8080": {"pass": "applications/helloworld"}}' --unix-socket /path/to/control.unit.sock http:// localhost/config/listeners
{ „success“: „Neukonfiguration abgeschlossen.“}
Jetzt akzeptiert Unit Anfragen an der angegebenen IP und dem angegebenen Port und leitet sie an den Bewerbungsprozess weiter. Deine App funktioniert!
$ curl 127.0.0.1:8080 Hallo, PHP auf Unit!
Fragen Sie abschließend den gesamten /config
Abschnitt der Steuerungs-API ab:
# curl --unix-socket /path/to/control.unit.sock http://localhost/config/
Die Ausgabe der Einheit sollte beide Snippets enthalten, ordentlich organisiert:
{ "listeners": { "127.0.0.1:8080": { "pass": "applications/helloworld" } }, „applications“: { „helloworld“: { „type“: „php“, „root“: „/www/helloworld/“ } } }
Das Gerät unterstützt die Ausführung von WebAssembly Components (WASI 0.2). Weitere Informationen finden Sie in den Einheitenkonfigurationsdokumenten.
Unsere OpenAPI-Spezifikation zielt darauf ab, die Konfiguration und Integration von NGINX Unit-Bereitstellungen zu vereinfachen und eine verlässliche Wissensquelle über die Steuerungs-API bereitzustellen.
Die Anlaufstelle, um Fragen zu stellen und Ihre Gedanken auszutauschen, ist GitHub Discussions.
Unsere GitHub-Problemseite bietet Platz für eine technischere Diskussion in Ihrem eigenen Tempo.
Die Projektkarte auf GitHub gibt Aufschluss über unsere aktuelle Arbeit und unsere Pläne für die Zukunft.
Unsere offizielle Website bietet möglicherweise Antworten, die sonst nicht leicht zu finden sind.
Beteiligen Sie sich am Projekt, indem Sie einen Beitrag leisten! Weitere Informationen finden Sie im beitragenden Leitfaden.
Um das Team direkt zu erreichen, abonnieren Sie die Mailingliste.
Bei Sicherheitsproblemen senden Sie uns eine E-Mail, geben Sie im Betreff die NGINX-Einheit an und befolgen Sie die CVSS v3.1-Spezifikation.