Alıştırma - Java web uygulamanızı Azure App Service’e dağıtma

Tamamlandı

Bu ünitede, uygulamanızı Azure App Service'e dağıtacaksınız.

Azure App Service nedir?

Azure App Service, Azure tarafından sunulan ve Tomcat çalıştırmak için kullanabileceğiniz hizmet olarak platform (PaaS) bileşenidir. Windows ve Linux ortamı, güvenlik, yük dengeleme, otomatik ölçeklendirme ve DevOps tümleştirme gibi özelliklere sahiptir. İşletim sistemi ve Tomcat ile ilgili yönetim görevlerini Azure'a devredip uygulama tasarlamaya odaklanabilirsiniz.

Screenshot that shows the Azure portal screen.

Örnek JSF uygulamaları alma

Java web uygulaması dağıtmak için, burada gösterildiği gibi GitHub'dan bir PrimeFaces JavaServer Faces (JSF) web uygulaması alabilirsiniz:

git clone https://github.com/yoshioterada/Deploy-PrimeFaces-JSF-Web-App-on-Tomcat-9.0

Kopyaladıktan sonra dizinde aşağıdaki dosyaları görürsünüz:

Deploy-PrimeFaces-JSF-Web-App-on-Tomcat-9.0
├── pom.xml
└── src
    └── main
        ├── java
        │   └── com
        │       └── microsoft
        │           └── azure
        │               └── samples
        │                   ├── controller
        │                   │   └── TodoListController.java
        │                   ├── dao
        │                   │   ├── ItemManagement.java
        │                   │   └── TodoItemManagementInMemory.java
        │                   └── model
        │                       └── TodoItem.java
        └── webapp
            ├── META-INF
            │   └── context.xml
            ├── WEB-INF
            │   ├── beans.xml
            │   ├── classes
            │   │   └── logging.properties
            │   ├── faces-config.xml
            │   └── web.xml
            └── index.xhtml

Azure App Service için Maven Eklentisi

Microsoft, Java geliştiricilerinin Uygulamaları Azure'a dağıtmasını kolaylaştırmak amacıyla Azure Uygulaması Hizmeti için Maven Eklentisi sağlar. Bu eklentiyi kullanarak uygulamanızı kolayca yapılandırabilir ve Azure'a dağıtabilirsiniz. Azure Uygulaması Hizmeti için Maven Eklentisi'ni kullanmak üzere aşağıdaki komutu yürütür.

Azure App Service için Maven eklentisini yapılandırma

Azure Uygulaması Hizmeti için Maven Eklentisini yapılandırmak için aşağıdaki komutu yürütür:

mvn com.microsoft.azure:azure-webapp-maven-plugin:1.12.0:config

Komutun ardından istemde bazı sorular görünür. Uygun öğeleri girip gerekli ayarları yapın. Aşağıdaki seçenekleri girin:

Madde Giriş değeri
Abonelik Azure aboneliğinizi seçin
İşletim sistemi değerini tanımlayın 1: Linux
Fiyatlandırma katmanı değerini tanımlayın P1v2
Java sürümü değerini tanımlayın 1: Java 8 veya 2: Java 11
Çalışma zamanı yığını değerini tanımlayın 3: TOMCAT 9.0
Onayla (E/H) Y

Komutu yürüttkten sonra şu sonuçlar görüntülenir:

mvn com.microsoft.azure:azure-webapp-maven-plugin:1.12.0:config
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8
[INFO] Scanning for projects...
[INFO]
[INFO] -----------< com.microsoft.azure.samples:azure-javaweb-app >------------
[INFO] Building azure-javaweb-app Maven Webapp 1.0-SNAPSHOT
[INFO] --------------------------------[ war ]---------------------------------
[INFO]
[INFO] --- azure-webapp-maven-plugin:1.12.0:config (default-cli) @ azure-javaweb-app ---

Available subscriptions:
* 1: My Subscription (********-****-****-****-************)
Please choose a subscription [My Subscription]: [Enter]
[INFO] It may take a few minutes to load all Java Web Apps, please be patient.
[WARNING] There are no Java Web Apps in current subscription, please follow the following steps to create a new one.
Define value for OS [Linux]:
* 1: Linux
  2: Docker
  3: Windows
