Aracılığıyla paylaş


Java Tomcat uygulamalarını Azure App Service'e dağıtma

Bu makalede, Microsoft Entra hesabıyla Azure App Service'te oturum açma ile bir Tomcat uygulamasının nasıl dağıtılacağı gösterilmektedir.

Bu makalede, aşağıdaki makalelerden birini yalnızca Yerel olarak çalıştır sekmesini kullanarak tamamladığınız ve şimdi Azure'a dağıtmak istediğiniz varsayılır. Bu yönergeler, şu makalelerde Azure'a dağıt sekmesindeki yönergelerle aynıdır:

Önkoşullar

  • Azure App Service uygulamaları için Maven Eklentisi

    Maven tercih ettiğiniz geliştirme aracı değilse, diğer araçları kullanan aşağıdaki benzer öğreticilere bakın:

Maven eklentisini yapılandırma

Azure App Service'e dağıtım yaptığınızda, dağıtım otomatik olarak Azure CLI'dan Azure kimlik bilgilerinizi kullanır. Azure CLI yerel olarak yüklü değilse Maven eklentisi OAuth veya cihaz oturum açma ile kimlik doğrulaması yapar. Daha fazla bilgi için bkz. Maven eklentileriyle kimlik doğrulaması.

Eklentiyi yapılandırmak için aşağıdaki adımları kullanın:

  1. Dağıtımı yapılandırmak için aşağıdaki komutu çalıştırın. Bu komut Azure App Service işletim sistemini, Java sürümünü ve Tomcat sürümünü ayarlamanıza yardımcı olur.

    mvn com.microsoft.azure:azure-webapp-maven-plugin:2.13.0:config
    
  2. Yeni bir çalıştırma yapılandırmasıoluşturmak için, Ytuşuna basın, ardından Entertuşuna basın.

  3. İşletim sistemiiçin değer tanımlamak üzere , Windows için 1 veya Linux için 2 tuşuna basın, ardından Entertuşuna basın.

  4. javaVersioniçin değer tanımlama için, Java 11 için 2 basın ve ardından Enterbasın.

  5. webContainerdeğerini tanımla için, Tomcat 9.0 için 4 basın ve ardından enterbasın.

  6. pricingTierdeğerini tanımlama için, varsayılan P1v2 katmanını seçmek için Enter basın.

  7. Onaylaiçin, veY tuşlarına basın, ardından veEnter tuşuna basın.

Aşağıdaki örnekte dağıtım işleminin çıkışı gösterilmektedir:

Please confirm webapp properties
AppName : msal4j-servlet-auth-1707209552268
ResourceGroup : msal4j-servlet-auth-1707209552268-rg
Region : centralus
PricingTier : P1v2
OS : Linux
Java Version: Java 11
Web server stack: Tomcat 9.0
Deploy to slot : false
Confirm (Y/N) [Y]: [INFO] Saving configuration to pom.
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  37.112 s
[INFO] Finished at: 2024-02-06T08:53:02Z
[INFO] ------------------------------------------------------------------------

Seçimlerinizi onayladıktan sonra eklenti, uygulamanızı Azure App Service'te çalışacak şekilde yapılandırmak için gerekli eklenti öğesini ve ayarlarını projenizin pom.xml dosyasına ekler.

pom.xml dosyasının ilgili bölümü aşağıdaki örneğe benzer olmalıdır:

<build>
    <plugins>
        <plugin>
            <groupId>com.microsoft.azure</groupId>
            <artifactId>>azure-webapp-maven-plugin</artifactId>
            <version>x.xx.x</version>
            <configuration>
                <schemaVersion>v2</schemaVersion>
                <resourceGroup>your-resourcegroup-name</resourceGroup>
                <appName>your-app-name</appName>
            ...
            </configuration>
        </plugin>
    </plugins>
</build>

App Service yapılandırmalarını doğrudan pom.xml'de değiştirebilirsiniz. Bazı yaygın yapılandırmalar aşağıdaki tabloda listelenmiştir:

