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
eklentisini öğesine
build.gradle
ekleyerek Azure Web Apps için Gradle Eklentisini ayarlayın:plugins { id "com.microsoft.azure.azurewebapp" version "1.7.1" }
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 } }
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:
- VS Code: Visual Studio Code ile Java Web Apps
- IntelliJ IDEA:IntelliJ kullanarak Azure Uygulaması Hizmeti için Merhaba Dünya bir web uygulaması oluşturma
- Eclipse:Eclipse kullanarak Azure Uygulaması Hizmeti için Merhaba Dünya web uygulaması oluşturma
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/docker
da 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.
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.check
kaydı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 ayarlarını yapılandırma
- Özel etki alanı ayarlama
- TLS/SSL bağlamalarını yapılandırma
- CDN ekleme
- Kudu sitesini yapılandırma
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_ALL
true
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 -Xmx1204m
diğ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-8
adlı 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 1
sahip 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 1
sahip 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/cacerts
anahtar deposuna yüklenir ve özel sertifikalar içinde $JRE_HOME/lib/security/client.jks
depolanı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_LOAD
oluş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.
Uygulamalar Analizler uzantısını etkinleştirme
az extension add -n application-insights
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
instrumentationKey
değerleriniconnectionString
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
.
İ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"
İ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
NewRelic.com'de NewRelic hesabı oluşturma
NewRelic'ten Java aracısını indirin. newrelic-java-x.x.x.zip benzer bir dosya adına sahiptir.
Lisans anahtarınızı kopyalayın, aracıyı daha sonra yapılandırmak için bu anahtara ihtiyacınız vardır.
App Service örneğinize SSH girin ve yeni bir dizin oluşturun /home/site/wwwroot/apm.
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.
/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.
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.jar
adlıJAVA_OPTS
bir ortam değişkeni oluşturun. - Tomcat için değeriyle
-javaagent:/home/site/wwwroot/apm/newrelic/newrelic.jar
adlıCATALINA_OPTS
bir ortam değişkeni oluşturun.
- Java SE uygulamaları için değeriyle
NewRelic.com'de NewRelic hesabı oluşturma
NewRelic'ten Java aracısını indirin. newrelic-java-x.x.x.zip benzer bir dosya adına sahiptir.
Lisans anahtarınızı kopyalayın, aracıyı daha sonra yapılandırmak için buna ihtiyacınız olacak.
App Service örneğinize SSH girin ve yeni bir dizin oluşturun /home/site/wwwroot/apm.
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.
/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.
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.jar
adlıJAVA_OPTS
bir ortam değişkeni oluşturun. - Tomcat için değeriyle
-javaagent:/home/site/wwwroot/apm/newrelic/newrelic.jar
adlıCATALINA_OPTS
bir ortam değişkeni oluşturun.
- Java SE uygulamaları için değeriyle
veya
CATALINA_OPTS
içinJAVA_OPTS
zaten bir ortam değişkeniniz varsa, seçeneği geçerli değerin sonuna ekler-javaagent:/...
.
AppDynamics'i yapılandırma
AppDynamics.com'de AppDynamics hesabı oluşturma
AppDynamics web sitesinden Java aracısını indirin. Dosya adı AppServerAgent-x.x.x.xxxxx.zip benzer
Kudu konsolunu kullanarak yeni bir dizin /home/site/wwwroot/apm oluşturun.
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.
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.
- Java SE uygulamaları için, App Service adınız olan
AppDynamics.com'de AppDynamics hesabı oluşturma
AppDynamics web sitesinden Java aracısını indirin. Dosya adı AppServerAgent-x.x.x.xxxxx.zip benzer
App Service örneğinize SSH girin ve yeni bir dizin oluşturun /home/site/wwwroot/apm.
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.
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.
- Java SE uygulamaları için, App Service adınız olan
Not
veya CATALINA_OPTS
iç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.
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
.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ı
Projenizin META-INF/ dizininde bir context.xml dosyası oluşturun. Yoksa META-INF/ dizini oluşturun.
context.xml'da, veri kaynağını bir
Context
JNDI adresine bağlamak için bir öğe ekleyin. Yer tutucuyudriverClassName
, 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>
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:
- 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.
- Tomcat'i yerel olarak kopyalayın.
- Gerekli yapılandırma değişikliklerini yapın.
- 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
New-Item "$Env:LOCAL_EXPANDED\tomcat" -ItemType Directory
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.xml
veya 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.xml
yeni 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(., '<Connector') and
(contains(., 'scheme="https"') or
contains(., "scheme='https'"))]">
<xsl:value-of select="." disable-output-escaping="yes" />
</xsl:template>
<xsl:template match="Service[not(Connector[@scheme = 'https'] or
comment()[contains(., '<Connector') and
(contains(., 'scheme="https"') or
contains(., "scheme='https'"))]
)]
">
<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>
</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:
- Ayarlar> Yapılandırma>Uygulaması ayarları'na gidin.
- Yeni Uygulama Ayarı'nı seçin.
- Ayarı oluşturmak için şu değerleri kullanın:
- Ad:
CATALINA_BASE
- Değer:
"%LOCAL_EXPANDED%\tomcat"
- Ad:
Ö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ı
Projenizin META-INF/ dizininde bir context.xml dosyası oluşturun. Yoksa META-INF/ dizini oluşturun.
context.xml'da, veri kaynağını bir
Context
JNDI adresine bağlamak için bir öğe ekleyin. Yer tutucuyudriverClassName
, 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>
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.xml
verir. 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(., '<Connector') and
(contains(., 'scheme="https"') or
contains(., "scheme='https'"))]">
<xsl:value-of select="." disable-output-escaping="yes" />
</xsl:template>
<xsl:template match="Service[not(Connector[@scheme = 'https'] or
comment()[contains(., '<Connector') and
(contains(., 'scheme="https"') or
contains(., "scheme='https'"))]
)]
">
<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>
</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.
- 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ın
az 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.
Veritabanınızın JDBC sürücüsünü alın.
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>
JBoss CLI komutlarınızı adlı
jboss-cli-commands.cli
bir 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
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österilmektedirjboss-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
Seçtiğiniz bir FTP istemcisini kullanarak JDBC sürücünüzü,
jboss-cli-commands.cli
,startup_script.sh
ve modül tanımınızı öğesine/site/deployments/tools/
yükleyin.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.sh
ayarlayı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 2
ayarlamanı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.
Not
Uygulamanızın başlatılması sırasında eski bulma dosyalarını temizleyerek JBOSS kümeleme zaman aşımlarından kaçınabilirsiniz
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ır16384
URIEncoding
olarak ayarlanırUTF-8
conectionTimeout
olarak ayarlanırWEBSITE_TOMCAT_CONNECTION_TIMEOUT
ve varsayılan olarak240000
maxThreads
olarak ayarlanırWEBSITE_CATALINA_MAXTHREADS
ve varsayılan olarak200
maxConnections
olarak ayarlanırWEBSITE_CATALINA_MAXCONNECTIONS
ve varsayılan olarak10000
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">
appBase
olarak ayarlanır ve varsayılan olarak yerel olarak ayarlanırAZURE_SITE_APP_BASE
WebappsLocalPath
xmlBase
olarak ayarlanırAZURE_SITE_HOME
ve varsayılan olarak/site/wwwroot
unpackWARs
olarak ayarlanırAZURE_UNPACK_WARS
ve varsayılan olaraktrue
workDir
olarak ayarlanırJAVA_TMP_DIR
ve varsayılan olarakTMP
errorReportValveClass
özel hata raporu vanamızı kullanır
Vana
<Valve prefix="site_access_log.${catalina.instance.name}" pattern="%h %l %u %t "%r" %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ırAZURE_LOGGING_DIR
ve varsayılan olarakhome\logFiles
maxDays
WEBSITE_HTTPLOGGING_RETENTION_DAYS
, varsayılan olarak [forever] olarak ayarlanır0
.
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.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin