Azure Uygulaması Hizmeti için Java uygulaması yapılandırma

Not

Spring uygulamaları için Azure Spring Apps kullanmanızı öneririz. Ancak, Azure Uygulaması Hizmetini hedef olarak kullanmaya devam edebilirsiniz. Öneri için bkz . Java İş Yükü Hedef Kılavuzu .

Azure Uygulaması Hizmeti, Java geliştiricilerinin Java SE, Tomcat ve JBoss EAP web uygulamalarını tam olarak yönetilen bir hizmette hızla oluşturmasına, dağıtmasına ve ölçeklendirmesine olanak tanır. Maven eklentileriyle, komut satırından veya IntelliJ, Eclipse veya Visual Studio Code gibi düzenleyicilerde uygulamaları dağıtın.

Bu kılavuz, App Service kullanan Java geliştiricileri için önemli kavramlar ve yönergeler sağlar. Azure Uygulaması Hizmeti'ni hiç kullanmadıysanız önce Java hızlı başlangıcını okumanız gerekir. Java geliştirmeye özgü olmayan App Service'i kullanma hakkındaki genel sorular App Service SSS bölümünde yanıtlandırılır.

Java sürümünü göster

Geçerli Java sürümünü göstermek için Cloud Shell'de aşağıdaki komutu çalıştırın:

az webapp config show --name <app-name> --resource-group <resource-group-name> --query "[javaVersion, javaContainer, javaContainerVersion]"

Desteklenen tüm Java sürümlerini göstermek için Cloud Shell'de aşağıdaki komutu çalıştırın:

az webapp list-runtimes --os windows | grep java

Geçerli Java sürümünü göstermek için Cloud Shell'de aşağıdaki komutu çalıştırın:

az webapp config show --resource-group <resource-group-name> --name <app-name> --query linuxFxVersion

Desteklenen tüm Java sürümlerini göstermek için Cloud Shell'de aşağıdaki komutu çalıştırın:

az webapp list-runtimes --os linux | grep "JAVA\|TOMCAT\|JBOSSEAP"

Sürüm desteği hakkında daha fazla bilgi için bkz . App Service dil çalışma zamanı destek ilkesi.

Uygulamanızı dağıtma

Build Tools

Maven

Azure Web Apps için Maven Eklentisi ile Maven Java projenizi proje kökünde tek bir komutla Azure Web App için kolayca hazırlayabilirsiniz:

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

Bu komut, mevcut bir azure-webapp-maven-plugin Azure Web App'i seçmenizi veya yeni bir uygulama oluşturmanızı isteyip istemediğinizi sorarak bir eklenti ve ilgili yapılandırma ekler. Ardından aşağıdaki komutu kullanarak Java uygulamanızı Azure'a dağıtabilirsiniz:

mvn package azure-webapp:deploy

aşağıda içinde örnek bir yapılandırma verilmişti pom.xml:

<plugin> 
  <groupId>com.microsoft.azure</groupId>  
  <artifactId>azure-webapp-maven-plugin</artifactId>  
  <version>2.11.0</version>  
  <configuration>
    <subscriptionId>111111-11111-11111-1111111</subscriptionId>
    <resourceGroup>spring-boot-xxxxxxxxxx-rg</resourceGroup>
    <appName>spring-boot-xxxxxxxxxx</appName>
    <pricingTier>B2</pricingTier>
    <region>westus</region>
    <runtime>
      <os>Linux</os>      
      <webContainer>Java SE</webContainer>
      <javaVersion>Java 11</javaVersion>
    </runtime>
    <deployment>
      <resources>
        <resource>
          <type>jar</type>
          <directory>${project.basedir}/target</directory>
          <includes>
            <include>*.jar</include>
          </includes>
        </resource>
      </resources>
    </deployment>
  </configuration>
</plugin> 

Gradle

  1. eklentisini öğesine build.gradleekleyerek Azure Web Apps için Gradle Eklentisini ayarlayın:

    plugins {
      id "com.microsoft.azure.azurewebapp" version "1.7.1"
    }
    
  2. Web uygulamanızın ayrıntılarını yapılandırın. İlgili Azure kaynakları yoksa oluşturulur. Aşağıda örnek bir yapılandırma verilmiştir. Ayrıntılar için bu belgeye bakın.

    azurewebapp {
        subscription = '<your subscription id>'
        resourceGroup = '<your resource group>'
        appName = '<your app name>'
        pricingTier = '<price tier like 'P1v2'>'
        region = '<region like 'westus'>'
        runtime {
          os = 'Linux'
          webContainer = 'Tomcat 9.0' // or 'Java SE' if you want to run an executable jar
          javaVersion = 'Java 8'
        }
        appSettings {
            <key> = <value>
        }
        auth {
            type = 'azure_cli' // support azure_cli, oauth2, device_code and service_principal
        }
    }
    
  3. Tek bir komutla dağıtın.

    gradle azureWebAppDeploy
    

IDE

Azure, popüler Java IDE'lerinde aşağıdakiler dahil olmak üzere sorunsuz Java App Service geliştirme deneyimi sağlar:

Kudu API'si

Java SE

Java SE'ye .jar dosyaları dağıtmak için Kudu sitesinin uç noktasını kullanın /api/publish/ . Bu API hakkında daha fazla bilgi için bu belgelere bakın.

Not

Uygulamanızı tanımlamak ve çalıştırmak için app Service için .jar uygulamanızın adı app.jar olmalıdır. Maven eklentisi bunu dağıtım sırasında sizin için otomatik olarak yapar. JAR'ınızı app.jar olarak yeniden adlandırmak istemiyorsanız, .jar uygulamanızı çalıştırmak için komutuyla bir kabuk betiği yükleyebilirsiniz. Bu betiğin mutlak yolunu portalın Yapılandırma bölümündeki Başlangıç Dosyası metin kutusuna yapıştırın. Başlangıç betiği, yerleştirildiği dizinden çalışmaz. Bu nedenle başlatma dizenizde her zaman başvuru dosyalarının mutlak yollarını kullanın (örneğin: java -jar /home/myapp/myapp.jar).

Tomcat

.war dosyalarını Tomcat'e dağıtmak için uç noktayı kullanarak /api/wardeploy/ arşiv dosyanızı POST yapın. Bu API hakkında daha fazla bilgi için bu belgelere bakın.

JBoss EAP

.war dosyalarını JBoss'a dağıtmak için uç noktayı kullanarak /api/wardeploy/ arşiv dosyanızı POST yapın. Bu API hakkında daha fazla bilgi için bu belgelere bakın.

.ear dosyalarını dağıtmak için FTP kullanın. .ear uygulamanız, uygulamanızın yapılandırmasında tanımlanan bağlam köküne dağıtılır. Örneğin, uygulamanızın bağlam kökü ise <context-root>myapp</context-root>, şu yolda /myapp siteye göz atabilirsiniz: http://my-app-name.azurewebsites.net/myapp. Web uygulamanızın kök yolda hizmet vermesini istiyorsanız, uygulamanızın bağlam kökünü kök yola ayarladığınızdan emin olun: <context-root>/</context-root>. Daha fazla bilgi için bkz . Web uygulamasının bağlam kökünü ayarlama.

FTP kullanarak .war veya .jar dağıtmayın. FTP aracı başlangıç betiklerini, bağımlılıkları veya diğer çalışma zamanı dosyalarını karşıya yüklemek için tasarlanmıştır. Web uygulamalarını dağıtmak için en uygun seçenek bu değildir.

Uygulamaları günlüğe kaydetme ve hata ayıklama

Azure portalı üzerinden her uygulama için performans raporları, trafik görselleştirmeleri ve sistem durumu denetimleri kullanılabilir. Daha fazla bilgi için bkz. Azure Uygulaması Hizmet tanılamalarına genel bakış.

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.

Kapsayıcının içinden oluşturulan konsol günlüklerine erişebilirsiniz.

İlk olarak, aşağıdaki komutu çalıştırarak kapsayıcı günlüğünü açın:

az webapp log config --name <app-name> --resource-group <resource-group-name> --docker-container-logging filesystem

ve <resource-group-name> öğesini web uygulamanız için uygun adlarla değiştirin<app-name>.

Kapsayıcı günlüğü açıldıktan sonra günlük akışını görmek için aşağıdaki komutu çalıştırın:

az webapp log tail --name <app-name> --resource-group <resource-group-name>

Konsol günlüklerini hemen görmüyorsanız, 30 saniye içinde yeniden kontrol edin.

Günlük akışını istediğiniz zaman durdurmak için Ctrl+C yazın.

Günlük dosyalarını tarayıcıdan https://<app-name>.scm.azurewebsites.net/api/logs/dockerda inceleyebilirsiniz.

Daha fazla bilgi için bkz . Cloud Shell'de akış günlükleri.

SSH konsol erişimi

Kapsayıcınızda doğrudan SSH oturumu başlatabilmek için uygulamanızın çalışıyor olması gerekir.

Aşağıdaki URL'yi tarayıcınıza yapıştırın ve <app-name> yerine kendi uygulamanızın adını yazın:

https://<app-name>.scm.azurewebsites.net/webssh/host

Kimlik doğrulamasından geçmediyseniz bağlantıyı kurabilmek için Azure aboneliğinizle kimliğinizi doğrulamanız gerekir. Kimliğiniz doğrulandıktan sonra kapsayıcınızda komut çalıştırmak için kullanabileceğiniz tarayıcı içi kabuk ortamını görürsünüz.

SSH bağlantısı

Not

/home dizininin dışında yaptığınız değişiklikler kapsayıcıda depolanır ve uygulama yeniden başlatıldığında kalıcı olmaz.

Yerel makinenizden uzak SSH oturumu açmak için bkz. Uzak kabuktan SSH oturumu açma.

Sorun giderme araçları

Yerleşik Java görüntüleri Alpine Linux işletim sistemini temel alır. apk Sorun giderme araçlarını veya komutlarını yüklemek için paket yöneticisini kullanın.

Java Profil Oluşturucu

Azure Uygulaması Hizmetindeki tüm Java çalışma zamanları, Java iş yüklerinin profilini oluşturmak için JDK Flight Recorder ile birlikte gelir. Bunu kullanarak JVM, sistem ve uygulama olaylarını kaydedebilir ve uygulamalarınızdaki sorunları giderebilirsiniz.

Java Profiler hakkında daha fazla bilgi edinmek için Azure Uygulaması Analizler belgelerini ziyaret edin.

Uçuş Kaydedicisi

App Service'te tüm Java çalışma zamanları Java Flight Recorder ile birlikte gelir. Bunu kullanarak JVM, sistem ve uygulama olaylarını kaydedebilir ve Java uygulamalarınızdaki sorunları giderebilirsiniz.

Zamanlanmış Kayıt

Zamanlanmış kayıt almak için Java uygulamasının PID'sine (İşlem Kimliği) ihtiyacınız vardır. PID'yi bulmak için adresinde web uygulamanızın SCM sitesine https://<your-site-name>.scm.azurewebsites.net/ProcessExplorer/bir tarayıcı açın. Bu sayfada web uygulamanızda çalışan işlemler gösterilir. Tabloda "java" adlı işlemi bulun ve karşılık gelen PID'yi (İşlem Kimliği) kopyalayın.

Ardından, SCM sitesinin üst araç çubuğunda Hata Ayıklama Konsolu'nu açın ve aşağıdaki komutu çalıştırın. değerini daha önce kopyaladığınız işlem kimliğiyle değiştirin <pid> . Bu komut, Java uygulamanızın 30 saniyelik profil oluşturucu kaydını başlatır ve dizininde C:\home adlı timed_recording_example.jfr bir dosya oluşturur.

jcmd <pid> JFR.start name=TimedRecording settings=profile duration=30s filename="C:\home\timed_recording_example.JFR"

App Service'inize SSH ekleyin ve komutunu çalıştırarak jcmd çalışan tüm Java işlemlerinin listesini görün. Jcmd'nin kendisine ek olarak, Java uygulamanızın bir işlem kimliği numarası (pid) ile çalıştığını görmeniz gerekir.

078990bbcd11:/home# jcmd
Picked up JAVA_TOOL_OPTIONS: -Djava.net.preferIPv4Stack=true
147 sun.tools.jcmd.JCmd
116 /home/site/wwwroot/app.jar

JVM'nin 30 saniyelik kaydını başlatmak için aşağıdaki komutu yürütün. JVM'nin profilini oluşturur ve giriş dizininde jfr_example.jfr adlı bir JFR dosyası oluşturur. (116 değerini Java uygulamanızın pid koduyla değiştirin.)

jcmd 116 JFR.start name=MyRecording settings=profile duration=30s filename="/home/jfr_example.jfr"

30 saniyelik aralık boyunca komutunu çalıştırarak jcmd 116 JFR.checkkaydın gerçekleştiğini doğrulayabilirsiniz. komutu, verilen Java işlemi için tüm kayıtları gösterir.

Sürekli Kayıt

Java uygulamanızın profilini çalışma zamanı performansı üzerinde en az etkiyle sürekli olarak görüntülemek için Java Flight Recorder'ı kullanabilirsiniz. Bunu yapmak için aşağıdaki Azure CLI komutunu çalıştırarak gerekli yapılandırmaya sahip JAVA_OPTS adlı bir Uygulama Ayarı oluşturun. JAVA_OPTS Uygulama Ayarı'nın içeriği, uygulamanız başlatıldığında komuta geçirilir java .

az webapp config appsettings set -g <your_resource_group> -n <your_app_name> --settings JAVA_OPTS=-XX:StartFlightRecording=disk=true,name=continuous_recording,dumponexit=true,maxsize=1024m,maxage=1d

Kayıt başladıktan sonra, komutunu kullanarak istediğiniz zaman geçerli kayıt verilerinin dökümünü JFR.dump alabilirsiniz.

jcmd <pid> JFR.dump name=continuous_recording filename="/home/recording1.jfr"

Dosyaları analiz etme .jfr

JFR dosyanızı yerel makinenize indirmek için FTPS kullanın. JFR dosyasını analiz etmek için Java Mission Control'ü indirip yükleyin. Java Mission Control yönergeleri için JMC belgelerine ve yükleme yönergelerine bakın.

Uygulama günlüğü

Uygulamanızın standart konsol çıkışını ve standart konsol hata akışlarını yerel dosya sistemine veya Azure Blob Depolama yazacak şekilde App Service'i yapılandırmak için Azure portalı veya Azure CLI aracılığıyla uygulama günlüğünü etkinleştirin. Yerel App Service dosya sistemi örneğinde günlüğe kaydetme, yapılandırıldıktan 12 saat sonra devre dışı bırakılır. Daha uzun bekletmeye ihtiyacınız varsa, uygulamayı bir Blob depolama kapsayıcısına çıkış yazacak şekilde yapılandırın. Java ve Tomcat uygulama günlükleriniz /home/LogFiles/Application/ dizininde bulunabilir.

Uygulamanızın standart konsol çıkışını ve standart konsol hata akışlarını yerel dosya sistemine veya Azure Blob Depolama yazacak şekilde App Service'i yapılandırmak için Azure portalı veya Azure CLI aracılığıyla uygulama günlüğünü etkinleştirin. Daha uzun bekletmeye ihtiyacınız varsa, uygulamayı bir Blob depolama kapsayıcısına çıkış yazacak şekilde yapılandırın. Java ve Tomcat uygulama günlükleriniz /home/LogFiles/Application/ dizininde bulunabilir.

Linux tabanlı uygulamalar için Azure Blob Depolama günlüğü yalnızca kullanılarak yapılandırılabilirAzure İzleyici.

Uygulamanız izleme için Logback veya Log4j kullanıyorsa, Application Analizler'da Java izleme günlüklerini keşfetme başlığındaki günlüğe kaydetme çerçevesi yapılandırma yönergelerini kullanarak bu izlemeleri gözden geçirmek üzere Azure Uygulaması lication Analizler iletebilirsiniz.

Not

Bilinen CVE-2021-44228 güvenlik açığı nedeniyle Log4j sürüm 2.16 veya üzerini kullandığınızdan emin olun.

Özelleştirme ve ayarlama

Azure Uygulaması Hizmeti, Azure portalı ve CLI aracılığıyla kullanıma hazır ayarlamayı ve özelleştirmeyi destekler. Java'ya özgü olmayan web uygulaması yapılandırması için aşağıdaki makaleleri gözden geçirin:

Uygulama İçeriğini Yerel Olarak Kopyalama

Uygulama içeriğinizi paylaşılan dosya sisteminden yerel çalışana kopyalamak için uygulama ayarını JAVA_COPY_ALLtrue olarak ayarlayın. Bu ayar, dosya kilitleme sorunlarını gidermeye yardımcı olur.

Java çalışma zamanı seçeneklerini ayarlama

Ayrılmış bellek veya diğer JVM çalışma zamanı seçeneklerini ayarlamak için, seçenekleriyle adlı JAVA_OPTS bir uygulama ayarı oluşturun. App Service bu ayarı java çalışma zamanı başlatıldığında ortam değişkeni olarak geçirir.

Azure portalında, web uygulaması için Uygulama Ayarlar altında Java SE veya CATALINA_OPTS Tomcat için adlı JAVA_OPTS ve gibi -Xms512m -Xmx1204mdiğer ayarları içeren yeni bir uygulama ayarı oluşturun.

Maven eklentisinden uygulama ayarını yapılandırmak için Azure eklentisi bölümüne ayar/değer etiketleri ekleyin. Aşağıdaki örnek belirli bir en düşük ve en yüksek Java yığın boyutunu ayarlar:

<appSettings>
    <property>
        <name>JAVA_OPTS</name>
        <value>-Xms1024m -Xmx1024m</value>
    </property>
</appSettings>

Not

Windows App Service'te Tomcat kullanırken web.config dosyası oluşturmanız gerekmez.

App Service planlarında tek bir dağıtım yuvasına sahip tek bir uygulama çalıştıran geliştiriciler aşağıdaki seçenekleri kullanabilir:

  • B1 ve S1 örnekleri: -Xms1024m -Xmx1024m
  • B2 ve S2 örnekleri: -Xms3072m -Xmx3072m
  • B3 ve S3 örnekleri: -Xms6144m -Xmx6144m
  • P1v2 örnekleri: -Xms3072m -Xmx3072m
  • P2v2 örnekleri: -Xms6144m -Xmx6144m
  • P3v2 örnekleri: -Xms12800m -Xmx12800m
  • P1v3 örnekleri: -Xms6656m -Xmx6656m
  • P2v3 örnekleri: -Xms14848m -Xmx14848m
  • P3v3 örnekleri: -Xms30720m -Xmx30720m
  • I1 örnekleri: -Xms3072m -Xmx3072m
  • I2 örnekleri: -Xms6144m -Xmx6144m
  • I3 örnekleri: -Xms12800m -Xmx12800m
  • I1v2 örnekleri: -Xms6656m -Xmx6656m
  • I2v2 örnekleri: -Xms14848m -Xmx14848m
  • I3v2 örnekleri: -Xms30720m -Xmx30720m

Uygulama yığını ayarlarını ayarlarken App Service planı ayrıntılarınızı gözden geçirin ve bellekte en uygun ayırmayı bulmak için birden çok uygulama ve dağıtım yuvası gerektiğini göz önünde bulundurun.

Web yuvalarını açma

Azure portalında web yuvaları desteğini uygulamanın Uygulama ayarları bölümünden açın. Ayarın geçerli olması için uygulamayı yeniden başlatmanız gerekir.

Aşağıdaki komutla Azure CLI kullanarak web yuvası desteğini açın:

az webapp config set --name <app-name> --resource-group <resource-group-name> --web-sockets-enabled true

Ardından uygulamanızı yeniden başlatın:

az webapp stop --name <app-name> --resource-group <resource-group-name>
az webapp start --name <app-name> --resource-group <resource-group-name>

Varsayılan karakter kodlamayı ayarlama

Azure portalında, web uygulaması için Uygulama Ayarlar altında değeriyle -Dfile.encoding=UTF-8adlı JAVA_OPTS yeni bir uygulama ayarı oluşturun.

Alternatif olarak, App Service Maven eklentisini kullanarak uygulama ayarını yapılandırabilirsiniz. Eklenti yapılandırmasına ayar adını ve değer etiketlerini ekleyin:

<appSettings>
    <property>
        <name>JAVA_OPTS</name>
        <value>-Dfile.encoding=UTF-8</value>
    </property>
</appSettings>

JSP dosyalarını önceden derleme

Tomcat uygulamalarının performansını geliştirmek için, App Service'e dağıtmadan önce JSP dosyalarınızı derleyebilirsiniz. Apache Sling tarafından sağlanan Maven eklentisini veya bu Ant derleme dosyasını kullanabilirsiniz.

Uygulamaları güvenli hale getirme

App Service'te çalışan Java uygulamaları, diğer uygulamalarla aynı güvenlik en iyi yöntemleri kümesine sahiptir.

Kullanıcıların kimliğini doğrulama (Kolay Kimlik Doğrulaması)

Azure portalında Kimlik Doğrulaması ve Yetkilendirme seçeneğiyle uygulama kimlik doğrulamasını ayarlayın. Buradan Microsoft Entra ID veya Facebook, Google veya GitHub gibi sosyal oturum açma bilgilerini kullanarak kimlik doğrulamasını etkinleştirebilirsiniz. Azure portal yapılandırması yalnızca tek bir kimlik doğrulama sağlayıcısı yapılandırırken çalışır. Daha fazla bilgi için bkz . App Service uygulamanızı Microsoft Entra oturum açma özelliğini kullanacak şekilde yapılandırma ve diğer kimlik sağlayıcıları için ilgili makaleler. Birden çok oturum açma sağlayıcısını etkinleştirmeniz gerekiyorsa, Oturum açma ve oturum kapatmaları özelleştirme başlığındaki yönergeleri izleyin.

Java SE

Spring Boot geliştiricileri, tanıdık Spring Security ek açıklamalarını ve API'lerini kullanarak uygulamaların güvenliğini sağlamak için Microsoft Entra Spring Boot başlatıcısını kullanabilir. application.properties dosyanızda üst bilgi boyutunun üst bilgi üst bilgisinin üst bilgi boyutunu artırtığınızdan emin olun. değerini 16384öneririz.

Tomcat

Tomcat uygulamanız, Principal nesnesini bir Map nesnesine dönüştürerek kullanıcının taleplerine doğrudan servlet'ten erişebilir. nesnesi, Map her talep türünü bu tür için bir talep koleksiyonuyla eşler. Aşağıdaki kod örneğinde örneği request verilmiştir HttpServletRequest.

Map<String, Collection<String>> map = (Map<String, Collection<String>>) request.getUserPrincipal();

Artık nesneyi belirli bir talep için inceleyebilirsiniz Map . Örneğin, aşağıdaki kod parçacığı tüm talep türlerinde yinelenir ve her koleksiyonun içeriğini yazdırır.

