öğretici: Linux ve Azure Cosmos DB üzerinde Azure App Service bir Java Spring Boot web uygulaması oluşturun
Bu öğretici, Azure 'da Java Web uygulamaları oluşturma, yapılandırma, dağıtma ve ölçeklendirme sürecinde size yol gösterir. işiniz bittiğinde, verileri Linux üzerinde Azure App Serviceçalıştıran Azure Cosmos DB bir Spring Boot uygulamasına sahip olursunuz.

Bu öğreticide şunların nasıl yapıldığını öğreneceksiniz:
- Cosmos DB veritabanı oluşturun.
- veritabanına örnek bir uygulama Bağlan ve yerel olarak test edin
- Örnek uygulamayı Azure 'a dağıtma
- App Service tanılama günlüklerini akışla
- Örnek uygulamanın ölçeğini genişletmek için ek örnekler ekleme
Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun.
Önkoşullar
Örnek TODO uygulamasını kopyalayın ve depoyu hazırlayın
bu öğreticide, spring Data Azure Cosmos DBtarafından desteklenen yay REST API çağıran bir web kullanıcı arabirimine sahip bir örnek yapılacaklar listesi uygulaması kullanılmaktadır. Uygulama için kod GitHubkullanılabilir. spring ve Cosmos DB kullanarak Java uygulamaları yazma hakkında daha fazla bilgi edinmek için, Azure Cosmos DB SQL apı öğreticisi ve spring Data Azure Cosmos DB hızlı başlangıçile spring Boot Starter ' a bakın.
Örnek depoyu kopyalamak ve örnek uygulama ortamını ayarlamak için terminalinizde aşağıdaki komutları çalıştırın.
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
yes | cp -rf .prep/* .
Azure Cosmos DB oluşturma
aboneliğinizde bir Azure Cosmos DB veritabanı oluşturmak için aşağıdaki adımları izleyin. YAPıLACAKLAR listesi uygulaması bu veritabanına bağlanır ve çalışırken verisini depolar, uygulamayı çalıştırdığınız yere bakılmaksızın uygulama durumunu kalıcı hale getirmeyi sağlar.
Azure CLı 'niz üzerinde oturum açın ve oturum açma kimlik bilgilerinizle birden fazla bağlantı varsa aboneliğinizi isteğe bağlı olarak ayarlayın.
az login az account set -s <your-subscription-id>Kaynak grubu adını belirterek bir Azure Kaynak grubu oluşturun.
az group create -n <your-azure-group-name> \ -l <your-resource-group-region>tür ile Azure Cosmos DB oluşturun
GlobalDocumentDB. Cosmos DB adı yalnızca küçük harf kullanımı kullanmalıdır.documentEndpointKomuttan gelen yanıttaki alanı aşağı göz önünde edin.az cosmosdb create --kind GlobalDocumentDB \ -g <your-azure-group-name> \ -n <your-azure-COSMOS-DB-name-in-lower-case-letters>uygulamaya bağlanmak için Azure Cosmos DB anahtarınızı alın. Bir
primaryMasterKeydocumentEndpointsonraki adımda ihtiyacınız olacak şekilde yakınınızda saklayın.az cosmosdb keys list -g <your-azure-group-name> -n <your-azure-COSMOSDB-name>
TODO uygulaması özelliklerini yapılandırma
Bilgisayarınızda bir terminali açın. yeni oluşturduğunuz Cosmos DB veritabanınız için özelleştirebilmeniz için kopyalanmış depoya örnek betik dosyasını kopyalayın.
cd initial/spring-todo-app
cp set-env-variables-template.sh .scripts/set-env-variables.sh
en .scripts/set-env-variables.sh sevdiğiniz düzenleyicide düzenleyin ve Azure Cosmos DB bağlantı bilgilerini sağlayın. App Service Linux yapılandırması için, your-resource-group-region your-azure-group-name Cosmos DB veritabanını oluştururken kullanılan () ve kaynak grubu () ile aynı bölgeyi kullanın. Herhangi bir Azure dağıtımında herhangi bir Web uygulaması adı yinelemediğinden benzersiz bir WEBAPP_NAME seçin.
export COSMOSDB_URI=<put-your-COSMOS-DB-documentEndpoint-URI-here>
export COSMOSDB_KEY=<put-your-COSMOS-DB-primaryMasterKey-here>
export COSMOSDB_DBNAME=<put-your-COSMOS-DB-name-here>
# App Service Linux Configuration
export RESOURCEGROUP_NAME=<put-your-resource-group-name-here>
export WEBAPP_NAME=<put-your-Webapp-name-here>
export REGION=<put-your-REGION-here>
Sonra betiği çalıştırın:
source .scripts/set-env-variables.sh
Bu ortam değişkenleri, YAPıLACAKLAR listesi uygulamasında ' de kullanılır application.properties . Özellikler dosyasındaki alanlar yay verileri için varsayılan bir depo yapılandırması ayarlar:
azure.cosmosdb.uri=${COSMOSDB_URI}
azure.cosmosdb.key=${COSMOSDB_KEY}
azure.cosmosdb.database=${COSMOSDB_DBNAME}
@Repository
public interface TodoItemRepository extends DocumentDbRepository<TodoItem, String> {
}
ardından örnek uygulama, @Document com.microsoft.azure.spring.data.cosmosdb.core.mapping.Document Cosmos DB tarafından depolanacak ve yönetilmek üzere bir varlık türü ayarlamak için öğesinden içeri aktarılan ek açıklamayı kullanır:
@Document
public class TodoItem {
private String id;
private String description;
private String owner;
private boolean finished;
Örnek uygulamayı çalıştırma
Örneği çalıştırmak için Maven 'i kullanın.
mvn package spring-boot:run
Çıktı aşağıdaki gibi görünmelidir.
bash-3.2$ mvn package spring-boot:run
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building spring-todo-app 2.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] SimpleUrlHandlerMapping - Mapped URL path [/webjars/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
[INFO] SimpleUrlHandlerMapping - Mapped URL path [/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
[INFO] WelcomePageHandlerMapping - Adding welcome page: class path resource [static/index.html]
2018-10-28 15:04:32.101 INFO 7673 --- [ main] c.m.azure.documentdb.DocumentClient : Initializing DocumentClient with serviceEndpoint [https://sample-cosmos-db-westus.documents.azure.com:443/], ConnectionPolicy [ConnectionPolicy [requestTimeout=60, mediaRequestTimeout=300, connectionMode=Gateway, mediaReadMode=Buffered, maxPoolSize=800, idleConnectionTimeout=60, userAgentSuffix=;spring-data/2.0.6;098063be661ab767976bd5a2ec350e978faba99348207e8627375e8033277cb2, retryOptions=com.microsoft.azure.documentdb.RetryOptions@6b9fb84d, enableEndpointDiscovery=true, preferredLocations=null]], ConsistencyLevel [null]
[INFO] AnnotationMBeanExporter - Registering beans for JMX exposure on startup
[INFO] TomcatWebServer - Tomcat started on port(s): 8080 (http) with context path ''
[INFO] TodoApplication - Started TodoApplication in 45.573 seconds (JVM running for 76.534)
Uygulama başlatıldıktan sonra Spring TODO uygulamasına bu bağlantıyı kullanarak yerel olarak erişebilirsiniz: http://localhost:8080/ .

"Started TodoApplication" iletisi yerine özel durumlar görürseniz, bash önceki adımda bulunan betiğin ortam değişkenlerini doğru bir şekilde ve oluşturduğunuz Azure Cosmos DB veritabanı için doğru olduğundan emin olun.
Azure dağıtımını yapılandırma
pom.xmlDosyayı initial/spring-boot-todo dizinde açın ve Maven yapılandırması Için aşağıdaki Azure Web uygulaması eklentisini ekleyin.
<plugins>
<!--*************************************************-->
<!-- Deploy to Java SE in App Service Linux -->
<!--*************************************************-->
<plugin>
<groupId>com.microsoft.azure</groupId>
<artifactId>azure-webapp-maven-plugin</artifactId>
<version>2.0.0</version>
<configuration>
<schemaVersion>v2</schemaVersion>
<!-- 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>COSMOSDB_URI</name>
<value>${COSMOSDB_URI}</value>
</property>
<property>
<name>COSMOSDB_KEY</name>
<value>${COSMOSDB_KEY}</value>
</property>
<property>
<name>COSMOSDB_DBNAME</name>
<value>${COSMOSDB_DBNAME}</value>
</property>
<property>
<name>JAVA_OPTS</name>
<value>-Dserver.port=80</value>
</property>
</appSettings>
</configuration>
</plugin>
...
</plugins>
Linux üzerinde App Service dağıtma
mvn azure-webapp:deployMaven hedefini kullanarak, Todo uygulamasını Linux üzerinde Azure App Service için dağıtın.
# Deploy
bash-3.2$ mvn azure-webapp:deploy
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building spring-todo-app 2.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- azure-webapp-maven-plugin:2.0.0:deploy (default-cli) @ spring-todo-app ---
Auth Type: AZURE_CLI
Default subscription: xxxxxxxxx
Username: xxxxxxxxx
[INFO] Subscription: xxxxxxxxx
[INFO] Creating App Service Plan 'ServicePlanb6ba8178-5bbb-49e7'...
[INFO] Successfully created App Service Plan.
[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:19 min
[INFO] Finished at: 2019-11-06T15:32:03-07:00
[INFO] Final Memory: 50M/574M
[INFO] ------------------------------------------------------------------------
Çıktı, dağıtılan uygulamanızın URL 'sini içerir (Bu örnekte, https://spring-todo-app.azurewebsites.net ). Uygulamanızı yüklemek için, bu URL 'YI Web tarayıcınıza kopyalayabilir veya Terminal pencerenizde aşağıdaki komutu çalıştırabilirsiniz.
explorer https://spring-todo-app.azurewebsites.net
Adres çubuğunda uzak URL ile çalışan uygulamayı görmeniz gerekir:

Tanılama günlüklerini akışla aktarma
App Service’te uygulama kodunuzun içinden oluşturulan konsol günlüklerine erişmek için şu komutu Cloud Shell’de çalıştırarak tanılama günlüğüne kaydetmeyi açın:
az webapp log config --resource-group <resource-group-name> --name <app-name> --docker-container-logging filesystem --level Verbose
--level için olası değerler: Error, Warning, Info ve Verbose. Her düzey kendisinden önceki düzeyi içerir. Örneğin: Error yalnızca hata iletilerini içerir, Verbose ise tüm iletileri içerir.
Tanılama günlüğüne kaydetme açıldıktan sonra günlük akışını görmek için şu komutu çalıştırın:
az webapp log tail --resource-group <resource-group-name> --name <app-name>
Konsol günlüklerini hemen görmüyorsanız, 30 saniye içinde yeniden kontrol edin.
Not
Ayrıca, tarayıcıdan https://<app-name>.scm.azurewebsites.net/api/logs/docker adresine giderek günlük dosyalarını inceleyebilirsiniz.
Günlük akışını dilediğiniz zaman durdurmak için Ctrl+C yazın.
TODO uygulamasını genişletme
Başka bir çalışan ekleyerek uygulamayı ölçeklendirin:
az appservice plan update --number-of-workers 2 \
--name ${WEBAPP_PLAN_NAME} \
--resource-group <your-azure-group-name>
Kaynakları temizleme
Bu kaynaklara başka bir öğretici (bkz. Sonraki adımlar) için gereksinim duymuyorsanız, Cloud Shell'de aşağıdaki komutu çalıştırarak bu kaynakları silebilirsiniz:
az group delete --name <your-azure-group-name> --yes
Sonraki adımlar
Java geliştiricileri için Azure spring Boot, Cosmos DB, Azure Cosmos DB ve App Service Linux için yay verileri.
Java uygulamalarını, Linux üzerinde App Service geliştirici kılavuzunda çalıştırma hakkında daha fazla bilgi edinin.