NGINX Unit es un servidor de código abierto liviano y versátil que tiene dos capacidades principales:
sirve activos de medios estáticos,
ejecuta el código de la aplicación en ocho idiomas.
Unit comprime varias capas de la pila de aplicaciones modernas en una solución potente y coherente centrada en el rendimiento, la baja latencia y la escalabilidad. Está pensado como un componente básico universal para cualquier arquitectura web, independientemente de su complejidad, desde implementaciones a escala empresarial hasta la página de inicio de su mascota.
Su API RESTful JSON nativa permite actualizaciones dinámicas sin interrupciones y una configuración flexible, mientras que su productividad lista para usar se escala de manera confiable a cargas de trabajo de nivel de producción. Lo logramos con una arquitectura compleja, asíncrona y de subprocesos múltiples que comprende múltiples procesos para garantizar la seguridad y la solidez y, al mismo tiempo, aprovechar al máximo las plataformas informáticas actuales.
Ejecute el siguiente comando para instalar unitd
(el demonio de la unidad) y unitctl
(la herramienta de control).
$ cerveza instalar nginx/unidad/unidad
Para obtener detalles y paquetes de idiomas disponibles, consulte los documentos.
$ docker pull unit:$ mkdir /tmp/unit-control # personalizar según sea necesario.$ docker run -d --mount type=bind,src=/tmp/unit-control,dst=/var/run --mount type=bind,src=.,dst=/www --host de red unidad
Para obtener una descripción de las etiquetas de imágenes, consulte los documentos.
ADVERTENCIA: Es posible que la etiqueta de imagen más reciente no brinde soporte para módulos de idiomas específicos; verifique las etiquetas de imagen disponibles en el enlace de arriba antes de extraer su imagen.
Su directorio de trabajo actual ahora estará montado en la imagen de la Unidad en /www
. Puede acceder a su socket en /tmp/unit-control/control.unit.sock
suponiendo que no se hayan realizado más personalizaciones.
Este script auxiliar configura los repositorios de paquetes correctos para el sistema.
$ wget https://raw.githubusercontent.com/nginx/unit/master/tools/setup-unit && chmod +x setup-unit# ./setup-unit repo-config
Derivados de Debian:
# unidad de instalación apta
Derivados de Fedora:
# unidad de instalación yum
Para obtener detalles y paquetes de idiomas disponibles, consulte los documentos.
unitctl
unitctl
agiliza la gestión de los procesos de la unidad NGINX a través de una interfaz de línea de comandos fácil de usar. Para comenzar con unitctl
, descárguelo de las versiones oficiales de GitHub o Homebrew.
Nota
Si instaló Unit con Homebrew, puede omitir este paso ya que unitctl
está incluido de forma predeterminada.
Descargue el binario unitctl
apropiado para su sistema desde las versiones de la unidad NGINX.
$ tar xzvf unitctl-master-x86_64-unknown-linux-gnu.tar.gz# mv unitctl /usr/local/bin/
Si tiene Docker instalado en su máquina, puede activar sin esfuerzo una de las imágenes oficiales de Docker de Unit junto con su aplicación.
Consejo
Las guías prácticas y de configuración están disponibles en unit.nginx.org para marcos de aplicaciones web creados con Python, PHP, WebAssembly, Node.js, Ruby y más.
A continuación se muestra un ejemplo que utiliza la imagen de Docker unit:python
:
$ instancias unitctl nuevas 127.0.0.1:8001 /ruta/a/app 'unidad:python'
/path/to/app
se montará en /www
en el sistema de archivos Docker.
Guarde esto en /path/to/app/wsgi.py
:
def aplicación(entorno, start_response): start_response("200 OK", [("Content-Type", "text/plain")]) return (b"Hola, Python en la unidad!")
Luego puede editar interactivamente la configuración actualmente activa:
$ unidadctl editar
{ "listeners": { "*:8000": { // Apunta el oyente a la nueva aplicación "pass": "applications/python" } }, // Agrega una definición de aplicación "applications": { "python": { "type ": "python", "ruta": "/www/", "módulo": "wsgi" } }}
Las configuraciones válidas se aplicarán al guardar y cerrar.
$ curl localhost:8000¡Hola, Python en la unidad!
Se pueden encontrar más ejemplos de configuración de Python en los documentos de la unidad.
La unidad ejecuta aplicaciones en una variedad de idiomas. Exploremos la configuración de una aplicación PHP simple en Unit con curl
.
Supongamos que guardó un script PHP como /www/helloworld/index.php
:
Para ejecutarlo en Unit con el módulo unit-php
instalado, primero configure un objeto de aplicación. Almacenemos nuestro primer fragmento de configuración en un archivo llamado config.json
:
{ "holamundo": { "tipo": "php", "root": "/www/holamundo/" } }
No es necesario guardarlo como un archivo, pero puede resultar útil con objetos más grandes.
Ahora, PUT
en la sección /config/applications
de la API de control de Unit, generalmente disponible de forma predeterminada a través de un socket de dominio Unix:
# curl -X PUT --data-binary @config.json --unix-socket /path/to/control.unit.sock http://localhost/config/applications
{"éxito": "Reconfiguración realizada."}
A continuación, haga referencia a la aplicación desde un objeto de escucha en la sección /config/listeners
de la API. Esta vez, pasamos el fragmento de configuración directamente desde la línea de comando:
# curl -X PUT -d '{"127.0.0.1:8080": {"pass": "aplicaciones/helloworld"}}' --unix-socket /path/to/control.unit.sock http:// localhost/config/oyentes
{ "éxito": "Reconfiguración realizada."}
Ahora la Unidad acepta solicitudes en la IP y el puerto especificados y las pasa al proceso de solicitud. ¡Tu aplicación funciona!
$ curl 127.0.0.1:8080 ¡Hola, PHP en la unidad!
Finalmente, consulta toda la sección /config
de la API de control:
# curl --unix-socket /path/to/control.unit.sock http://localhost/config/
El resultado de la unidad debe contener ambos fragmentos, perfectamente organizados:
{ "oyentes": { "127.0.0.1:8080": { "pass": "aplicaciones/helloworld" } }, "aplicaciones": { "holamundo": { "tipo": "php", "raíz": "/www/holamundo/" } } }
La unidad admite la ejecución de componentes WebAssembly (WASI 0.2). Para obtener más información, consulte los documentos de configuración de la unidad.
Nuestra especificación OpenAPI tiene como objetivo simplificar la configuración e integración de implementaciones de unidades NGINX y proporcionar una fuente autorizada de conocimiento sobre la API de control.
El lugar al que acudir para empezar a hacer preguntas y compartir sus pensamientos es Discusiones de GitHub.
Nuestra página de problemas de GitHub ofrece espacio para una discusión más técnica a su propio ritmo.
El mapa del proyecto en GitHub arroja algo de luz sobre nuestro trabajo actual y nuestros planes para el futuro.
Nuestro sitio web oficial puede proporcionar respuestas que de otro modo no se encontrarían fácilmente.
¡Participa en el proyecto contribuyendo! Consulte la guía de contribución para obtener más detalles.
Para comunicarse directamente con el equipo, suscríbase a la lista de correo.
Por cuestiones de seguridad, envíenos un correo electrónico, mencionando la Unidad NGINX en el asunto y siguiendo la especificación CVSS v3.1.