for (Object key : map.keySet()) {
        Object value = map.get(key);
        if (value != null && value instanceof Collection {
            Collection claims = (Collection) value;
            for (Object claim : claims) {
                System.out.println(claims);
            }
        }
    }

Kullanıcıları oturumu kapatmak için yolunu kullanın /.auth/ext/logout . Diğer eylemleri gerçekleştirmek için Oturum açma ve oturum kapatma işlemlerini özelleştirme belgelerine bakın. Tomcat HttpServletRequest arabirimi ve yöntemleriyle ilgili resmi belgeler de vardır. Aşağıdaki servlet yöntemleri de App Service yapılandırmanıza göre nemlenir:

public boolean isSecure()
public String getRemoteAddr()
public String getRemoteHost()
public String getScheme()
public int getServerPort()

Bu özelliği devre dışı bırakmak için değerine 1sahip adlı WEBSITE_AUTH_SKIP_PRINCIPAL bir Uygulama Ayarı oluşturun. App Service tarafından eklenen tüm servlet filtrelerini devre dışı bırakmak için değerine 1sahip adlı WEBSITE_SKIP_FILTERS bir ayar oluşturun.

TLS/SSL'yi yapılandırma

Var olan bir TLS/SSL sertifikasını karşıya yüklemek ve uygulamanızın etki alanı adına bağlamak için, Azure Uygulaması Hizmeti'nde BIR TLS/SSL bağlaması ile özel dns adı güvenliğini sağlama başlığı altında yer alan yönergeleri izleyin. Uygulamayı TLS/SSL'yi zorunlu kacak şekilde de yapılandırabilirsiniz.

KeyVault Başvurularını Kullanma

Azure KeyVault , erişim ilkeleri ve denetim geçmişi ile merkezi gizli dizi yönetimi sağlar. Gizli dizileri (parolalar veya bağlantı dizesi gibi) KeyVault'ta depolayabilir ve bu gizli dizilere uygulamanızda ortam değişkenleri aracılığıyla erişebilirsiniz.

İlk olarak, uygulamanıza bir anahtar kasasına erişim verme ve Uygulama Ayarında gizli dizinize KeyVault başvurusu yapma yönergelerini izleyin. App Service terminaline uzaktan erişirken ortam değişkenini yazdırarak başvurunun gizli diziye çözümlendiğini doğrulayabilirsiniz.

Bu gizli dizileri Spring veya Tomcat yapılandırma dosyanıza eklemek için ortam değişkeni ekleme söz dizimini (${MY_ENV_VAR}) kullanın. Spring yapılandırma dosyaları için harici yapılandırmalarla ilgili bu belgelere bakın.

Java Key Store'u kullanma

Varsayılan olarak, App Service Linux'a yüklenen tüm genel veya özel sertifikalar kapsayıcı başlatılırken ilgili Java Anahtar Depolarına yüklenir. Sertifikanızı karşıya yükledikten sonra, Java Anahtar Deposu'na yüklenmesi için App Service'inizi yeniden başlatmanız gerekir. Ortak sertifikalar konumunda $JRE_HOME/lib/security/cacertsanahtar deposuna yüklenir ve özel sertifikalar içinde $JRE_HOME/lib/security/client.jksdepolanır.

JDBC bağlantınızı Java Anahtar Deposu'ndaki sertifikalarla şifrelemek için daha fazla yapılandırma gerekebilir. Seçtiğiniz JDBC sürücüsünün belgelerine bakın.

Java Key Store'u başlatma

Nesnesini başlatmak import java.security.KeyStore için keystore dosyasını parolayla yükleyin. Her iki anahtar deposu için de varsayılan parola şeklindedir changeit.

KeyStore keyStore = KeyStore.getInstance("jks");
keyStore.load(
    new FileInputStream(System.getenv("JRE_HOME")+"/lib/security/cacerts"),
    "changeit".toCharArray());

KeyStore keyStore = KeyStore.getInstance("pkcs12");
keyStore.load(
    new FileInputStream(System.getenv("JRE_HOME")+"/lib/security/client.jks"),
    "changeit".toCharArray());

Anahtar depoyu el ile yükleme

Sertifikaları anahtar deposuna el ile yükleyebilirsiniz. App Service'in 1 sertifikaları otomatik olarak anahtar deposuna yüklemesini devre dışı bırakmak için değerine sahip bir uygulama ayarı SKIP_JAVA_KEYSTORE_LOADoluşturun. Azure portalı aracılığıyla App Service'e yüklenen tüm genel sertifikalar altında /var/ssl/certs/depolanır. Özel sertifikalar altında /var/ssl/private/depolanır.

App Service'inize bir SSH bağlantısı açıp komutunu keytoolçalıştırarak Java Anahtar Aracı ile etkileşimde bulunabilir veya hatalarını ayıklayabilirsiniz. Komutların listesi için Anahtar Aracı belgelerine bakın. KeyStore API'si hakkında daha fazla bilgi için resmi belgelere bakın.

APM platformlarını yapılandırma

Bu bölümde Azure Uygulaması Hizmetinde dağıtılan Java uygulamalarının Azure İzleyici Uygulama Analizler, NewRelic ve AppDynamics uygulama performansı izleme (APM) platformlarına nasıl bağlanılacağı gösterilmektedir.

Application Insights'ı Yapılandırma

Azure İzleyici Uygulaması Analizler, müşterilerin uygulama performansını geliştirmek ve ortalama çözüm süresini (MTTR) azaltmak için hataları, performans sorunlarını ve kullanım düzenlerini gözlemlemesini sağlayan bir bulutta yerel uygulama izleme hizmetidir. Birkaç tıklama veya CLI komutuyla Node.js veya Java uygulamalarınız için izlemeyi etkinleştirebilir, günlükleri, ölçümleri ve dağıtılmış izlemeleri otomatik olarak toplayarak uygulamanıza SDK ekleme gereksinimini ortadan kaldırabilirsiniz. Aracıyı yapılandırmaya yönelik kullanılabilir uygulama ayarları hakkında daha fazla bilgi için Uygulama Analizler belgelerine bakın.

Azure portal

Azure portalından Uygulama Analizler etkinleştirmek için sol taraftaki menüden Uygulama Analizler'ne gidin ve Uygulama Analizler aç'ı seçin. Varsayılan olarak, web uygulamanızla aynı ada sahip yeni bir application insights kaynağı kullanılır. Mevcut bir application insights kaynağını kullanmayı veya adı değiştirmeyi seçebilirsiniz. Alttaki Uygula'yı seçin.

Azure CLI

Azure CLI aracılığıyla etkinleştirmek için bir Uygulama Analizler kaynağı oluşturmanız ve Uygulama Analizler web uygulamanıza bağlamak için Azure portalında birkaç uygulama ayarı ayarlamanız gerekir.

  1. Uygulamalar Analizler uzantısını etkinleştirme

    az extension add -n application-insights
    
  2. Aşağıdaki CLI komutunu kullanarak bir Application Analizler kaynağı oluşturun. Yer tutucuları istediğiniz kaynak adı ve grubuyla değiştirin.

    az monitor app-insights component create --app <resource-name> -g <resource-group> --location westus2  --kind web --application-type web
    

    ve instrumentationKeydeğerlerini connectionString not edin. Sonraki adımda bu değerlere ihtiyacınız olacaktır.

    Diğer konumların listesini almak için komutunu çalıştırın az account list-locations.

  1. İzleme anahtarını, bağlantı dizesi ve izleme aracısı sürümünü web uygulamasında uygulama ayarları olarak ayarlayın. ve <connectionString> değerlerini önceki adımdaki değerlerle değiştirin<instrumentationKey>.

    az webapp config appsettings set -n <webapp-name> -g <resource-group> --settings "APPINSIGHTS_INSTRUMENTATIONKEY=<instrumentationKey>" "APPLICATIONINSIGHTS_CONNECTION_STRING=<connectionString>" "ApplicationInsightsAgent_EXTENSION_VERSION=~3" "XDT_MicrosoftApplicationInsights_Mode=default" "XDT_MicrosoftApplicationInsights_Java=1"
    
  1. İzleme anahtarını, bağlantı dizesi ve izleme aracısı sürümünü web uygulamasında uygulama ayarları olarak ayarlayın. ve <connectionString> değerlerini önceki adımdaki değerlerle değiştirin<instrumentationKey>.

    az webapp config appsettings set -n <webapp-name> -g <resource-group> --settings "APPINSIGHTS_INSTRUMENTATIONKEY=<instrumentationKey>" "APPLICATIONINSIGHTS_CONNECTION_STRING=<connectionString>" "ApplicationInsightsAgent_EXTENSION_VERSION=~3" "XDT_MicrosoftApplicationInsights_Mode=default"
    

Yeni Relic'i Yapılandırma

  1. NewRelic.com'de NewRelic hesabı oluşturma

  2. NewRelic'ten Java aracısını indirin. newrelic-java-x.x.x.zip benzer bir dosya adına sahiptir.

  3. Lisans anahtarınızı kopyalayın, aracıyı daha sonra yapılandırmak için bu anahtara ihtiyacınız vardır.

  4. App Service örneğinize SSH girin ve yeni bir dizin oluşturun /home/site/wwwroot/apm.

  5. Paketlenmemiş NewRelic Java aracı dosyalarını /home/site/wwwroot/apm altındaki bir dizine yükleyin. Aracınızın dosyaları /home/site/wwwroot/apm/newrelic konumunda olmalıdır.

  6. /home/site/wwwroot/apm/newrelic/newrelic.yml adresinde YAML dosyasını değiştirin ve yer tutucu lisans değerini kendi lisans anahtarınızla değiştirin.

  7. Azure portalında App Service'te uygulamanıza göz atın ve yeni bir Uygulama Ayarı oluşturun.

    • Java SE uygulamaları için değeriyle -javaagent:/home/site/wwwroot/apm/newrelic/newrelic.jaradlı JAVA_OPTS bir ortam değişkeni oluşturun.
    • Tomcat için değeriyle -javaagent:/home/site/wwwroot/apm/newrelic/newrelic.jaradlı CATALINA_OPTS bir ortam değişkeni oluşturun.
  1. NewRelic.com'de NewRelic hesabı oluşturma

  2. NewRelic'ten Java aracısını indirin. newrelic-java-x.x.x.zip benzer bir dosya adına sahiptir.

  3. Lisans anahtarınızı kopyalayın, aracıyı daha sonra yapılandırmak için buna ihtiyacınız olacak.

  4. App Service örneğinize SSH girin ve yeni bir dizin oluşturun /home/site/wwwroot/apm.

  5. Paketlenmemiş NewRelic Java aracı dosyalarını /home/site/wwwroot/apm altındaki bir dizine yükleyin. Aracınızın dosyaları /home/site/wwwroot/apm/newrelic konumunda olmalıdır.

  6. /home/site/wwwroot/apm/newrelic/newrelic.yml adresinde YAML dosyasını değiştirin ve yer tutucu lisans değerini kendi lisans anahtarınızla değiştirin.

  7. Azure portalında App Service'te uygulamanıza göz atın ve yeni bir Uygulama Ayarı oluşturun.

    • Java SE uygulamaları için değeriyle -javaagent:/home/site/wwwroot/apm/newrelic/newrelic.jaradlı JAVA_OPTS bir ortam değişkeni oluşturun.
    • Tomcat için değeriyle -javaagent:/home/site/wwwroot/apm/newrelic/newrelic.jaradlı CATALINA_OPTS bir ortam değişkeni oluşturun.

veya CATALINA_OPTSiçin JAVA_OPTS zaten bir ortam değişkeniniz varsa, seçeneği geçerli değerin sonuna ekler-javaagent:/....

AppDynamics'i yapılandırma

  1. AppDynamics.com'de AppDynamics hesabı oluşturma

  2. AppDynamics web sitesinden Java aracısını indirin. Dosya adı AppServerAgent-x.x.x.xxxxx.zip benzer

  3. Kudu konsolunu kullanarak yeni bir dizin /home/site/wwwroot/apm oluşturun.

  4. Java aracı dosyalarını /home/site/wwwroot/apm altındaki bir dizine yükleyin. Aracınızın dosyaları /home/site/wwwroot/apm/appdynamics içinde olmalıdır.

  5. Azure portalında App Service'te uygulamanıza göz atın ve yeni bir Uygulama Ayarı oluşturun.

    • Java SE uygulamaları için, App Service adınız olan <app-name> değeriyle -javaagent:/home/site/wwwroot/apm/appdynamics/javaagent.jar -Dappdynamics.agent.applicationName=<app-name> adlı JAVA_OPTS bir ortam değişkeni oluşturun.
    • Tomcat uygulamaları için, App Service adınız olan <app-name> değeriyle -javaagent:/home/site/wwwroot/apm/appdynamics/javaagent.jar -Dappdynamics.agent.applicationName=<app-name> adlı CATALINA_OPTS bir ortam değişkeni oluşturun.
  1. AppDynamics.com'de AppDynamics hesabı oluşturma

  2. AppDynamics web sitesinden Java aracısını indirin. Dosya adı AppServerAgent-x.x.x.xxxxx.zip benzer

  3. App Service örneğinize SSH girin ve yeni bir dizin oluşturun /home/site/wwwroot/apm.

  4. Java aracı dosyalarını /home/site/wwwroot/apm altındaki bir dizine yükleyin. Aracınızın dosyaları /home/site/wwwroot/apm/appdynamics içinde olmalıdır.

  5. Azure portalında App Service'te uygulamanıza göz atın ve yeni bir Uygulama Ayarı oluşturun.

    • Java SE uygulamaları için, App Service adınız olan <app-name> değeriyle -javaagent:/home/site/wwwroot/apm/appdynamics/javaagent.jar -Dappdynamics.agent.applicationName=<app-name> adlı JAVA_OPTS bir ortam değişkeni oluşturun.
    • Tomcat uygulamaları için, App Service adınız olan <app-name> değeriyle -javaagent:/home/site/wwwroot/apm/appdynamics/javaagent.jar -Dappdynamics.agent.applicationName=<app-name> adlı CATALINA_OPTS bir ortam değişkeni oluşturun.

Not

veya CATALINA_OPTSiçin JAVA_OPTS zaten bir ortam değişkeniniz varsa, seçeneği geçerli değerin sonuna ekler-javaagent:/....

Veri kaynaklarını yapılandırma

Java SE

Spring Boot uygulamalarında veri kaynaklarına bağlanmak için bağlantı dizesi oluşturmanızı ve bunları application.properties dosyanıza eklemenizi öneririz.

  1. App Service sayfasının "Yapılandırma" bölümünde dize için bir ad ayarlayın, JDBC bağlantı dizesi değer alanına yapıştırın ve türü "Özel" olarak ayarlayın. İsteğe bağlı olarak bu bağlantı dizesi yuva ayarı olarak ayarlayabilirsiniz.

    Bu bağlantı dizesi adlı bir ortam değişkeni CUSTOMCONNSTR_<your-string-name>olarak uygulamamız tarafından erişilebilir. Örneğin, CUSTOMCONNSTR_exampledb.

  2. application.properties dosyanızda bu bağlantı dizesi ortam değişkeni adıyla başvurun. Örneğimiz için aşağıdakileri kullanırız.

    app.datasource.url=${CUSTOMCONNSTR_exampledb}
    

Daha fazla bilgi için veri erişimi ve dışlaştırılmış yapılandırmalarla ilgili Spring Boot belgelerine bakın.

Tomcat

Bu yönergeler tüm veritabanı bağlantıları için geçerlidir. Yer tutucuları seçtiğiniz veritabanının sürücü sınıfı adı ve JAR dosyasıyla doldurmanız gerekir. Sağlanan, yaygın veritabanları için sınıf adlarını ve sürücü indirmelerini içeren bir tablodur.

Veritabanı Sürücü Sınıfı Adı JDBC Sürücüsü
PostgreSQL org.postgresql.Driver Karşıdan Yükle
MySQL com.mysql.jdbc.Driver İndir ("Platformdan Bağımsız" seçeneğini belirleyin)
SQL Server com.microsoft.sqlserver.jdbc.SQLServerDriver Karşıdan Yükle

Tomcat'i Java Veritabanı Bağlan ivity (JDBC) veya Java Kalıcılık API'sini (JPA) kullanacak şekilde yapılandırmak için, ilk olarak başlatma sırasında Tomcat tarafından okunan ortam değişkenini özelleştirinCATALINA_OPTS. App Service Maven eklentisindeki bir uygulama ayarı aracılığıyla bu değerleri ayarlayın:

<appSettings>
    <property>
        <name>CATALINA_OPTS</name>
        <value>"$CATALINA_OPTS -Ddbuser=${DBUSER} -Ddbpassword=${DBPASSWORD} -DconnURL=${CONNURL}"</value>
    </property>
</appSettings>

Alternatif olarak, Azure portalının Yapılandırma>Uygulaması Ayarlar sayfasında ortam değişkenlerini de ayarlayabilirsiniz.

Ardından, veri kaynağının bir uygulamada mı yoksa Tomcat servlet'inde çalışan tüm uygulamalarda mı kullanılabilir olması gerektiğini belirleyin.

Uygulama düzeyinde veri kaynakları

  1. Projenizin META-INF/ dizininde bir context.xml dosyası oluşturun. Yoksa META-INF/ dizini oluşturun.

  2. context.xml'da, veri kaynağını bir Context JNDI adresine bağlamak için bir öğe ekleyin. Yer tutucuyu driverClassName , yukarıdaki tablodan sürücünüzün sınıf adıyla değiştirin.

    <Context>
        <Resource
            name="jdbc/dbconnection"
            type="javax.sql.DataSource"
            url="${connURL}"
            driverClassName="<insert your driver class name>"
            username="${dbuser}"
            password="${dbpassword}"
        />
    </Context>
    
  3. Uygulamanızdaki veri kaynağını kullanmak için uygulamanızın web.xml güncelleştirin.

    <resource-env-ref>
        <resource-env-ref-name>jdbc/dbconnection</resource-env-ref-name>
        <resource-env-ref-type>javax.sql.DataSource</resource-env-ref-type>
    </resource-env-ref>
    

Paylaşılan sunucu düzeyindeki kaynaklar

Windows üzerinde App Service'teki Tomcat yüklemeleri, App Service Planı'ndaki paylaşılan alanda bulunur. Sunucu genelinde yapılandırma için tomcat yüklemesini doğrudan değiştiremezsiniz. Tomcat yüklemenizde sunucu düzeyinde yapılandırma değişiklikleri yapmak için Tomcat'i Tomcat'in yapılandırmasını değiştirebileceğiniz yerel bir klasöre kopyalamanız gerekir.

Uygulama başlangıcında özel Tomcat oluşturmayı otomatikleştirme

Bir web uygulaması başlamadan önce eylem gerçekleştirmek için başlangıç betiği kullanabilirsiniz. Tomcat'i özelleştirmeye yönelik başlangıç betiğinin aşağıdaki adımları tamamlaması gerekir:

  1. Tomcat'in yerel olarak zaten kopyalanıp kopyalanmadığını ve yapılandırılıp yapılandırılmadığını denetleyin. Öyleyse, başlangıç betiği burada sona erebilir.
  2. Tomcat'i yerel olarak kopyalayın.
  3. Gerekli yapılandırma değişikliklerini yapın.
  4. Yapılandırmanın başarıyla tamamlandığını belirtin.

Windows uygulamaları için veya startup.ps1 dizininde wwwroot adlı startup.cmd bir dosya oluşturun. Bu dosya Tomcat sunucusu başlatılmadan önce otomatik olarak çalışır.

Bu adımları tamamlayan bir PowerShell betiği aşağıdadır:

    # Check for marker file indicating that config has already been done
    if(Test-Path "$Env:LOCAL_EXPANDED\tomcat\config_done_marker"){
        return 0
    }

    # Delete previous Tomcat directory if it exists
    # In case previous config isn't completed or a new config should be forcefully installed
    if(Test-Path "$Env:LOCAL_EXPANDED\tomcat"){
        Remove-Item "$Env:LOCAL_EXPANDED\tomcat" --recurse
    }

    # Copy Tomcat to local
    # Using the environment variable $AZURE_TOMCAT90_HOME uses the 'default' version of Tomcat
    Copy-Item -Path "$Env:AZURE_TOMCAT90_HOME\*" -Destination "$Env:LOCAL_EXPANDED\tomcat" -Recurse

    # Perform the required customization of Tomcat
    {... customization ...}

    # Mark that the operation was a success
    New-Item -Path "$Env:LOCAL_EXPANDED\tomcat\config_done_marker" -ItemType File
Dönüştürmeler

Tomcat sürümünü özelleştirmek için yaygın bir kullanım örneği, , context.xmlveya web.xml Tomcat yapılandırma dosyalarını değiştirmektirserver.xml. App Service, platform özellikleri sağlamak için bu dosyaları zaten değiştirir. Bu özellikleri kullanmaya devam etmek için, bu dosyalarda değişiklik yaptığınızda bu dosyaların içeriğini korumak önemlidir. Bunu başarmak için bir XSL dönüşümü (XSLT) kullanmanızı öneririz. Dosyanın özgün içeriğini korurken XML dosyalarında değişiklik yapmak için bir XSL dönüşümü kullanın.

Örnek XSLT dosyası

Bu örnek dönüştürme, öğesine server.xmlyeni bir bağlayıcı düğümü ekler. Dosyanın özgün içeriğini koruyan Kimlik Dönüşümü'ne dikkat edin.

    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="xml" indent="yes"/>

    <!-- Identity transform: this ensures that the original contents of the file are included in the new file -->
    <!-- Ensure that your transform files include this block -->
    <xsl:template match="@* | node()" name="Copy">
      <xsl:copy>
        <xsl:apply-templates select="@* | node()"/>
      </xsl:copy>
    </xsl:template>

    <xsl:template match="@* | node()" mode="insertConnector">
      <xsl:call-template name="Copy" />
    </xsl:template>

    <xsl:template match="comment()[not(../Connector[@scheme = 'https']) and
                                   contains(., '&lt;Connector') and
                                   (contains(., 'scheme=&quot;https&quot;') or
                                    contains(., &quot;scheme='https'&quot;))]">
      <xsl:value-of select="." disable-output-escaping="yes" />
    </xsl:template>

    <xsl:template match="Service[not(Connector[@scheme = 'https'] or
                                     comment()[contains(., '&lt;Connector') and
                                               (contains(., 'scheme=&quot;https&quot;') or
                                                contains(., &quot;scheme='https'&quot;))]
                                    )]
                        ">
      <xsl:copy>
        <xsl:apply-templates select="@* | node()" mode="insertConnector" />
      </xsl:copy>
    </xsl:template>

    <!-- Add the new connector after the last existing Connnector if there's one -->
    <xsl:template match="Connector[last()]" mode="insertConnector">
      <xsl:call-template name="Copy" />

      <xsl:call-template name="AddConnector" />
    </xsl:template>

    <!-- ... or before the first Engine if there's no existing Connector -->
    <xsl:template match="Engine[1][not(preceding-sibling::Connector)]"
                  mode="insertConnector">
      <xsl:call-template name="AddConnector" />

      <xsl:call-template name="Copy" />
    </xsl:template>

    <xsl:template name="AddConnector">
      <!-- Add new line -->
      <xsl:text>&#xa;</xsl:text>
      <!-- This is the new connector -->
      <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true" 
                 maxThreads="150" scheme="https" secure="true" 
                 keystoreFile="${{user.home}}/.keystore" keystorePass="changeit"
                 clientAuth="false" sslProtocol="TLS" />
    </xsl:template>

    </xsl:stylesheet>
