Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Este artigo orientará você pelo processo de criação, configuração, implantação, solução de problemas e dimensionamento de aplicativos Web Java no Serviço de Aplicativo do Azure no Linux.
Ele demonstrará o uso dos seguintes componentes:
Pré-requisitos
Os seguintes pré-requisitos são necessários para seguir as etapas neste artigo:
- Para implantar um aplicativo Web Java na nuvem, você precisa de uma assinatura do Azure. Se ainda não tiver uma subscrição do Azure, pode ativar os benefícios de subscritor do MSDN ou inscrever-se numa conta gratuita do Azure .
- CLI do Azure 2.0
- JDK Java 8
- Maven 3
Importante
O Spring Boot versão 2.5 ou superior é necessário para concluir as etapas neste artigo.
Clone o repositório de aplicações Java de exemplo
Para este exercício, use a aplicação Spring Todo, que é uma aplicação Java construída usando Spring Boot, Spring Data for Azure Cosmos DB e Azure Cosmos DB.
Clone a aplicação Spring Todo e copie o conteúdo da pasta .prep para inicializar o projeto:
Para bash:
git clone --recurse-submodules https://github.com/Azure-Samples/e2e-java-experience-in-app-service-linux-part-2.git yes | cp -rf .prep/* .Para Windows:
git clone --recurse-submodules https://github.com/Azure-Samples/e2e-java-experience-in-app-service-linux-part-2.git cd e2e-java-experience-in-app-service-linux-part-2 xcopy .prep /f /s /e /yAltere o diretório para a seguinte pasta no repositório clonado:
cd initial\spring-todo-app
Criar uma conta Azure Cosmos DB a partir do CLI do Azure
O procedimento seguinte cria uma conta Azure Cosmos DB usando CLI do Azure.
Inicie sessão no CLI do Azure e defina o seu ID de subscrição.
az loginDefina o ID da assinatura, se necessário.
az account set -s <your-subscription-id>Crie um grupo de recursos no Azure e guarde o nome do grupo para uso posterior.
az group create \ --name <your-azure-group-name> \ --location <your-resource-group-region>Crie a conta Azure Cosmos DB e especifique o tipo como
GlobalDocumentDB. O nome da conta do Azure Cosmos DB deve usar apenas letras minúsculas. Certifique-se de anotar o campodocumentEndpointna resposta. Você precisa desse valor mais tarde.az cosmosdb create \ --resource-group <your-resource-group-name> \ --name <your-azure-COSMOS-DB-name-in-lower-case-letters> \ --kind GlobalDocumentDBObtenha as suas chaves do Azure Cosmos DB e registre o
primaryMasterKeyvalor para uso posterior.az cosmosdb keys list \ --resource-group <your-azure-group-name> \ --name <your-azure-COSMOSDB-name>
Crie e execute o aplicativo localmente
O procedimento a seguir executa o aplicativo no computador de desenvolvimento.
No console de sua escolha, configure as variáveis de ambiente mostradas nas seções de código a seguir com as informações de conexão do Azure e do Azure Cosmos DB coletadas anteriormente neste artigo. Você precisa fornecer um nome exclusivo para WEBAPP_NAME e valor para as variáveis REGION.
Para Linux (Bash):
export COSMOS_URI=<put-your-COSMOS-DB-documentEndpoint-URI-here> export COSMOS_KEY=<put-your-COSMOS-DB-primaryMasterKey-here> export COSMOS_DATABASE=<put-your-COSMOS-DATABASE-name-here> export RESOURCEGROUP_NAME=<put-your-resource-group-name-here> export WEBAPP_NAME=<put-your-Webapp-name-here> export REGION=<put-your-REGION-here> export SUBSCRIPTION_ID=<put-your-SUBSCRIPTION_ID-here>Para Windows (Prompt de Comando):
set COSMOS_URI=<put-your-COSMOS-DB-documentEndpoint-URI-here> set COSMOS_KEY=<put-your-COSMOS-DB-primaryMasterKey-here> set COSMOS_DATABASE=<put-your-COSMOS-DATABASE-name-here> set RESOURCEGROUP_NAME=<put-your-resource-group-name-here> set WEBAPP_NAME=<put-your-Webapp-name-here> set REGION=<put-your-REGION-here> set SUBSCRIPTION_ID=<put-your-SUBSCRIPTION_ID-here>Observação
Se quiseres provisionar estas variáveis com um script, há um modelo para o Bash no
.prepdiretório que podes copiar e usar como ponto de partida.Altere o diretório usando o seguinte comando:
cd initial/spring-todo-appExecute o aplicativo Spring Todo localmente com o seguinte comando:
mvn package spring-boot:runDepois de a aplicação iniciar, pode validar a implementação acedendo à aplicação Spring Todo aqui:
http://localhost:8080/.
Implantar no Serviço de Aplicações Linux
O procedimento a seguir implanta o aplicativo no Linux no Azure.
Abra o ficheiro pom.xml que copiaste anteriormente para o diretório inicial/spring-todo-app do repositório. Verifique se o plug-in Maven para o do Serviço de Aplicativo do Azure está incluído, como visto no arquivo de pom.xml a seguir. Se a versão não estiver definida para 1.14.0, atualize o valor.
<plugins> <!--*************************************************--> <!-- Deploy to Java SE in App Service Linux --> <!--*************************************************--> <plugin> <groupId>com.microsoft.azure</groupId> <artifactId>azure-webapp-maven-plugin</artifactId> <version>1.14.0</version> <configuration> <schemaVersion>v2</schemaVersion> <subscriptionId>${SUBSCRIPTION_ID}</subscriptionId> <!-- Web App information --> <resourceGroup>${RESOURCEGROUP_NAME}</resourceGroup> <appName>${WEBAPP_NAME}</appName> <region>${REGION}</region> <pricingTier>P1v2</pricingTier> <!-- Java Runtime Stack for Web App on Linux--> <runtime> <os>Linux</os> <javaVersion>Java 8</javaVersion> <webContainer>Java SE</webContainer> </runtime> <deployment> <resources> <resource> <directory>${project.basedir}/target</directory> <includes> <include>*.jar</include> </includes> </resource> </resources> </deployment> <appSettings> <property> <name>COSMOS_URI</name> <value>${COSMOS_URI}</value> </property> <property> <name>COSMOS_KEY</name> <value>${COSMOS_KEY}</value> </property> <property> <name>COSMOS_DATABASE</name> <value>${COSMOS_DATABASE}</value> </property> <property> <name>JAVA_OPTS</name> <value>-Dserver.port=80</value> </property> </appSettings> </configuration> </plugin> ... </plugins>Implementar o Java SE no App Service Linux.
mvn azure-webapp:deploy// Deploy bash-3.2$ mvn azure-webapp:deploy [INFO] Scanning for projects... [INFO] [INFO] -------< com.azure.spring.samples:spring-todo-app >-------- [INFO] Building spring-todo-app 2.0-SNAPSHOT [INFO] --------------------------------[ jar ]--------------------------------- [INFO] [INFO] --- azure-webapp-maven-plugin:1.14.0:deploy (default-cli) @ spring-todo-app --- Auth type: AZURE_CLI Default subscription: Consoto Subscription(subscription-id-xxx) Username: user@contoso.com [INFO] Subscription: Consoto Subscription(subscription-id-xxx) [INFO] Creating app service plan... [INFO] Successfully created app service plan asp-spring-todo-app. [INFO] Creating web app spring-todo-app... [INFO] Successfully created Web App spring-todo-app. [INFO] Trying to deploy artifact to spring-todo-app... [INFO] Successfully deployed the artifact to https://spring-todo-app.azurewebsites.net [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 02:05 min [INFO] Finished at: 2021-05-28T09:43:19+08:00 [INFO] ------------------------------------------------------------------------Navegue até seu aplicativo Web em execução em Java SE no App Service Linux:
https://<WEBAPP_NAME>.azurewebsites.net
Solucionar problemas do aplicativo Spring Todo no Azure exibindo logs
O procedimento a seguir abre arquivos de log no Azure.
Configure os logs para a aplicação web Java implementada no Serviço de Aplicações do Azure no Linux.
az webapp log config \ --name ${WEBAPP_NAME} \ --resource-group ${RESOURCEGROUP_NAME} \ --web-server-logging filesystemAbra o fluxo de log remoto do aplicativo Web Java a partir de uma máquina local:
az webapp log tail \ --name ${WEBAPP_NAME} \ --resource-group ${RESOURCEGROUP_NAME}bash-3.2$ az webapp log tail --name ${WEBAPP_NAME} --resource-group ${RESOURCEGROUP_NAME} 2021-05-28T01:46:08.000655632Z _____ 2021-05-28T01:46:08.000701432Z / _ \ __________ _________ ____ 2021-05-28T01:46:08.000708133Z / /_\ \___ / | \_ __ \_/ __ \ 2021-05-28T01:46:08.000711733Z / | \/ /| | /| | \/\ ___/ 2021-05-28T01:46:08.000714933Z \____|__ /_____ \____/ |__| \___ > 2021-05-28T01:46:08.000718233Z \/ \/ \/ 2021-05-28T01:46:08.000721333Z A P P S E R V I C E O N L I N U X 2021-05-28T01:46:08.000724233Z Documentation: http://aka.ms/webapp-linux ... ... 2021-05-28T01:46:18.925044188Z . ____ _ __ _ _ 2021-05-28T01:46:18.925481392Z /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ 2021-05-28T01:46:18.926004297Z ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ 2021-05-28T01:46:18.926587603Z \\/ ___)| |_)| | | | | || (_| | ) ) ) ) 2021-05-28T01:46:18.926599403Z ' |____| .__|_| |_|_| |_\__, | / / / / 2021-05-28T01:46:18.926841806Z =========|_|==============|___/=/_/_/_/ 2021-05-28T01:46:18.931157849Z :: Spring Boot :: (v2.4.5) ... ... 2021-05-28T01:46:29.842553633Z 2021-05-28 01:46:29.842 INFO 124 --- [ main] c.azure.spring. samples.TodoApplication : Started TodoApplication in 12.635 seconds (JVM running for 17.664) 2021-05-28T01:46:30.477951594Z 2021-05-28 01:46:30.477 INFO 124 --- [p-nio-80-exec-1] o.a.c.c.C. [Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet 'dispatcherServlet' 2021-05-28T01:46:30.483316162Z 2021-05-28 01:46:30.483 INFO 124 --- [p-nio-80-exec-1] o.s.web. servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet' 2021-05-28T01:46:30.485411088Z 2021-05-28 01:46:30.484 INFO 124 --- [p-nio-80-exec-1] o.s.web. servlet.DispatcherServlet : Completed initialization in 0 ms 2021-05-28T01:47:19.683003828Z 2021-05-28 01:47:19.682 INFO 124 --- [p-nio-80-exec-9] c.a.s.s. controller.TodoListController : GET request access '/api/todolist' path. 2021-05-28T01:47:26.069984388Z 2021-05-28 01:47:26.069 INFO 124 --- [-nio-80-exec-10] c.a.s.s. controller.TodoListController : POST request access '/api/todolist' path with item: Milk 2021-05-28T01:47:26.649080678Z 2021-05-28 01:47:26.648 INFO 124 --- [p-nio-80-exec-1] c.a.s.s. controller.TodoListController : GET request access '/api/todolist' path.
Dimensione o aplicativo Spring Todo
Use o procedimento a seguir para dimensionar o aplicativo.
Dimensione o aplicativo Web Java usando a CLI do Azure:
az appservice plan update \ --number-of-workers 2 \ --name ${WEBAPP_PLAN_NAME} \ --resource-group ${RESOURCEGROUP_NAME}
Próximos passos
- Java no Guia de Desenvolvimento do Serviço de Aplicações Linux
- Azure para desenvolvedores Java Para saber mais sobre o Spring e o Azure, continue para o centro de documentação do Spring on Azure.
Ver também
Para obter mais informações sobre como usar aplicativos Spring Boot no Azure, consulte os seguintes artigos:
Implantar um aplicativo Spring Boot no Linux no Serviço de Aplicativo do Azure
executando um aplicativo Spring Boot em um cluster Kubernetes no do Serviço de Contêiner do Azure
Para obter mais informações sobre como usar o Azure com Java, consulte o Azure for Java Developers e o Trabalhando com o Azure DevOps e o Java.
O Spring Framework é uma solução de código aberto que ajuda os desenvolvedores Java a criar aplicativos de nível empresarial. Um dos projetos mais populares construídos sobre essa plataforma é o Spring Boot, que oferece uma abordagem simplificada para criar aplicações Java autónomas. Para ajudar os desenvolvedores a começar a usar o Spring Boot, vários pacotes de exemplo do Spring Boot estão disponíveis em https://github.com/spring-guides/. Além de escolher na lista de projetos básicos do Spring Boot, o Spring Initializr ajuda os desenvolvedores a começar a criar aplicativos personalizados do Spring Boot.