Enter your choice:
Define value for pricingTier [P1v2]:
   1: B1
   2: B2
   3: B3
   4: D1
   5: F1
*  6: P1v2
   7: P2v2
   8: P3v2
   9: S1
  10: S2
  11: S3
Define value for javaVersion [Java 8]:
* 1: Java 8
  2: Java 11
Enter your choice: 1
Define value for runtimeStack:
  1: Jbosseap 7.2
* 2: Tomcat 8.5
  3: Tomcat 9.0
Enter your choice: 3
Please confirm webapp properties
Subscription Id : f77aafe8-6be4-4d3d-bd9c-d0c37687ef70
AppName : azure-javaweb-app-1604982052600
ResourceGroup : azure-javaweb-app-1604982052600-rg
Region : westeurope
PricingTier : PremiumV2_P1v2
OS : Linux
Java : Java 8
Web server stack: Tomcat 9.0
Deploy to slot : false
Confirm (Y/N) [Y]: y
[INFO] Saving configuration to pom.
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  37.656 s
[INFO] Finished at: 2020-10-01T17:24:02+09:00
[INFO] ------------------------------------------------------------------------

pom.xml dosyanızın <plugins> bölümünde yeni bir bölüm göreceksiniz.

Kaynak grubu adını, örnek adını ve dağıtım konumunu değiştirmek isterseniz <resourceGroup>, <appName> ve <region> girişlerini değiştirebilirsiniz.

    <plugins>
      <plugin>
        <groupId>com.microsoft.azure</groupId>
        <artifactId>azure-webapp-maven-plugin</artifactId>
        <version>1.12.0</version>
        <configuration>
          <schemaVersion>V2</schemaVersion>
          <subscriptionId>********-****-****-****-************</subscriptionId>
          <resourceGroup>azure-javaweb-app</resourceGroup>
          <appName>azure-javaweb-app-1601463451101</appName>
          <pricingTier>P1v2</pricingTier>
          <region>japaneast</region>
          <runtime>
            <os>linux</os>
            <javaVersion>Java 8</javaVersion>
            <webContainer>TOMCAT 9.0</webContainer>
          </runtime>
          <deployment>
            <resources>
              <resource>
                <directory>${project.basedir}/target</directory>
                <includes>
                  <include>*.war</include>
                </includes>
              </resource>
            </resources>
          </deployment>
        </configuration>
      </plugin>
    </plugins>

Uygulamayı derleme ve Azure App Service'e dağıtma

Azure App Service dağıtım ayarlarını tamamladığınıza göre kaynak kodu yeniden derleyebilirsiniz:

mvn clean package

Derlendiğinde, uygulamanızı dağıtmak için Azure Web Apps için Maven Eklentisi komutunu kullanın. Şu kodu yürütün:

mvn azure-webapp:deploy

Dağıtım tamamlandığında aşağıdaki ileti görüntülenir.

[INFO] Successfully deployed the artifact to https://azure-javaweb-app-1601463451101.azurewebsites.net
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  02:15 min
[INFO] Finished at: 2020-11-19T15:55:55+09:00
[INFO] ------------------------------------------------------------------------

Dağıtılan uygulamanın genel URL'si satırda Successfully deployed the artifact to görüntülenir. Aşağıdaki örnekte olduğu gibi URL'nize bir tarayıcıyla erişin:

https://azure-javaweb-app-1601463451101.azurewebsites.net

Screenshot that shows the deployed web app on Azure App Service.

Komut satırından günlük akışını doğrulama

Günlük akışına erişmek için aşağıdaki CLI komutunu yürütün:

az webapp log tail -g azure-javaweb-app -n azure-javaweb-app-1601463451101

Aşağıdaki sonucu alırsınız:

Screenshot that shows the execution of the log stream.

Alıştırma özeti

Bu ünitede java web uygulaması oluşturmayı ve paketlemeyi, Azure Web Apps için Maven Eklentisini kullanmayı ve uygulamanızı Azure Uygulaması Hizmeti'ne dağıtmayı öğrendiniz. Bu adımlar yalnızca JSF uygulamaları için değil aynı zamanda çoğu Java web uygulaması için de geçerlidir.