XSL dönüşümü işlevi

PowerShell, XSL dönüşümlerini kullanarak XML dosyalarını dönüştürmek için yerleşik araçlara sahiptir. Aşağıdaki betik, içinde dönüşümü gerçekleştirmek için kullanabileceğiniz startup.ps1 örnek bir işlevdir:

    function TransformXML{
        param ($xml, $xsl, $output)

        if (-not $xml -or -not $xsl -or -not $output)
        {
            return 0
        }

        Try
        {
            $xslt_settings = New-Object System.Xml.Xsl.XsltSettings;
            $XmlUrlResolver = New-Object System.Xml.XmlUrlResolver;
            $xslt_settings.EnableScript = 1;

            $xslt = New-Object System.Xml.Xsl.XslCompiledTransform;
            $xslt.Load($xsl,$xslt_settings,$XmlUrlResolver);
            $xslt.Transform($xml, $output);

        }

        Catch
        {
            $ErrorMessage = $_.Exception.Message
            $FailedItem = $_.Exception.ItemName
            Write-Host  'Error'$ErrorMessage':'$FailedItem':' $_.Exception;
            return 0
        }
        return 1
    }
Uygulama ayarları

Platformun ayrıca Özel Tomcat sürümünüzün nerede yüklendiğini bilmesi gerekir. Yüklemenin konumunu uygulama ayarında CATALINA_BASE ayarlayabilirsiniz.

