Aracılığıyla paylaş


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

Bu makalede, Microsoft Entra hesabıyla Azure App Service'te oturum açma ile bir JBoss EAP 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 işlemi, Azure CLI'dan azure kimlik bilgilerinizi otomatik olarak 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 yanında gösterilen Maven komutunu çalıştırın. Bu komut 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.12.0:config
    
  2. Yeni bir çalıştırma yapılandırması oluşturiçin, Ytuşuna basın, ardından Entertuşuna basın.

  3. İşletim sistemiiçin değer tanımla için Linux için 2 basın ve ardından Enterbasın.

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

  5. WebContaineriçin değerini tanımlamak için, JBosseap7 için 1 tuşuna basın, ardından Entertuşuna basın.

  6. pricingTieriçin değeri tanımlamak üzere , varsayılan P1v3 katmanını seçmek için Enter tuşuna basın.

  7. Onaylamak için, Ytuşuna basın, ardından Entertuşuna basın.

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

Please confirm webapp properties
AppName : msal4j-servlet-auth-1707220080695
ResourceGroup : msal4j-servlet-auth-1707220080695-rg
Region : centralus
PricingTier : P1v3
OS : Linux
Java Version: Java 11
Web server stack: JBosseap 7
Deploy to slot : false
Confirm (Y/N) [Y]:
[INFO] Saving configuration to pom.
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  26.196 s
[INFO] Finished at: 2024-02-06T11:48:16Z
[INFO] ------------------------------------------------------------------------

Seçimlerinizi onayladıktan sonra eklenti, uygulamanızı Azure App Service'te çalışacak şekilde yapılandırmak için eklenti yapılandırmasını ve gerekli ayarları 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ı pom.xml'de doğrudan değiştirebilirsiniz. Bazı yaygın yapılandırmalar aşağıdaki tabloda listelenmiştir:

Mülk Gerekli Açıklama Sürüm
schemaVersion yanlış Yapılandırma şemasının sürümü. Desteklenen değerler v1 ve v2. 1.5.2
subscriptionId yanlış Abonelik kimliği. 0.1.0+
resourceGroup doğru Uygulamanızın Azure kaynak grubu. 0.1.0+
appName doğru Uygulamanızın adı. 0.1.0+
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. 0.1.0+
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 bkz. App Servis Fiyatlandırması 0.1.0+
runtime yanlış Çalışma ortamı yapılandırması. Daha fazla bilgi için bkz. Yapılandırma Ayrıntıları. 0.1.0+
deployment yanlış Dağıtım yapılandırması. Daha fazla bilgi için bkz. Yapılandırma Ayrıntıları. 0.1.0+

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 platformu 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ğrulama seçin.

  5. WebYö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ın

Uygulamanın authentication.properties dosyası, halihazırda 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.

İlave bir güvenlik adımı olarak, bu değeri Azure Key Vault içine depolayabilir ve uygulamanızda kullanılabilir hale getirmek için Key Vault Başvurularını 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 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 izni 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 gizli bilgiler üzerinde get ve list'e izin 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 kasasındaki gizliye yönelik bir anahtar kasası referansı kullanan bir uygulama ayarı oluşturmak için 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 ifadeyi aşağıdaki 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