Mülk Gerekli Açıklama
subscriptionId yanlış Abonelik kimliği.
resourceGroup doğru Uygulamanızın Azure kaynak grubu.
appName doğru Uygulamanızın adı.
region yanlış Uygulamanızın barındırıldığı bölge. Varsayılan değer centralus. Geçerli bölgeler için bkz. desteklenen bölgeler.
pricingTier yanlış Uygulamanızın fiyatlandırma katmanı. Varsayılan değer, üretim iş yükü için P1v2. Java geliştirme ve test için önerilen en düşük değer B2. Daha fazla bilgi için Uygulama Hizmeti Fiyatlandırmasıkısmına bakın.
runtime yanlış Çalışma zamanı ortamı yapılandırması. Daha fazla bilgi için bkz. Yapılandırma Ayrıntıları.
deployment yanlış Dağıtım yapılandırması. Daha fazla bilgi için bkz. Yapılandırma Ayrıntıları.

Yapılandırmaların tam listesi için eklenti başvuru belgelerine bakın. Tüm Azure Maven eklentileri ortak bir yapılandırma kümesini paylaşır. Bu yapılandırmalar için bkz. Ortak Yapılandırmalar. Azure App Service'e özgü yapılandırmalar için bkz. Azure uygulaması: Yapılandırma Ayrıntıları.

appName ve resourceGroup değerlerini daha sonra kullanmak üzere bir kenara kaydettiğinizden emin olun.

Uygulamayı dağıtım için hazırlama

Uygulamanızı App Service'e dağıttığınızda, yeniden yönlendirme URL'niz dağıtılan uygulama örneğinizin yeniden yönlendirme URL'sine dönüşür. Özellikler dosyanızdaki bu ayarları değiştirmek için aşağıdaki adımları kullanın:

  1. Aşağıdaki örnekte gösterildiği gibi uygulamanızın authentication.properties dosyasına gidin ve app.homePage değerini dağıtılan uygulamanızın etki alanı adıyla değiştirin. Örneğin, önceki adımda uygulama adınız için example-domain seçtiyseniz, şimdi https://example-domain.azurewebsites.net değeri için app.homePage kullanmanız gerekir. Protokolü de http olarak httpsolarak değiştirdiğinizden emin olun.

    # app.homePage is by default set to dev server address and app context path on the server
    # for apps deployed to azure, use https://your-sub-domain.azurewebsites.net
    app.homePage=https://<your-app-name>.azurewebsites.net
    
  2. Bu dosyayı kaydettikten sonra uygulamanızı yeniden derlemek için aşağıdaki komutu kullanın:

    mvn clean package
    

Microsoft Entra ID uygulama kaydınızı güncelleştirme

Yeniden yönlendirme URI'si dağıtılan uygulamanızda Azure App Service'e değiştiğinden, Microsoft Entra Id uygulama kaydınızda yeniden yönlendirme URI'sini de değiştirmeniz gerekir. Bu değişikliği yapmak için aşağıdaki adımları kullanın:

  1. Geliştiriciler için Microsoft kimlik platformunun Uygulama Kayıtları sayfasına gidin.

  2. Uygulama kaydınızı aramak için arama kutusunu kullanın; örneğin, java-servlet-webapp-authentication.

  3. Adını seçerek uygulama kaydınızı açın.

  4. Menüden Kimlik Doğrulaması seçin.

  5. Web - Yönlendirme URI'leri bölümünde URI ekleseçin.

  6. Uygulamanızın URI'sini doldurun ve /auth/redirect (örneğin, https://<your-app-name>.azurewebsites.net/auth/redirect) yazın.

  7. Kaydetöğesini seçin.

Uygulamayı dağıt

Artık uygulamanızı Azure App Service'e dağıtmaya hazırsınız. Dağıtımı yürütmek üzere Azure ortamınızda oturum açtığınızdan emin olmak için aşağıdaki komutu kullanın:

az login