Bu ayarı değiştirmek için Azure CLI'yi kullanabilirsiniz:

    az webapp config appsettings set -g $MyResourceGroup -n $MyUniqueApp --settings CATALINA_BASE="%LOCAL_EXPANDED%\tomcat"

İsterseniz Azure portalında ayarı el ile de değiştirebilirsiniz:

  1. Ayarlar> Yapılandırma>Uygulaması ayarları'na gidin.
  2. Yeni Uygulama Ayarı'nı seçin.
  3. Ayarı oluşturmak için şu değerleri kullanın:
    1. Ad: CATALINA_BASE
    2. Değer: "%LOCAL_EXPANDED%\tomcat"
Örnek startup.ps1

Aşağıdaki örnek betik, özel bir Tomcat'i yerel bir klasöre kopyalar, XSL dönüşümü gerçekleştirir ve dönüşümün başarılı olduğunu gösterir:

    # Locations of xml and xsl files
    $target_xml="$Env:LOCAL_EXPANDED\tomcat\conf\server.xml"
    $target_xsl="$Env:HOME\site\server.xsl"

    # Define the transform function
    # Useful if transforming multiple files
    function TransformXML{
        param ($xml, $xsl, $output)

        if (-not $xml -or -not $xsl -or -not $output)
        {
            return 0
        }

        Try
        {
            $xslt_settings = New-Object System.Xml.Xsl.XsltSettings;
            $XmlUrlResolver = New-Object System.Xml.XmlUrlResolver;
            $xslt_settings.EnableScript = 1;

            $xslt = New-Object System.Xml.Xsl.XslCompiledTransform;
            $xslt.Load($xsl,$xslt_settings,$XmlUrlResolver);
            $xslt.Transform($xml, $output);
        }

        Catch
        {
            $ErrorMessage = $_.Exception.Message
            $FailedItem = $_.Exception.ItemName
            echo  'Error'$ErrorMessage':'$FailedItem':' $_.Exception;
            return 0
        }
        return 1
    }

    $success = TransformXML -xml $target_xml -xsl $target_xsl -output $target_xml

    # Check for marker file indicating that config has already been done
    if(Test-Path "$Env:LOCAL_EXPANDED\tomcat\config_done_marker"){
        return 0
    }

    # Delete previous Tomcat directory if it exists
    # In case previous config isn't completed or a new config should be forcefully installed
    if(Test-Path "$Env:LOCAL_EXPANDED\tomcat"){
        Remove-Item "$Env:LOCAL_EXPANDED\tomcat" --recurse
    }

    md -Path "$Env:LOCAL_EXPANDED\tomcat"

    # Copy Tomcat to local
    # Using the environment variable $AZURE_TOMCAT90_HOME uses the 'default' version of Tomcat
    Copy-Item -Path "$Env:AZURE_TOMCAT90_HOME\*" "$Env:LOCAL_EXPANDED\tomcat" -Recurse

    # Perform the required customization of Tomcat
    $success = TransformXML -xml $target_xml -xsl $target_xsl -output $target_xml

    # Mark that the operation was a success if successful
    if($success){
        New-Item -Path "$Env:LOCAL_EXPANDED\tomcat\config_done_marker" -ItemType File
    }

Yapılandırmayı sonlandırma

Son olarak, sürücü JAR'lerini Tomcat sınıf yolu'na yerleştirir ve App Service'inizi yeniden başlatırsınız. JDBC sürücü dosyalarını /home/site/lib dizinine yerleştirerek Tomcat sınıf yükleyicisi tarafından kullanılabilir olduğundan emin olun. Cloud Shell'de her sürücü JAR'ı için komutunu çalıştırınaz webapp deploy --type=lib:

az webapp deploy --resource-group <group-name> --name <app-name> --src-path <jar-name>.jar --type=lib --target-path <jar-name>.jar

Tomcat

Bu yönergeler tüm veritabanı bağlantıları için geçerlidir. Yer tutucuları seçtiğiniz veritabanının sürücü sınıfı adı ve JAR dosyasıyla doldurmanız gerekir. Sağlanan, yaygın veritabanları için sınıf adlarını ve sürücü indirmelerini içeren bir tablodur.

Veritabanı Sürücü Sınıfı Adı JDBC Sürücüsü
PostgreSQL org.postgresql.Driver Karşıdan Yükle
MySQL com.mysql.jdbc.Driver İndir ("Platformdan Bağımsız" seçeneğini belirleyin)
SQL Server com.microsoft.sqlserver.jdbc.SQLServerDriver Karşıdan Yükle

Tomcat'i Java Veritabanı Bağlan ivity (JDBC) veya Java Kalıcılık API'sini (JPA) kullanacak şekilde yapılandırmak için, ilk olarak başlatma sırasında Tomcat tarafından okunan ortam değişkenini özelleştirinCATALINA_OPTS. App Service Maven eklentisindeki bir uygulama ayarı aracılığıyla bu değerleri ayarlayın:

<appSettings>
    <property>
        <name>CATALINA_OPTS</name>
        <value>"$CATALINA_OPTS -Ddbuser=${DBUSER} -Ddbpassword=${DBPASSWORD} -DconnURL=${CONNURL}"</value>
    </property>
</appSettings>

Alternatif olarak, Azure portalının Yapılandırma>Uygulaması Ayarlar sayfasında ortam değişkenlerini de ayarlayabilirsiniz.

Ardından, veri kaynağının bir uygulamada mı yoksa Tomcat servlet'inde çalışan tüm uygulamalarda mı kullanılabilir olması gerektiğini belirleyin.

Uygulama düzeyinde veri kaynakları

  1. Projenizin META-INF/ dizininde bir context.xml dosyası oluşturun. Yoksa META-INF/ dizini oluşturun.

  2. context.xml'da, veri kaynağını bir Context JNDI adresine bağlamak için bir öğe ekleyin. Yer tutucuyu driverClassName , yukarıdaki tablodan sürücünüzün sınıf adıyla değiştirin.

    <Context>
        <Resource
            name="jdbc/dbconnection"
            type="javax.sql.DataSource"
            url="${connURL}"
            driverClassName="<insert your driver class name>"
            username="${dbuser}"
            password="${dbpassword}"
        />
    </Context>
    
  3. Uygulamanızdaki veri kaynağını kullanmak için uygulamanızın web.xml güncelleştirin.

    <resource-env-ref>
        <resource-env-ref-name>jdbc/dbconnection</resource-env-ref-name>
        <resource-env-ref-type>javax.sql.DataSource</resource-env-ref-type>
    </resource-env-ref>
    

Paylaşılan sunucu düzeyindeki kaynaklar

Paylaşılan, sunucu düzeyinde bir veri kaynağı eklemek için Tomcat'in server.xml düzenlemeniz gerekir. İlk olarak, bir başlangıç betiği yükleyin ve Yapılandırma>Başlangıç Komutu'nda betiğin yolunu ayarlayın. BAŞLANGıÇ betiğini FTP kullanarak karşıya yükleyebilirsiniz.

Başlangıç betiğiniz, server.xml dosyasına bir xsl dönüşümü yapar ve sonuçta elde edilen xml dosyasını olarak /usr/local/tomcat/conf/server.xmlverir. Başlangıç betiği, apk aracılığıyla libxslt yüklemelidir. xsl dosyanız ve başlangıç betiğiniz FTP aracılığıyla karşıya yüklenebilir. Aşağıda örnek bir başlangıç betiği verilmiştir.

# Install libxslt. Also copy the transform file to /home/tomcat/conf/
apk add --update libxslt

# Usage: xsltproc --output output.xml style.xsl input.xml
xsltproc --output /home/tomcat/conf/server.xml /home/tomcat/conf/transform.xsl /usr/local/tomcat/conf/server.xml

