A unidade NGINX é um servidor de código aberto leve e versátil que possui dois recursos principais:
veicula ativos de mídia estáticos,
executa o código do aplicativo em oito idiomas.
A unidade compacta várias camadas da pilha de aplicativos modernos em uma solução potente e coerente com foco em desempenho, baixa latência e escalabilidade. Ele pretende ser um bloco de construção universal para qualquer arquitetura da Web, independentemente de sua complexidade, desde implantações em escala empresarial até a página inicial do seu animal de estimação.
Sua API RESTful JSON nativa permite atualizações dinâmicas sem interrupções e configuração flexível, enquanto sua produtividade pronta para uso é dimensionada de forma confiável para cargas de trabalho de nível de produção. Conseguimos isso com uma arquitetura complexa, assíncrona e multithreading que compreende vários processos para garantir segurança e robustez, ao mesmo tempo em que aproveitamos ao máximo as plataformas de computação atuais.
Execute o seguinte comando para instalar o unitd
(o daemon Unit) e unitctl
(a ferramenta de controle).
$ brew install nginx/unidade/unidade
Para obter detalhes e pacotes de idiomas disponíveis, consulte a documentação.
$ docker pull unit:$ mkdir /tmp/unit-control # personalize conforme necessário.$ docker run -d --mount type=bind,src=/tmp/unit-control,dst=/var/run --mount tipo=bind,src=.,dst=/www --network host unidade
Para obter uma descrição das tags de imagem, consulte a documentação.
AVISO: a tag de imagem mais recente pode não fornecer suporte para módulos de idioma específicos. Verifique as tags de imagem disponíveis no link acima antes de extrair sua imagem.
Seu diretório de trabalho atual agora será montado na imagem da unidade em /www
. Você pode acessar seu soquete em /tmp/unit-control/control.unit.sock
presumindo que nenhuma personalização adicional tenha sido feita.
Este script auxiliar configura os repositórios de pacotes corretos para o sistema.
$ wget https://raw.githubusercontent.com/nginx/unit/master/tools/setup-unit && chmod +x setup-unit# ./setup-unit repo-config
Derivados do Debian:
#apt instalar unidade
Derivados do Fedora:
#yum instala unidade
Para obter detalhes e pacotes de idiomas disponíveis, consulte a documentação.
unitctl
unitctl
agiliza o gerenciamento dos processos da Unidade NGINX por meio de uma interface de linha de comando fácil de usar. Para começar a usar unitctl
, baixe-o nas versões oficiais do GitHub ou no Homebrew.
Observação
Se você instalou o Unit com Homebrew, você pode pular esta etapa, pois unitctl
está incluído por padrão.
Baixe o binário unitctl
apropriado para o seu sistema nas versões da unidade NGINX.
$ tar xzvf unitctl-master-x86_64-unknown-linux-gnu.tar.gz# mv unitctl /usr/local/bin/
Se você tiver o Docker instalado em sua máquina, poderá facilmente ativar uma das imagens oficiais do Docker da Unit junto com seu aplicativo.
Dica
Guias de instruções e configuração estão disponíveis em unit.nginx.org para estruturas de aplicativos da web construídas com Python, PHP, WebAssembly, Node.js, Ruby e muito mais.
Aqui está um exemplo usando a imagem unit:python
Docker:
$ unitctl instâncias novo 127.0.0.1:8001 /caminho/para/app 'unidade:python'
/path/to/app
será montado em /www
no sistema de arquivos Docker.
Salve isto em /path/to/app/wsgi.py
:
def application(environ, start_response): start_response("200 OK", [("Content-Type", "text/plain")]) return (b"Olá, Python na unidade!")
Você pode então editar interativamente a configuração atualmente ativa:
$ unitctl editar
{ "listeners": { "*:8000": { // Aponte o ouvinte para o novo aplicativo "pass": "applications/python" } }, // Adicione uma definição de aplicativo "applications": { "python": { "type ": "python", "path": "/www/", "módulo": "wsgi" } }}
As configurações válidas serão aplicadas ao salvar e fechar.
$ curl localhost:8000Olá, Python na unidade!
Mais exemplos de configuração do Python podem ser encontrados na documentação da unidade.
A unidade executa aplicativos em vários idiomas. Vamos explorar a configuração de um aplicativo PHP simples no Unit com curl
.
Suponha que você salvou um script PHP como /www/helloworld/index.php
:
Para executá-lo no Unit com o módulo unit-php
instalado, primeiro configure um objeto de aplicativo. Vamos armazenar nosso primeiro trecho de configuração em um arquivo chamado config.json
:
{ "helloworld": { "type": "php", "root": "/www/helloworld/" } }
Não é necessário salvá-lo como um arquivo, mas pode ser útil com objetos maiores.
Agora, PUT
O na seção /config/applications
da API de controle da Unit, geralmente disponível por padrão através de um soquete de domínio Unix:
# curl -X PUT --data-binary @config.json --unix-socket /path/to/control.unit.sock http://localhost/config/applications
{"success": "Reconfiguração concluída."}
Em seguida, faça referência ao aplicativo a partir de um objeto ouvinte na seção /config/listeners
da API. Desta vez, passamos o snippet de configuração direto da linha de comando:
# curl -X PUT -d '{"127.0.0.1:8080": {"pass": "applications/helloworld"}}' --unix-socket /path/to/control.unit.sock http:// localhost/config/ouvintes
{ "sucesso": "Reconfiguração concluída."}
Agora o Unit aceita solicitações no IP e na porta especificados, passando-os para o processo de aplicação. Seu aplicativo funciona!
$ curl 127.0.0.1:8080 Olá, PHP na Unidade!
Por fim, consulte toda a seção /config
da API de controle:
# curl --unix-socket /path/to/control.unit.sock http://localhost/config/
A saída da unidade deve conter ambos os trechos, bem organizados:
{ "ouvintes": { "127.0.0.1:8080": { "pass": "aplicativos/helloworld" } }, "aplicativos": { "helloworld": { "type": "php", "root": "/www/helloworld/" } } }
A unidade suporta a execução de componentes WebAssembly (WASI 0.2). Para obter mais informações, consulte os documentos de configuração da unidade.
Nossa especificação OpenAPI visa simplificar a configuração e integração de implantações de unidades NGINX e fornecer uma fonte confiável de conhecimento sobre a API de controle.
O lugar certo para começar a fazer perguntas e compartilhar suas idéias é o GitHub Discussions.
Nossa página de problemas do GitHub oferece espaço para uma discussão mais técnica no seu próprio ritmo.
O mapa do projeto no GitHub esclarece nosso trabalho atual e planos para o futuro.
Nosso site oficial pode fornecer respostas que não seriam facilmente encontradas de outra forma.
Envolva-se com o projeto contribuindo! Consulte o guia de contribuição para obter detalhes.
Para entrar em contato diretamente com a equipe, inscreva-se na lista de discussão.
Para questões de segurança, envie-nos um e-mail, mencionando Unidade NGINX no assunto e seguindo as especificações CVSS v3.1.