Implantar arquivos estáticos da Web
Nota
Os planos Basic, Standard e Enterprise serão preteridos a partir de meados de março de 2025, com um período de aposentadoria de 3 anos. Recomendamos a transição para os Aplicativos de Contêiner do Azure. Para obter mais informações, consulte o anúncio de aposentadoria do Azure Spring Apps.
O plano de consumo padrão e dedicado será preterido a partir de 30 de setembro de 2024, com um desligamento completo após seis meses. Recomendamos a transição para os Aplicativos de Contêiner do Azure. Para obter mais informações, consulte Migrar consumo padrão e plano dedicado do Azure Spring Apps para Aplicativos de Contêiner do Azure.
Este artigo aplica-se a:❌ Basic/Standard ✔️ Enterprise
Este artigo mostra como implantar seus arquivos estáticos em uma instância do plano do Azure Spring Apps Enterprise usando o buildpack Tanzu Web Servers. Essa abordagem é útil se você tiver aplicativos que são puramente para armazenar arquivos estáticos como HTML, CSS ou aplicativos front-end criados com a estrutura JavaScript de sua escolha. Você pode implantar diretamente esses aplicativos com um servidor Web configurado automaticamente (HTTPD e NGINX) para atender a esses ativos.
Pré-requisitos
- Uma instância de plano do Azure Spring Apps Enterprise já provisionada. Para obter mais informações, consulte Guia de início rápido: criar e implantar aplicativos no Azure Spring Apps usando o plano Enterprise.
- Um ou mais aplicativos em execução no Azure Spring Apps.
- CLI do Azure, versão 2.45.0 ou superior.
- Seus arquivos estáticos ou aplicativo front-end dinâmico - por exemplo, um aplicativo React.
Implante seus arquivos estáticos
Nota
Este artigo se concentra na descrição das configurações de implantação e na solução de problemas específica para a implantação de arquivos estáticos da Web. Para entender os cenários gerais de compilação e implantação para o plano do Azure Springs Apps Enterprise, consulte a seção Criar serviço sob demanda de Usar o Tanzu Build Service e Como implantar aplicativos poliglotas.
Você pode implantar arquivos estáticos no Azure Spring Apps usando servidores Web NGINX ou HTTPD das seguintes maneiras:
- Você pode implantar arquivos estáticos diretamente. O Azure Spring Apps configura automaticamente o servidor Web especificado para servir os ficheiros estáticos.
- Você pode criar seu aplicativo front-end na estrutura JavaScript de sua escolha e, em seguida, implantar seu aplicativo front-end dinâmico a partir do código-fonte. O Azure Spring Apps cria seu aplicativo em conteúdo estático e usa seu servidor Web configurado para servir os arquivos estáticos.
Você também pode criar um arquivo de configuração do servidor para personalizar o servidor Web.
Exemplos de implementação
Os exemplos da CLI do Azure nesta seção mostram a criação e a implantação de arquivos estáticos para dois cenários de registro de contêiner:
- Registro de contêiner gerenciado do Azure Spring Apps.
- Registro de contêiner gerenciado pelo usuário.
Crie e implante arquivos estáticos diretamente
Este exemplo implanta arquivos estáticos diretamente usando um arquivo de configuração de servidor padrão gerado automaticamente.
O comando a seguir implanta um arquivo estático:
az spring app deploy
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name> \
--name <app-name> \
--source-path <path-to-source-code> \
--build-env BP_WEB_SERVER=nginx
Para obter informações sobre como usar variáveis de ambiente, consulte a seção Configurar um arquivo de configuração de servidor gerado automaticamente.
Crie e implante seu aplicativo front-end como conteúdo estático
Este exemplo implanta um aplicativo front-end dinâmico a partir do código-fonte.
O comando a seguir implanta um aplicativo:
az spring app deploy \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name> \
--name <app-name> \
--source-path <path-to-source-code> \
--build-env BP_WEB_SERVER=nginx BP_NODE_RUN_SCRIPTS=build BP_WEB_SERVER_ROOT=build
Crie e implante arquivos estáticos usando um arquivo de configuração personalizado
Este exemplo implanta arquivos estáticos usando um arquivo de configuração de servidor personalizado.
O comando a seguir implanta um aplicativo:
az spring app deploy \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name> \
--name <app-name> \
--source-path <path-to-source-code>
Para obter mais informações, consulte a seção Usar um arquivo de configuração de servidor personalizado deste artigo.
Código de exemplo
Nota
O código de exemplo é mantido pela comunidade de código aberto Paketo.
Os exemplos de buildpacks do Paketo demonstram casos de uso comuns para vários tipos de aplicativos diferentes, incluindo os seguintes casos de uso:
- Servindo arquivos estáticos com um arquivo de configuração de servidor padrão usando
BP_WEB_SERVER
para selecionar HTTPD ou NGINX. - Usando o Node Package Manager para criar um aplicativo React em arquivos estáticos que um servidor Web pode servir. Use as seguintes etapas:
- Defina um script sob a
scripts
propriedade do arquivo package.json que cria seus ativos estáticos prontos para produção. Para obuild
React, é . - Descubra onde os ativos estáticos são armazenados após a execução do script de construção. Para React, os ativos estáticos são armazenados por
./build
padrão. - Defina
BP_NODE_RUN_SCRIPTS
como o nome do script de construção. - Defina
BP_WEB_SERVER_ROOT
para o diretório de saída da compilação.
- Defina um script sob a
- Servindo arquivos estáticos com seu próprio arquivo de configuração do servidor, usando HTTPD ou NGINX.
Configurar um arquivo de configuração do servidor gerado automaticamente
Você pode usar variáveis de ambiente para modificar o arquivo de configuração do servidor gerado automaticamente. A tabela a seguir mostra as variáveis de ambiente suportadas.
Variável de Ambiente | Valor suportado | Description |
---|---|---|
BP_WEB_SERVER |
nginx ou httpd | Especifica o tipo de servidor web, nginx para Nginx ou httpd para servidor HTTP Apache. Necessário ao usar o arquivo de configuração do servidor gerado automaticamente. |
BP_WEB_SERVER_ROOT |
Um caminho de arquivo absoluto ou um caminho de arquivo relativo a /workspace. | Define o diretório raiz para os arquivos estáticos. A predefinição é public . |
BP_WEB_SERVER_ENABLE_PUSH_STATE |
verdadeiro ou falso | Permite o roteamento de estado push para seu aplicativo. Independentemente do percurso solicitado, index.html é sempre servido. Útil para aplicações Web de página única. |
BP_WEB_SERVER_FORCE_HTTPS |
verdadeiro ou falso | Impõe HTTPS para conexões de servidor redirecionando todas as solicitações para usar o protocolo HTTPS. |
As seguintes variáveis de ambiente não são suportadas.
BP_LIVE_RELOAD_ENABLED
BP_NGINX_VERSION
BP_HTTPD_VERSION
Usar um arquivo de configuração de servidor personalizado
Você pode configurar o servidor Web usando um arquivo de configuração de servidor personalizado. A tabela a seguir mostra o caminho do arquivo de configuração:
Servidor Web | Caminho do arquivo de configuração padrão | Como personalizar o caminho do arquivo de configuração do servidor |
---|---|---|
nginx | nginx.conf sob o caminho raiz do seu código-fonte. | Use a variável BP_NGINX_CONF_LOCATION de ambiente para especificar o nome do arquivo de configuração. Coloque o arquivo sob o caminho raiz do código-fonte. |
Disponível em: . | httpd.conf sob o caminho raiz do seu código-fonte. | Não suportado. |
Seu arquivo de configuração deve estar em conformidade com as restrições descritas na tabela a seguir.
Configuração | Description | Configuração do Nginx | Configuração Httpd |
---|---|---|---|
Porta de escuta | O servidor Web deve escutar na porta 8080. O serviço verifica a prontidão da porta no TCP e se ela está ativa. Você deve usar a variável PORT templated no arquivo de configuração. O número de porta apropriado é injetado quando o servidor Web é iniciado. |
listen {{PORT}} |
Listen "${PORT}" |
Caminho do log | Caminho do log de configuração para o console. | access_log /dev/stdout , error_log stderr |
ErrorLog /proc/self/fd/2 |
Caminho do arquivo com permissão de gravação | O servidor Web recebe permissão de gravação para o diretório /tmp . Configurar o caminho completo requer permissão de gravação no diretório /tmp . | Por exemplo: client_body_temp_path /tmp/client_body_temp | |
Tamanho máximo do corpo aceito da solicitação do cliente | O servidor Web está atrás do gateway. O tamanho máximo aceito do corpo da solicitação do cliente é definido como 500 m no gateway e o valor para o servidor Web deve ser inferior a 500 m. | client_max_body_size deve ter menos de 500 m. |
LimitRequestBody deve ter menos de 500 m. |
Ligações Buildpack
A implantação de arquivos estáticos no plano do Azure Spring Apps Enterprise dá suporte à associação buildpack do Dynatrace. A htpasswd
vinculação buildpack não é suportada.
Para obter mais informações, consulte Como configurar a integração APM e certificados de CA.
Erros comuns de compilação e implantação
Sua implantação de arquivos estáticos em uma instância do Azure Spring Apps Enterprise pode gerar os seguintes erros comuns de compilação:
ERROR: No buildpack groups passed detection.
ERROR: Please check that you're running against the correct path.
ERROR: failed to detect: no buildpacks participating
A causa raiz desses erros é que o tipo de servidor Web não é especificado. Para resolver esses erros, defina a variável BP_WEB_SERVER
de ambiente como nginx ou httpd.
A tabela a seguir descreve erros comuns de implantação quando você implanta arquivos estáticos no Azure Spring Apps Enterprise.
Mensagem de Erro | Causa raiz | Solução |
---|---|---|
112404: Exit code 0: purposely stopped, please refer to https://aka.ms/exitcode |
Falha ao iniciar o servidor Web. | Valide o arquivo de configuração do servidor para ver se há um erro de configuração. Em seguida, verifique se o arquivo de configuração está em conformidade com as restrições descritas na seção Usar um arquivo de configuração de servidor personalizado. |
mkdir() "/var/client_body_temp" failed (13: Permission denied) |
O servidor Web não tem permissão de gravação para o caminho especificado. | Configure o caminho no diretório /tmp; por exemplo: /tmp/client_body_temp. |