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.net
de 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
, , composer
bower
gulp
, 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.