Aşağıdaki örnek XSL dosyası, Tomcat server.xml yeni bir bağlayıcı düğümü ekler.

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="xml" indent="yes"/>

  <xsl:template match="@* | node()" name="Copy">
    <xsl:copy>
      <xsl:apply-templates select="@* | node()"/>
    </xsl:copy>
  </xsl:template>

  <xsl:template match="@* | node()" mode="insertConnector">
    <xsl:call-template name="Copy" />
  </xsl:template>

  <xsl:template match="comment()[not(../Connector[@scheme = 'https']) and
                                 contains(., '&lt;Connector') and
                                 (contains(., 'scheme=&quot;https&quot;') or
                                  contains(., &quot;scheme='https'&quot;))]">
    <xsl:value-of select="." disable-output-escaping="yes" />
  </xsl:template>

  <xsl:template match="Service[not(Connector[@scheme = 'https'] or
                                   comment()[contains(., '&lt;Connector') and
                                             (contains(., 'scheme=&quot;https&quot;') or
                                              contains(., &quot;scheme='https'&quot;))]
                                  )]
                      ">
    <xsl:copy>
      <xsl:apply-templates select="@* | node()" mode="insertConnector" />
    </xsl:copy>
  </xsl:template>

  <!-- Add the new connector after the last existing Connnector if there's one -->
  <xsl:template match="Connector[last()]" mode="insertConnector">
    <xsl:call-template name="Copy" />

    <xsl:call-template name="AddConnector" />
  </xsl:template>

  <!-- ... or before the first Engine if there's no existing Connector -->
  <xsl:template match="Engine[1][not(preceding-sibling::Connector)]"
                mode="insertConnector">
    <xsl:call-template name="AddConnector" />

    <xsl:call-template name="Copy" />
  </xsl:template>

  <xsl:template name="AddConnector">
    <!-- Add new line -->
    <xsl:text>&#xa;</xsl:text>
    <!-- This is the new connector -->
    <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true" 
               maxThreads="150" scheme="https" secure="true" 
               keystoreFile="${{user.home}}/.keystore" keystorePass="changeit"
               clientAuth="false" sslProtocol="TLS" />
  </xsl:template>

</xsl:stylesheet>

Yapılandırmayı sonlandırma

Son olarak sürücü JAR'lerini Tomcat sınıf yolu'na yerleştirin ve App Service'inizi yeniden başlatın.

  1. JDBC sürücü dosyalarını /home/site/lib dizinine yerleştirerek Tomcat sınıf yükleyicisi tarafından kullanılabilir olduğundan emin olun. Cloud Shell'de her sürücü JAR'ı için komutunu çalıştırınaz webapp deploy --type=lib:
az webapp deploy --resource-group <group-name> --name <app-name> --src-path <jar-name>.jar --type=lib --path <jar-name>.jar

Sunucu düzeyinde bir veri kaynağı oluşturduysanız App Service Linux uygulamasını yeniden başlatın. Tomcat olarak sıfırlanır CATALINA_BASE/home/tomcat ve güncelleştirilmiş yapılandırmayı kullanır.

JBoss EAP Veri Kaynakları

