Implantar arquivos no Serviço de Aplicativo

Nota

A partir de 1º de junho de 2024, todos os aplicativos do Serviço de Aplicativo recém-criados terão a opção de gerar um nome de host padrão exclusivo usando a convenção <app-name>-<random-hash>.<region>.azurewebsites.netde nomenclatura. Os nomes de aplicativos existentes permanecerão inalterados.

Exemplo: myapp-ds27dh7271aah175.westus-01.azurewebsites.net

Para obter mais detalhes, consulte Nome de host padrão exclusivo para recurso do Serviço de Aplicativo.

Este artigo mostra como implantar seu código como um pacote ZIP, WAR, JAR ou EAR no Serviço de Aplicativo do Azure. Ele também mostra como implantar arquivos individuais no Serviço de Aplicativo, separados do seu pacote de aplicativo.

Pré-requisitos

Para concluir as etapas neste artigo, crie um aplicativo do Serviço de Aplicativo ou use um aplicativo que você criou para outro tutorial.

Se não tiver uma subscrição do Azure, crie uma conta gratuita do Azure antes de começar.

Criar um pacote ZIP de projeto

Importante

Ao criar o pacote ZIP para implantação, não inclua o diretório raiz, mas apenas os arquivos e diretórios nele. Se você baixar um repositório GitHub como um arquivo ZIP, não poderá implantar esse arquivo como está no Serviço de Aplicativo. O GitHub adiciona diretórios aninhados adicionais no nível superior, que não funcionam com o Serviço de Aplicativo.

Em uma janela de terminal local, navegue até o diretório raiz do seu projeto de aplicativo.

Esse diretório deve conter o arquivo de entrada para seu aplicativo Web, como index.html, index.php e app.js. Ele também pode conter arquivos de gerenciamento de pacotes como project.json, composer.json, package.json, bower.json e requirements.txt.

A menos que você queira que o Serviço de Aplicativo execute a automação de implantação para você, execute todas as tarefas de compilação (por exemplo, npm, , composerbowergulp, e pip) e verifique se você tem todos os arquivos necessários para executar o aplicativo. Esta etapa é necessária se você quiser executar o pacote diretamente.

Crie um arquivo ZIP de tudo no seu projeto. Para dotnet projetos, isso é tudo no diretório de saída do comando (excluindo o próprio diretório de dotnet publish saída). Por exemplo, o seguinte comando em seu terminal para criar um pacote ZIP do conteúdo do diretório atual:

# Bash
zip -r <file-name>.zip .

# PowerShell
Compress-Archive -Path * -DestinationPath <file-name>.zip

Implantar um pacote ZIP

Quando você implanta um pacote ZIP, o Serviço de Aplicativo descompacta seu conteúdo no caminho padrão do seu aplicativo (D:\home\site\wwwroot para Windows, /home/site/wwwroot para Linux).

Esta implantação de pacote ZIP usa o mesmo serviço Kudu que alimenta implantações baseadas em integração contínua. O Kudu suporta a seguinte funcionalidade para implantação de pacotes ZIP:

  • Exclusão de arquivos que sobraram de uma implantação anterior.
  • Opção para ativar o processo de compilação padrão, que inclui a restauração do pacote.
  • Personalização da implantação, incluindo a execução de scripts de implantação.
  • Logs de implantação.
  • Um limite de tamanho de pacote de 2048 MB.

Nota

Os arquivos no pacote ZIP são copiados somente se seus carimbos de data/hora não corresponderem ao que já foi implantado.

Com zip deploy UI no Kudu

No navegador, navegue até https://<app_name>.scm.azurewebsites.net/ZipDeployUI (veja a nota no topo).

Carregue o pacote ZIP que você criou em Criar um pacote ZIP de projeto arrastando-o para a área do explorador de arquivos na página da Web.

Quando a implementação está em curso, um ícone no canto superior direito mostra o progresso em percentagem. A página também mostra as mensagens verbosas para a operação abaixo da área do explorador. Quando a implantação for concluída, a última mensagem deverá dizer Deployment successful.

O ponto de extremidade acima não funciona para Linux App Services no momento. Em vez disso, considere usar FTP ou a API de implantação ZIP.

Sem zip implantar UI no Kudu

Implante um pacote ZIP em seu aplicativo Web usando o comando az webapp deploy . O comando CLI usa a API de publicação do Kudu para implantar os arquivos e pode ser totalmente personalizado.

O exemplo a seguir envia um pacote ZIP para seu site. Especifique o caminho para o pacote ZIP local para --src-path.

az webapp deploy --resource-group <group-name> --name <app-name> --src-path <zip-package-path>

Este comando reinicia o aplicativo após a implantação do pacote ZIP.

Habilite a automação de compilação para implantação zip

Por padrão, o mecanismo de implantação assume que um pacote ZIP está pronto para ser executado como está e não executa nenhuma automação de compilação. Para habilitar a mesma automação de compilação que em uma implantação do Git, defina a configuração do SCM_DO_BUILD_DURING_DEPLOYMENT aplicativo executando o seguinte comando no Cloud Shell:

az webapp config appsettings set --resource-group <group-name> --name <app-name> --settings SCM_DO_BUILD_DURING_DEPLOYMENT=true

Para obter mais informações, consulte a documentação do Kudu.

Implantar pacotes WAR/JAR/EAR

Você pode implantar seu pacote WAR, JAR ou EAR no Serviço de Aplicativo para executar seu aplicativo Web Java usando a CLI do Azure, o PowerShell ou a API de publicação do Kudu.