pom.xml dosyanızda tüm yapılandırma hazır olduğunda, java uygulamanızı Azure'a dağıtmak için aşağıdaki komutu kullanabilirsiniz:

mvn package azure-webapp:deploy

Dağıtım tamamlandıktan sonra uygulamanız http://<your-app-name>.azurewebsites.net/konumunda hazırdır. msal4j-servlet-auth uygulamasının başlangıç sayfasını görmeniz gereken yerel web tarayıcınızla URL'yi açın.

Gizli değerleri kaldır

Uygulamanın authentication.properties dosyası şu anda aad.secret parametresinde istemci sırrınızın değerini barındırıyor. Bu değeri bu dosyada tutmak iyi bir uygulama değildir. Bunu bir Git deposuna işliyorsanız da risk alıyor olabilirsiniz.

Ek bir güvenlik adımı olarak, bu değeri Azure Key Vault içinde depolayabilir ve uygulamanızda kullanılabilir hale getirmek için Key Vault Referansları kullanabilirsiniz.

aad.secret değerini Key Vault'a taşımak ve kodunuzda kullanmak için aşağıdaki adımları kullanın:

  1. Azure Key Vault örneği oluşturmak için aşağıdaki komutları kullanın:

    export RESOURCE_GROUP=<your-resource-group-name>
    export KEY_VAULT=<your-key-vault-name>
    az keyvault create \
        --resource-group $RESOURCE_GROUP \
        --name $KEY_VAULT
    
  2. anahtar kasanıza aad.secret gizli değerini yeni bir gizli değer olarak eklemek için aşağıdaki komutları kullanın:

    az keyvault secret set \
        --vault-name $KEY_VAULT \
        --name "AADSECRET" \
        --value "<the-value-of-your-client-secret>"
    
  3. Şimdi uygulamanıza anahtar kasanıza erişim vermeniz gerekir. Bu görevi yapmak için önce aşağıdaki komutları kullanarak uygulamanız için yeni bir kimlik oluşturun:

    export WEB_APP_NAME=<your-web-app-name>
    az webapp identity assign \
        --resource-group $RESOURCE_GROUP \
        --name $WEB_APP_NAME
    
  4. Bu kimliğe Key Vault'unuzdaki sırlar üzerinde get ve list iznini vermek için aşağıdaki komutları kullanın:

    export IDENTITY=$(az webapp identity show \
        --resource-group $RESOURCE_GROUP \
        --name $WEB_APP_NAME \
        --query principalId \
        --output tsv)
    az keyvault set-policy \
        --resource-group $RESOURCE_GROUP \
        --name $KEY_VAULT \
        --secret-permissions get list \
        --object-id $IDENTITY
    
  5. Uygulamanızda, anahtar kasanızdaki sır için bir anahtar kasası referansı kullanan bir uygulama ayarı oluşturmak amacıyla aşağıdaki komutu kullanın. Bu ayar, gizli dizinin değerini uygulamanızda ortam değişkeni olarak kullanılabilir hale getirir.

    az webapp config appsettings set \
        --resource-group $RESOURCE_GROUP \
        --name $WEB_APP_NAME \
        --settings AADSECRET='@Microsoft.KeyVault(VaultName=$KEY_VAULT;SecretName=AADSECRET)'
    
  6. Bu değeri ortam değişkenlerinden yüklemek için aşağıdaki kodu kullanın. \src\main\java\com\microsoft\azuresamples\msal4j\helpers\Config.java dosyasında, 41. satırdaki mevcut deyimi şu satırla değiştirin:

    public static final String SECRET = System.getenv("AADSECRET");
    
  7. Artık aad.secret anahtarını ve değerini authentication.properties dosyasından silebilirsiniz.

  8. Aşağıdaki komutu kullanarak kodu yeniden oluşturun:

    mvn clean package
    
  9. Aşağıdaki komutu kullanarak uygulamayı yeniden dağıtın:

    mvn package azure-webapp:deploy
    

Dağıtımınız tamamlandı.

Daha fazla bilgi