Bir veri kaynağını JBoss EAP'ye kaydederken üç temel adım vardır: JDBC sürücüsünü karşıya yükleme, JDBC sürücüsünü modül olarak ekleme ve modülü kaydetme. App Service durum bilgisi olmayan bir barındırma hizmetidir, bu nedenle veri kaynağı modülünü ekleme ve kaydetmeye yönelik yapılandırma komutlarının betiklenmesi ve kapsayıcı başlatılırken uygulanması gerekir.

  1. Veritabanınızın JDBC sürücüsünü alın.

  2. JDBC sürücüsü için bir XML modülü tanım dosyası oluşturun. Aşağıdaki örnekte PostgreSQL için bir modül tanımı gösterilmektedir.

    <?xml version="1.0" ?>
    <module xmlns="urn:jboss:module:1.1" name="org.postgres">
        <resources>
        <!-- ***** IMPORTANT : REPLACE THIS PLACEHOLDER *******-->
        <resource-root path="/home/site/deployments/tools/postgresql-42.2.12.jar" />
        </resources>
        <dependencies>
            <module name="javax.api"/>
            <module name="javax.transaction.api"/>
        </dependencies>
    </module>
    
  3. JBoss CLI komutlarınızı adlı jboss-cli-commands.clibir dosyaya yerleştirin. JBoss komutlarının modülü eklemesi ve veri kaynağı olarak kaydetmesi gerekir. Aşağıdaki örnekte PostgreSQL için JBoss CLI komutları gösterilmektedir.

    #!/usr/bin/env bash
    module add --name=org.postgres --resources=/home/site/deployments/tools/postgresql-42.2.12.jar --module-xml=/home/site/deployments/tools/postgres-module.xml
    
    /subsystem=datasources/jdbc-driver=postgres:add(driver-name="postgres",driver-module-name="org.postgres",driver-class-name=org.postgresql.Driver,driver-xa-datasource-class-name=org.postgresql.xa.PGXADataSource)
    
    data-source add --name=postgresDS --driver-name=postgres --jndi-name=java:jboss/datasources/postgresDS --connection-url=${POSTGRES_CONNECTION_URL,env.POSTGRES_CONNECTION_URL:jdbc:postgresql://db:5432/postgres} --user-name=${POSTGRES_SERVER_ADMIN_FULL_NAME,env.POSTGRES_SERVER_ADMIN_FULL_NAME:postgres} --password=${POSTGRES_SERVER_ADMIN_PASSWORD,env.POSTGRES_SERVER_ADMIN_PASSWORD:example} --use-ccm=true --max-pool-size=5 --blocking-timeout-wait-millis=5000 --enabled=true --driver-class=org.postgresql.Driver --exception-sorter-class-name=org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLExceptionSorter --jta=true --use-java-context=true --valid-connection-checker-class-name=org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLValidConnectionChecker
    
  4. JBoss CLI komutlarını çağıran bir başlangıç betiği startup_script.sh oluşturun. Aşağıdaki örnekte, öğesinin nasıl çağrılacakları gösterilmektedir jboss-cli-commands.cli. Daha sonra App Service'i kapsayıcı başlatıldığında bu betiği çalıştıracak şekilde yapılandıracaksınız.

    $JBOSS_HOME/bin/jboss-cli.sh --connect --file=/home/site/deployments/tools/jboss-cli-commands.cli
    
  5. Seçtiğiniz bir FTP istemcisini kullanarak JDBC sürücünüzü, jboss-cli-commands.cli, startup_script.shve modül tanımınızı öğesine /site/deployments/tools/yükleyin.

  6. Kapsayıcı başlatıldığında sitenizi çalışacak startup_script.sh şekilde yapılandırın. Azure portalında Yapılandırma>Genel Ayarlar> Başla Komutu'na gidin. Başlangıç komut alanını olarak /home/site/deployments/tools/startup_script.shayarlayın. Değişikliklerinizi kaydedin.

Veri kaynağının JBoss sunucusuna eklendiğini onaylamak için web uygulamanıza SSH ekleyin ve komutunu çalıştırın $JBOSS_HOME/bin/jboss-cli.sh --connect. JBoss'a bağlandıktan sonra veri kaynaklarının /subsystem=datasources:read-resource listesini yazdırmak için komutunu çalıştırın.

Günlüklerde robots933456

Kapsayıcı günlüklerinde şu iletiyi görebilirsiniz:

2019-04-08T14:07:56.641002476Z "-" - - [08/Apr/2019:14:07:56 +0000] "GET /robots933456.txt HTTP/1.1" 404 415 "-" "-"

Bu iletiyi güvenle yoksayabilirsiniz. /robots933456.txt, App Service hizmetinin kapsayıcının istek sunmak için uygun olup olmadığını denetlemek için kullandığı işlevsiz bir URL'dir. 404 yanıtı, yolun var olmadığını belirtir ancak App Service bu sayede iyi ve isteklere yanıt vermeye uygun durumda olan kapsayıcıları belirler.

Java çalışma zamanı sürümü seçme

App Service, kullanıcıların JVM'nin Java 8 veya Java 11 gibi ana sürümünü ve 1.8.0_232 veya 11.0.5 gibi düzeltme eki sürümünü seçmesine olanak tanır. Ayrıca, yeni ikincil sürümler kullanılabilir hale geldikçe düzeltme eki sürümünün otomatik olarak güncelleştirilmiş olmasını da seçebilirsiniz. Çoğu durumda üretim uygulamaları sabitlenmiş düzeltme eki JVM sürümlerini kullanmalıdır. Bu, düzeltme eki sürümü otomatik güncelleştirmesi sırasında öngörülemeyen kesintileri önler. Tüm Java web uygulamaları 64 bit JVM'ler kullanır ve yapılandırılamaz.

Tomcat kullanıyorsanız Tomcat'in yama sürümünü sabitlemeyi seçebilirsiniz. Windows'da JVM ve Tomcat'in düzeltme eki sürümlerini bağımsız olarak sabitleyebilirsiniz. Linux'ta Tomcat'in yama sürümünü sabitleyebilirsiniz; JVM'nin düzeltme eki sürümü de sabitlenir ancak ayrı olarak yapılandırılamaz.

İkincil sürümü sabitlemeyi seçerseniz, uygulamadaki JVM ikincil sürümünü düzenli aralıklarla güncelleştirmeniz gerekir. Uygulamanızın daha yeni ikincil sürümde çalıştığından emin olmak için bir hazırlama yuvası oluşturun ve hazırlama yuvasında ikincil sürümü artırın. Uygulamanın yeni ikincil sürümde doğru şekilde çalıştığını onayladıktan sonra hazırlama ve üretim yuvalarını değiştirebilirsiniz.

JBoss EAP

JBoss EAP'de Kümeleme

App Service, JBoss EAP sürüm 7.4.1 ve üzeri için kümeleme desteği sağlar. Kümelemeye olanak tanımak için web uygulamanızın bir sanal ağ ile tümleştirilmesi gerekir. Web uygulaması bir sanal ağ ile tümleştirildiğinde yeniden başlatılır ve JBoss EAP yüklemesi otomatik olarak kümelenmiş bir yapılandırmayla başlar. JBoss EAP örnekleri, çalışma zamanında ortam değişkeninde gösterilen bağlantı noktalarını kullanarak sanal ağ tümleştirmesinde WEBSITES_PRIVATE_PORTS belirtilen alt ağ üzerinden iletişim kurar. Herhangi bir değerle adlı WEBSITE_DISABLE_CLUSTERING bir uygulama ayarı oluşturarak kümele oluşturmayı devre dışı bırakabilirsiniz.

Not

Sanal ağ tümleştirmenizi bir ARM şablonuyla etkinleştiriyorsanız, özelliğini vnetPrivatePorts el ile değerine 2ayarlamanız gerekir. CLI veya Portaldan sanal ağ tümleştirmesini etkinleştirirseniz, bu özellik sizin için otomatik olarak ayarlanır.

Kümeleme etkinleştirildiğinde, JBoss EAP örnekleri yeni örnekleri bulmak ve küme üyeleri, tanımlayıcıları ve IP adresleri gibi küme bilgilerini kalıcı hale getirmek için FILE_PING JGroups bulma protokollerini kullanır. App Service'te bu dosyalar altındadır /home/clusterinfo/. Başlatacak ilk EAP örneği, küme üyeliği dosyasında okuma/yazma izinleri alır. Diğer örnekler dosyayı okur, birincil düğümü bulur ve kümeye dahil edilecek ve dosyaya eklenecek düğümle eşgüdüm sağlar.

Premium V3 ve Yalıtılmış V2 App Service Planı türleri, iş açısından kritik iş yüklerinizin dayanıklılığını ve güvenilirliğini artırmak için isteğe bağlı olarak Kullanılabilirlik Alanları arasında dağıtılabilir. Bu mimari bölge yedekliliği olarak da bilinir. JBoss EAP kümeleme özelliği, alanlar arası yedeklilik özelliğiyle uyumludur.

Otomatik Ölçeklendirme Kuralları

Yatay ölçeklendirme için otomatik ölçeklendirme kurallarını yapılandırırken, kaldırılan her örneğin etkinliğini (veritabanı işlemini işleme gibi) kümenin başka bir üyesine aktaradığından emin olmak için örnekleri artımlı olarak (birer birer) kaldırmak önemlidir. Portalda otomatik ölçeklendirme kurallarınızı ölçeği azaltacak şekilde yapılandırırken aşağıdaki seçenekleri kullanın:

  • İşlem: "Sayıyı azaltma ölçütü"
  • Seyrek erişim: "5 dakika" veya üzeri
  • Örnek sayısı: 1

Artımlı olarak örnek eklemeniz gerekmez (ölçeği genişletme), kümeye aynı anda birden çok örnek ekleyebilirsiniz.

JBoss EAP App Service Planları

JBoss EAP yalnızca Premium v3 ve Yalıtılmış v2 App Service Planı türlerinde kullanılabilir. Genel önizleme sırasında farklı bir katmanda JBoss EAP sitesi oluşturan müşterilerin beklenmedik davranışlardan kaçınmak için ölçeği Premium veya Yalıtılmış donanım katmanına artırması gerekir.

Uygulama Hizmetlerinde Tomcat Temel Yapılandırması

Java geliştiricileri Sunucu ayarlarını özelleştirebilir, sorunları giderebilir ve Tomcat'in server.xml dosyası ve yapılandırma ayrıntılarını biliyorlarsa uygulamaları Güvenle Tomcat'e dağıtabilir. Olası özelleştirmeler şunlardır:

  • Tomcat yapılandırmasını özelleştirme: server.xml dosyasını ve Tomcat'in yapılandırma ayrıntılarını anlayarak, sunucu ayarlarını uygulamalarının gereksinimlerine uyacak şekilde ayarlayabilirsiniz.
  • Hata ayıklama: Tomcat sunucusunda bir uygulama dağıtıldığında, geliştiricilerin ortaya çıkabilecek sorunların hatalarını ayıklamak için sunucu yapılandırmasını bilmesi gerekir. Bu, sunucu günlüklerini denetlemeyi, yapılandırma dosyalarını incelemeyi ve oluşabilecek hataları belirlemeyi içerir.
  • Tomcat sorunlarını giderme: Java geliştiricileri kaçınılmaz olarak Tomcat sunucularında performans sorunları veya yapılandırma hataları gibi sorunlarla karşılaşır. Geliştiriciler, server.xml dosyasını ve Tomcat'in yapılandırma ayrıntılarını anlayarak bu sorunları hızla tanılayabilir ve giderebilir ve bu da zaman ve çabadan tasarruf edebilir.
  • Tomcat'e uygulama dağıtma: Bir Java web uygulamasını Tomcat'e dağıtmak için geliştiricilerin server.xml dosyasını ve diğer Tomcat ayarlarını nasıl yapılandıracaklarını bilmesi gerekir. Bu ayrıntıları anlamak, uygulamaların başarıyla dağıtılması ve sunucuda sorunsuz bir şekilde çalışmasını sağlamak için gereklidir.

Java iş yükünüzü (WAR dosyası veya JAR dosyası) barındırmak için yerleşik Tomcat ile bir uygulama oluşturduğunuzda, Tomcat yapılandırması için kutudan çıkardığınız bazı ayarlar vardır. Tomcat Web Sunucusu için varsayılan yapılandırma da dahil olmak üzere ayrıntılı bilgi için Resmi Apache Tomcat Belgeleri'ne başvurabilirsiniz.

Buna ek olarak, tomcat dağıtımı için server.xml başlangıç sırasında daha fazla uygulanan bazı dönüştürmeler vardır. Bunlar Bağlan or, Konak ve Vana ayarlarına dönüştürmelerdir.

Tomcat'in en son sürümlerinin server.xml (8.5.58 ve 9.0.38 sonraki sürümler) olduğunu unutmayın. Tomcat'in eski sürümleri dönüşümleri kullanmaz ve sonuç olarak farklı davranışlara sahip olabilir.

Bağlayıcı

<Connector port="${port.http}" address="127.0.0.1" maxHttpHeaderSize="16384" compression="on" URIEncoding="UTF-8" connectionTimeout="${site.connectionTimeout}" maxThreads="${catalina.maxThreads}" maxConnections="${catalina.maxConnections}" protocol="HTTP/1.1" redirectPort="8443"/>
  • maxHttpHeaderSize olarak ayarlanır 16384
  • URIEncoding olarak ayarlanır UTF-8
  • conectionTimeout olarak ayarlanır WEBSITE_TOMCAT_CONNECTION_TIMEOUTve varsayılan olarak 240000
  • maxThreads olarak ayarlanır WEBSITE_CATALINA_MAXTHREADSve varsayılan olarak 200
  • maxConnections olarak ayarlanır WEBSITE_CATALINA_MAXCONNECTIONSve varsayılan olarak 10000

Not

connectionTimeout, maxThreads ve max Bağlan ions ayarları uygulama ayarlarıyla ayarlanabilir

Aşağıda conectionTimeout, maxThreads veya max Bağlan ions değerlerini değiştirmek için kullanabileceğiniz örnek CLI komutları verilmiştir:

az webapp config appsettings set --resource-group myResourceGroup --name myApp --settings WEBSITE_TOMCAT_CONNECTION_TIMEOUT=120000
az webapp config appsettings set --resource-group myResourceGroup --name myApp --settings WEBSITE_CATALINA_MAXTHREADS=100
az webapp config appsettings set --resource-group myResourceGroup --name myApp --settings WEBSITE_CATALINA_MAXCONNECTIONS=5000
  • Bağlan veya 127.0.0.1 yerine kapsayıcının adresini kullanır

Ana Bilgisayar

<Host appBase="${site.appbase}" xmlBase="${site.xmlbase}" unpackWARs="${site.unpackwars}" workDir="${site.tempdir}" errorReportValveClass="com.microsoft.azure.appservice.AppServiceErrorReportValve" name="localhost" autoDeploy="true">
  • appBaseolarak ayarlanır ve varsayılan olarak yerel olarak ayarlanır AZURE_SITE_APP_BASEWebappsLocalPath
  • xmlBase olarak ayarlanır AZURE_SITE_HOMEve varsayılan olarak /site/wwwroot
  • unpackWARs olarak ayarlanır AZURE_UNPACK_WARSve varsayılan olarak true
  • workDir olarak ayarlanır JAVA_TMP_DIRve varsayılan olarak TMP
  • errorReportValveClass özel hata raporu vanamızı kullanır

Vana

<Valve prefix="site_access_log.${catalina.instance.name}" pattern="%h %l %u %t &quot;%r&quot; %s %b %D %{x-arr-log-id}i" directory="${site.logdir}/http/RawLogs" maxDays="${site.logRetentionDays}" className="org.apache.catalina.valves.AccessLogValve" suffix=".txt"/>
  • directory olarak ayarlanır AZURE_LOGGING_DIRve varsayılan olarak home\logFiles
  • maxDaysWEBSITE_HTTPLOGGING_RETENTION_DAYS, varsayılan olarak [forever] olarak ayarlanır 0 .

Linux'ta, tüm özelleştirmeler aynı, artı:

  • Vanaya bazı hata ve raporlama sayfaları ekler:
               <xsl:attribute name="appServiceErrorPage">
                   <xsl:value-of select="'${appService.valves.appServiceErrorPage}'"/>
               </xsl:attribute>

               <xsl:attribute name="showReport">
                   <xsl:value-of select="'${catalina.valves.showReport}'"/>
               </xsl:attribute>

               <xsl:attribute name="showServerInfo">
                   <xsl:value-of select="'${catalina.valves.showServerInfo}'"/>
               </xsl:attribute>

Sonraki adımlar

Azure hızlı başlangıçları, öğreticileri ve Java başvuru belgelerini bulmak için Java geliştiricileri için Azure merkezini ziyaret edin.