NGINX Unit est un serveur open source léger et polyvalent doté de deux fonctionnalités principales :
sert des ressources multimédias statiques,
exécute le code d’application en huit langues.
Unit compresse plusieurs couches de la pile d'applications modernes en une solution puissante et cohérente axée sur les performances, la faible latence et l'évolutivité. Il est conçu comme un élément de base universel pour toute architecture Web, quelle que soit sa complexité, des déploiements à l'échelle de l'entreprise jusqu'à la page d'accueil de votre animal.
Son API RESTful JSON native permet des mises à jour dynamiques sans interruption et une configuration flexible, tandis que sa productivité prête à l'emploi s'adapte de manière fiable aux charges de travail de production. Nous y parvenons grâce à une architecture multithread complexe, asynchrone, comprenant plusieurs processus pour garantir la sécurité et la robustesse tout en tirant le meilleur parti des plates-formes informatiques actuelles.
Exécutez la commande suivante pour installer à la fois unitd
(le démon Unit) et unitctl
(l'outil de contrôle).
$ Brew install nginx/unité/unité
Pour plus de détails et les packages linguistiques disponibles, consultez la documentation.
$ docker pull unit :$ mkdir /tmp/unit-control # personnaliser selon les besoins.$ docker run -d --mount type=bind,src=/tmp/unit-control,dst=/var/run --mount type=bind,src=.,dst=/www --network host unit
Pour une description des balises d'image, consultez la documentation.
AVERTISSEMENT : la dernière balise d'image peut ne pas prendre en charge des modules de langue spécifiques, vérifiez les balises d'image disponibles à partir du lien ci-dessus avant d'extraire votre image.
Votre répertoire de travail actuel sera maintenant monté sur l'image Unit à l'adresse /www
. Vous pouvez accéder à son socket à l' /tmp/unit-control/control.unit.sock
en supposant qu'aucune autre personnalisation n'ait été effectuée.
Ce script d'assistance configure les référentiels de packages corrects pour le système.
$ wget https://raw.githubusercontent.com/nginx/unit/master/tools/setup-unit && chmod +x setup-unit# ./setup-unit repo-config
Dérivés Debian :
# unité d'installation appropriée
Dérivés Fedora :
# miam installer l'unité
Pour plus de détails et les packages linguistiques disponibles, consultez la documentation.
unitctl
unitctl
rationalise la gestion des processus de l'unité NGINX grâce à une interface de ligne de commande facile à utiliser. Pour démarrer avec unitctl
, téléchargez-le à partir des versions officielles de GitHub ou de Homebrew.
Note
Si vous avez installé Unit avec Homebrew, vous pouvez ignorer cette étape car unitctl
est inclus par défaut.
Téléchargez le binaire unitctl
approprié pour votre système à partir des versions de NGINX Unit.
$ tar xzvf unitctl-master-x86_64-unknown-linux-gnu.tar.gz# mv unitctl /usr/local/bin/
Si Docker est installé sur votre ordinateur, vous pouvez alors facilement créer l'une des images Docker officielles d'Unit avec votre application.
Conseil
Des guides pratiques et de configuration sont disponibles sur unit.nginx.org pour les frameworks d'applications Web créés avec Python, PHP, WebAssembly, Node.js, Ruby, etc.
Voici un exemple utilisant l'image Docker unit:python
:
$ unitctl instances nouvelles 127.0.0.1:8001 /path/to/app 'unit:python'
/path/to/app
sera monté sur /www
dans le système de fichiers Docker.
Enregistrez ceci dans /path/to/app/wsgi.py
:
def application(environ, start_response) : start_response("200 OK", [("Content-Type", "text/plain")]) return (b"Bonjour, Python sur Unit !")
Vous pouvez ensuite modifier de manière interactive la configuration actuellement active :
$ unitctl modifier
{ "listeners": { "*:8000": { // Pointer l'écouteur vers la nouvelle application "pass": "applications/python" } }, // Ajouter une définition d'application "applications": { "python": { "type ": "python", "chemin": "/www/", "module": "wsgi" } }}
Les configurations valides seront appliquées lors de l'enregistrement et de la fermeture.
$ curl localhost:8000Bonjour, Python sur Unit !
D'autres exemples de configuration Python peuvent être trouvés dans la documentation de l'unité.
Unit exécute des applications dans une variété de langues. Explorons la configuration d'une simple application PHP sur Unit avec curl
.
Supposons que vous ayez enregistré un script PHP sous /www/helloworld/index.php
:
Pour l'exécuter sur Unit avec le module unit-php
installé, configurez d'abord un objet application. Stockons notre premier extrait de configuration dans un fichier appelé config.json
:
{ "helloworld": { "type": "php", "root": "/www/helloworld/" } }
L'enregistrer sous forme de fichier n'est pas nécessaire, mais peut s'avérer utile avec des objets plus volumineux.
Maintenant, PUT
-le dans la section /config/applications
de l'API de contrôle d'Unit, généralement disponible par défaut via un socket de domaine Unix :
# curl -X PUT --data-binary @config.json --unix-socket /path/to/control.unit.sock http://localhost/config/applications
{"success": "Reconfiguration effectuée."}
Ensuite, référencez l'application à partir d'un objet écouteur dans la section /config/listeners
de l'API. Cette fois, nous transmettons l'extrait de configuration directement depuis la ligne de commande :
# curl -X PUT -d '{"127.0.0.1:8080": {"pass": "applications/helloworld"}}' --unix-socket /path/to/control.unit.sock http:// localhost/config/écouteurs
{ "success": "Reconfiguration effectuée."}
Désormais, Unit accepte les demandes sur l'adresse IP et le port spécifiés, les transmettant au processus de candidature. Votre application fonctionne !
$ curl 127.0.0.1:8080 Bonjour, PHP sur Unit !
Enfin, interrogez l'intégralité de la section /config
de l'API de contrôle :
# curl --unix-socket /path/to/control.unit.sock http://localhost/config/
La sortie de l'unité doit contenir les deux extraits, soigneusement organisés :
{ "auditeurs": { "127.0.0.1:8080": { "pass": "applications/helloworld" } }, "applications": { "helloworld": { "type": "php", "root": "/www/helloworld/" } } }
L'unité prend en charge l'exécution des composants WebAssembly (WASI 0.2). Pour plus d’informations, consultez la documentation sur la configuration de l’unité.
Notre spécification OpenAPI vise à simplifier la configuration et l'intégration des déploiements d'unités NGINX et à fournir une source de connaissances faisant autorité sur l'API de contrôle.
L'endroit idéal pour commencer à poser des questions et partager vos réflexions est les discussions GitHub.
Notre page des problèmes GitHub offre un espace pour une discussion plus technique à votre rythme.
La carte du projet sur GitHub met en lumière notre travail actuel et nos projets pour l'avenir.
Notre site Web officiel peut fournir des réponses difficiles à trouver autrement.
Impliquez-vous dans le projet en contribuant ! Voir le guide de contribution pour plus de détails.
Pour joindre directement l'équipe, inscrivez-vous à la liste de diffusion.
Pour des problèmes de sécurité, envoyez-nous un e-mail en mentionnant l'unité NGINX dans le sujet et en suivant la spécification CVSS v3.1.