Implantar arquivos estáticos da Web
Observação
Os planos Básico, Standard e Enterprise serão preteridos a partir de meados de março de 2025, com um período de desativação de 3 anos. Recomendamos a transição para os Aplicativos de Contêiner do Azure. Para mais informações, confira o anúncio de desativação dos Aplicativos Spring do Azure.
O plano consumo e dedicado Standard 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 mais informações, confira Migrar o plano dedicado e consumo Standard dos Aplicativos Spring do Azure para os Aplicativos de Contêiner do Azure.
Este artigo se aplica a(o):❌ Básico/Standard ✔️ Enterprise
Esse artigo mostra como implantar seus arquivos estáticos em uma instância do plano Enterprise dos Aplicativos Spring do Azure usando o buildpack dos Servidores Web do Tanzu. Essa abordagem é útil se você tiver aplicativos que servem apenas 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 do plano Enterprise dos Aplicativos Spring do Azure já provisionada. Para obter mais informações, confira Início Rápido: criar e implantar aplicativos nos Aplicativos Spring do Azure usando o plano Enterprise.
- Um ou mais aplicativos em execução no Azure Spring Apps.
- CLI do Azure, versão 2.45.0 ou posterior.
- Seus arquivos estáticos ou aplicativo front-end dinâmico – por exemplo, um aplicativo React.
Implantar arquivos estáticos
Observação
Este artigo se concentra em descrever as configurações de implantação e solucionar problemas específicos para a implantação de arquivos estáticos da Web. Para entender os cenários gerais de compilação e implantação do plano Enterprise dos Aplicativos Springs do Azure, confira a seção Compilar serviço sob demanda de Usar o Tanzu Build Service e Como implantar aplicativos poliglotas.
É possível implantar arquivos estáticos nos Aplicativos Spring do Azure usando servidores Web NGINX ou HTTPD das seguintes maneiras:
- É possível implantar arquivos estáticos diretamente. Os Aplicativos Spring do Azure configuram automaticamente o servidor Web especificado para fornecer os arquivos estáticos.
- Você pode compilar seu aplicativo front-end na estrutura JavaScript de sua escolha e implantar seu aplicativo front-end dinâmico a partir do código-fonte. Os Aplicativos Spring do Azure compilam seu aplicativo em conteúdo estático e usam o servidor Web configurado para atender aos arquivos estáticos.
Você também pode criar um arquivo de configuração do servidor para personalizar o servidor Web.
Exemplos de implantação
Os exemplos da CLI do Azure nessa seção mostram como compilar e implantar arquivos estáticos para dois cenários de registro de contêiner:
- Registro de contêiner gerenciado dos Aplicativos Spring do Azure.
- Registro de contêiner gerenciado pelo usuário.
Compilar e implantar arquivos estáticos diretamente
Este exemplo implanta arquivos estáticos diretamente usando um arquivo de configuração do servidor padrão gerado automaticamente.
- Registro de contêiner gerenciado dos Aplicativos Spring do Azure
- Registro de contêiner gerenciado pelo usuário
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 as variáveis de ambiente, confira a seção Configurar um arquivo de configuração do servidor gerado automaticamente.
Compilar e implantar seu aplicativo front-end como conteúdo estático
Este exemplo implanta um aplicativo front-end dinâmico do código-fonte.
- Registro de contêiner gerenciado dos Aplicativos Spring do Azure
- Registro de contêiner gerenciado pelo usuário
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
Compilar e implantar arquivos estáticos usando um arquivo de configuração personalizado
Este exemplo implanta arquivos estáticos usando um arquivo de configuração do servidor personalizado.
- Registro de contêiner gerenciado dos Aplicativos Spring do Azure
- Registro de contêiner gerenciado pelo usuário
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, confira a seção Usar um arquivo de configuração do servidor personalizado deste artigo.
Código de exemplo
Observação
O código de exemplo é mantido pela comunidade de software livre Paketo.
Os exemplos de buildpacks Paketo demonstram casos de uso comuns para muitos tipos de aplicativos diferentes, incluindo os seguintes casos de uso:
- Fornecer arquivos estáticos com um arquivo de configuração de servidor padrão usando
BP_WEB_SERVER
para selecionar HTTPD ou NGINX. - Usando o Gerenciador de Pacotes do Node para compilar um aplicativo React em arquivos estáticos que um servidor Web pode servir. Use as seguintes etapas:
- Definir um script na propriedade
scripts
do arquivo package.json que cria ativos estáticos prontos para produção. Para o React, ébuild
. - Descobrir onde os ativos estáticos são armazenados após a execução do script de compilação. No caso do React, os ativos estáticos são armazenados no
./build
por padrão. - Definir
BP_NODE_RUN_SCRIPTS
como o nome do script de compilação. - Definir
BP_WEB_SERVER_ROOT
como o diretório de saída de compilação.
- Definir um script na propriedade
- Fornecer arquivos estáticos com seu próprio arquivo de configuração de servidor, usando HTTPD ou NGINX.
Configurar um arquivo de configuração do servidor gerado automaticamente
Você pode usar as 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 com suporte.
Variável de ambiente | Valor com suporte | Descrição |
---|---|---|
BP_WEB_SERVER |
nginx ou httpd | Especifica o tipo de servidor Web: nginx para o Nginx ou httpd para o 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. O padrão é public . |
BP_WEB_SERVER_ENABLE_PUSH_STATE |
true ou false | Habilita o roteamento de estado de push para o aplicativo. Independentemente da rota solicitada, index.html é sempre fornecido. Útil para aplicativos Web de página única. |
BP_WEB_SERVER_FORCE_HTTPS |
true ou false | Aplica HTTPS para conexões de servidor redirecionando todas as solicitações para usar o protocolo HTTPS. |
As variáveis de ambiente a seguir não são compatíveis.
BP_LIVE_RELOAD_ENABLED
BP_NGINX_VERSION
BP_HTTPD_VERSION
Usar um arquivo de configuração do servidor personalizado
É possível 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 no caminho raiz do seu código-fonte. | Use a variável de ambiente BP_NGINX_CONF_LOCATION para especificar o nome do arquivo de configuração. Coloque o arquivo no caminho raiz do seu código-fonte. |
httpd | httpd.conf no caminho raiz do seu código-fonte. | Não há suporte. |
Esse arquivo deve estar de acordo com as restrições descritas na tabela a seguir.
Configuração | Descrição | Configuração do Nginx | Configuração de Httpd |
---|---|---|---|
Porta de escuta | O servidor Web deve escutar na porta 8080. O serviço verifica se a porta no TCP está pronta e ativa. É necessário usar a variável modelo PORT 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. A configuração do 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 aceito para o corpo 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 menor que 500 m. | client_max_body_size deve ser inferior a 500 m. |
LimitRequestBody deve ser inferior a 500 m. |
Associações de buildpack
A implantação de arquivos estáticos no plano Enterprise dos Aplicativos Spring do Azure dá suporte à associação do buildpack do Dynatrace. A associação do buildpack htpasswd
não é compatível.
Para obter mais informações, consulte Como configurar a integração do APM e os certificados de AC.
Erros comuns de compilação e implantação
Sua implantação de arquivos estáticos em uma instância Enterprise dos Aplicativos Spring do Azure pode gerar os seguintes erros de compilação comuns:
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 do servidor Web não foi especificado. Para resolver esses erros, defina a variável de ambiente BP_WEB_SERVER
como nginx ou httpd.
A tabela a seguir descreve os erros comuns de implantação quando você implanta arquivos estáticos nos Aplicativos Spring do Azure 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 de 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 do 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. |