O processo de implantação mostrado aqui coloca o pacote no compartilhamento de conteúdo do aplicativo com a convenção de nomenclatura e a estrutura de diretórios corretas (consulte Referência da API de publicação do Kudu), e é a abordagem recomendada. Se você implantar pacotes WAR/JAR/EAR usando FTP ou WebDeploy, poderá ver falhas desconhecidas devido a erros na nomenclatura ou estrutura.

Implante um pacote WAR no Tomcat ou JBoss EAP usando o comando az webapp deploy . Especifique o caminho para o pacote Java local para --src-path.

az webapp deploy --resource-group <group-name> --name <app-name> --src-path ./<package-name>.war

O comando CLI usa a API de publicação do Kudu para implantar o pacote e pode ser totalmente personalizado.

Implantar arquivos individuais

Implante um script de inicialização, biblioteca e arquivo estático em seu aplicativo Web usando o comando az webapp deploy com o --type parâmetro.

Se você implantar um script de inicialização dessa forma, o Serviço de Aplicativo usará automaticamente o script para iniciar seu aplicativo.

O comando CLI usa a API de publicação do Kudu para implantar os arquivos e pode ser totalmente personalizado.

Implantar um script de inicialização

az webapp deploy --resource-group <group-name> --name <app-name> --src-path scripts/startup.sh --type=startup

Implantar um arquivo de biblioteca

az webapp deploy --resource-group <group-name> --name <app-name> --src-path driver.jar --type=lib

Implantar um arquivo estático

az webapp deploy --resource-group <group-name> --name <app-name> --src-path config.json --type=static

Implantar em aplicativos protegidos pela rede

Dependendo da configuração de rede do seu aplicativo Web, o acesso direto ao aplicativo a partir do seu ambiente de desenvolvimento pode ser bloqueado (consulte Implantando em sites protegidos por rede e Implantando em sites protegidos por rede, Parte 2). Em vez de enviar o pacote ou arquivo diretamente para o aplicativo Web, você pode publicá-lo em um sistema de armazenamento acessível a partir do aplicativo Web e acionar o aplicativo para extrair o ZIP do local de armazenamento.

A URL remota pode ser qualquer local acessível publicamente, mas é melhor usar um contêiner de armazenamento de blob com uma chave SAS para protegê-lo.

Use o az webapp deploy comando como faria nas outras seções, mas use --src-url em vez de --src-path. O exemplo a seguir usa o --src-url parâmetro para especificar a URL de um arquivo ZIP hospedado em uma conta de Armazenamento do Azure.

az webapp deploy --resource-group <group-name> --name <app-name> --src-url "https://storagesample.blob.core.windows.net/sample-container/myapp.zip?sv=2021-10-01&sb&sig=slk22f3UrS823n4kSh8Skjpa7Naj4CG3 --type zip

Referência da API de publicação do Kudu

A publish API Kudu permite que você especifique os mesmos parâmetros do comando CLI como parâmetros de consulta de URL. Para autenticar com a API REST do Kudu, é melhor usar a autenticação de token, mas você também pode usar a autenticação básica com as credenciais de implantação do seu aplicativo.

A tabela a seguir mostra os parâmetros de consulta disponíveis, seus valores permitidos e descrições.

Chave Valores permitidos Description Obrigatório Type
type war|jar|ear|lib|startup|static|zip O tipo do artefato que está sendo implantado, isso define o caminho de destino padrão e informa ao aplicativo Web como a implantação deve ser tratada.
- type=zip: Implante um pacote ZIP descompactando o conteúdo para /home/site/wwwroot. target-path é opcional.
- type=war: Implante um pacote WAR. Por padrão, o pacote WAR é implantado no /home/site/wwwroot/app.war. O caminho de destino pode ser especificado com target-path.
- type=jar: Implante um pacote JAR no /home/site/wwwroot/app.jar. O target-path parâmetro é ignorado
- type=ear: Implante um pacote EAR no /home/site/wwwroot/app.ear. O target-path parâmetro é ignorado
- type=lib: Implante um arquivo de biblioteca JAR. Por padrão, o arquivo é implantado no /home/site/libs. O caminho de destino pode ser especificado com target-path.
- type=static: Implante um arquivo estático (como um script). Por padrão, o arquivo é implantado no /home/site/wwwroot.
- type=startup: implante um script que o Serviço de Aplicativo usa automaticamente como o script de inicialização do seu aplicativo. Por padrão, o script é implantado para D:\home\site\scripts\<name-of-source> Windows e home/site/wwwroot/startup.sh Linux. O caminho de destino pode ser especificado com target-path.
Sim String
restart true|false Por padrão, a API reinicia o aplicativo após a operação de implantação (restart=true). Para implantar vários artefatos, impeça reinicializações na implantação final, exceto a final, definindo restart=false. Não Boolean
clean true|false Especifica se a implantação de destino deve ser limpa (excluída) antes de implantar o artefato lá. Não Boolean
ignorestack true|false A API de publicação usa a WEBSITE_STACK variável de ambiente para escolher padrões seguros, dependendo da pilha de idiomas do seu site. Definir esse parâmetro para false desativar quaisquer padrões específicos do idioma. Não Boolean
target-path Um caminho absoluto O caminho absoluto para implantar o artefato. Por exemplo, "/home/site/deployments/tools/driver.jar", "/home/site/scripts/helper.sh". Não String

Próximos passos

Para cenários de implantação mais avançados, tente implantar no Azure com o Git. A implantação baseada em Git no Azure permite controle de versão, restauração de pacotes, MSBuild e muito mais.

Mais recursos