Konfigurace aplikace v Javě pro Azure App Service
Azure App Service umožňuje vývojářům v Javě rychle sestavovat, nasazovat a škálovat webové aplikace Java SE, Tomcat a JBoss EAP v plně spravované službě. Nasaďte aplikace pomocí modulů plug-in Maven, z příkazového řádku nebo v editorech, jako je IntelliJ, Eclipse nebo Visual Studio Code.
Tato příručka obsahuje klíčové koncepty a pokyny pro vývojáře v Javě, kteří používají App Service. Pokud jste ještě nikdy nepouží Azure App Service, měli byste si nejprve projít rychlý start pro Javu. Obecné dotazy týkající se App Service, které nejsou specifické pro vývoj v jazyce Java, jsou zodpovězené v App Service nejčastějších dotazů.
Zobrazení verze Javy
Aktuální verzi Javy zobrazíte spuštěním následujícího příkazu v Cloud Shell:
az webapp config show --name <app-name> --resource-group <resource-group-name> --query "[javaVersion, javaContainer, javaContainerVersion]"
Pokud chcete zobrazit všechny podporované verze Javy, spusťte následující příkaz vCloud Shell :
az webapp list-runtimes | grep java
Aktuální verzi Javy zobrazíte spuštěním následujícího příkazu v Cloud Shell:
az webapp config show --resource-group <resource-group-name> --name <app-name> --query linuxFxVersion
Pokud chcete zobrazit všechny podporované verze Javy, spusťte následující příkaz vCloud Shell :
az webapp list-runtimes --linux | grep "JAVA\|TOMCAT\|JBOSSEAP"
Nasazení aplikace
Nástroje sestavení
Maven
Pomocí modulu plug-in Mavenpro Azure Web Apps můžete snadno připravit projekt Maven Java pro webovou aplikaci Azure pomocí jednoho příkazu v kořenovém adresáři projektu:
mvn com.microsoft.azure:azure-webapp-maven-plugin:2.2.0:config
Tento příkaz přidá modul plug-in a související konfiguraci tak, že vás vyzve k výběru existující webové aplikace azure-webapp-maven-plugin Azure nebo vytvoření nové. Pak můžete aplikaci v Javě nasadit do Azure pomocí následujícího příkazu:
mvn package azure-webapp:deploy
Tady je ukázková konfigurace v pom.xml souboru :
<plugin>
<groupId>com.microsoft.azure</groupId>
<artifactId>azure-webapp-maven-plugin</artifactId>
<version>2.2.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
Na nastavení modulu plug-in Gradle pro Azure Web Apps přidáním modulu plug-in do souboru
build.gradle:plugins { id "com.microsoft.azure.azurewebapp" version "1.2.0" }Nakonfigurujte podrobnosti o webové aplikaci. Pokud neexistuje, vytvoří se odpovídající prostředky Azure. Tady je ukázková konfigurace, podrobnosti najdete v tomto dokumentu.
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 } }Nasazení pomocí jednoho příkazu.
gradle azureWebAppDeploy
Prostředí IDE
Azure poskytuje bezproblémové prostředí java App Service vývojových prostředí v oblíbených prostředích Java ID, včetně:
- VS Code: Java Web Apps s Visual Studio Code
- IntelliJ IDEA:Vytvoření Hello World aplikace pro Azure App Service pomocí IntelliJ
- Eclipse:Vytvoření Hello World aplikace pro Azure App Service pomocí Eclipse
Kudu API
Java SE
Pokud chcete nasadit soubory .jar SE Java, použijte /api/publish/ koncový bod webu Kudu. Další informace o tomto rozhraní API najdete v této dokumentaci.
Poznámka
Aplikace .jar musí mít název app.jar pro App Service k identifikaci a spuštění aplikace. Modul plug-in Maven (uvedený výše) automaticky přejmenuje vaši aplikaci během nasazování. Pokud soubor JAR nepřejete na app.jar, můžete nahrát skript prostředí pomocí příkazu ke spuštění aplikace .jar. Vložte absolutní cestu k tomuto skriptu do textového pole Spouštěcí soubor v části Konfigurace na portálu. Spouštěcí skript se nespouští z adresáře, do kterého je umístěn. Proto ve spouštěcím skriptu vždy používejte absolutní cesty k referenčním souborům (například: java -jar /home/myapp/myapp.jar).
Tomcat
Pokud chcete nasadit soubory .war do Tomcatu, použijte koncový /api/wardeploy/ bod k postování archivního souboru. Další informace o tomto rozhraní API najdete v této dokumentaci.
JBoss EAP
Pokud chcete nasadit soubory .war do JBoss, použijte koncový /api/wardeploy/ bod k postování archivního souboru. Další informace o tomto rozhraní API najdete v této dokumentaci.
Pokud chcete nasadit soubory .ear, použijte PROTOKOL FTP. Aplikace .ear se nasadí do kořenového adresáře kontextu definovaného v konfiguraci vaší aplikace. Pokud je například kořenový adresář kontextu vaší aplikace , můžete procházet <context-root>myapp</context-root> web v cestě : /myapp http://my-app-name.azurewebsites.net/myapp . Pokud chcete, aby vaše webová aplikace byla obsluhoná v kořenové cestě, ujistěte se, že aplikace nastaví kořenovou hodnotu kontextu na kořenovou cestu: <context-root>/</context-root> . Další informace najdete v tématu Nastavení kořenového adresáře kontextu webové aplikace.
Soubor .war nebo .jar nenasazování pomocí protokolu FTP. Nástroj FTP je navržený k nahrání spouštěcích skriptů, závislostí nebo jiných souborů modulu runtime. Není to optimální volba pro nasazení webových aplikací.
Protokolování a ladění aplikací
Sestavy výkonu, vizualizace provozu a kontroly stavu jsou k dispozici pro každou aplikaci prostřednictvím Azure Portal. Další informace najdete v tématu Azure App Service diagnostice.
Streamování diagnostických protokolů
Pokud chcete získat přístup k protokolům konzoly vygenerovaným v rámci kódu aplikace ve službě App Service, zapněte protokolování diagnostiky spuštěním následujícího příkazu v Cloud Shellu:
az webapp log config --resource-group <resource-group-name> --name <app-name> --docker-container-logging filesystem --level Verbose
Možné hodnoty pro --level jsou: Error, Warning, Info a Verbose. Každá další úroveň zahrnuje předchozí úroveň. Například Error zahrnuje jenom chybové zprávy a Verbose zahrnuje všechny zprávy.
Jakmile je aktivované protokolování diagnostiky, spusťte následující příkaz pro zobrazení streamu protokolů:
az webapp log tail --resource-group <resource-group-name> --name <app-name>
Pokud nevidíte protokoly konzoly okamžitě, podívejte se znovu za 30 sekund.
Poznámka
Soubory protokolu můžete také zkontrolovat v prohlížeči na https://<app-name>.scm.azurewebsites.net/api/logs/docker.
Streamování protokolů můžete kdykoli zastavit zadáním Ctrl+C.
Můžete přistupovat k protokolům konzoly generovaným zevnitř kontejneru.
Nejprve zapněte protokolování kontejneru spuštěním následujícího příkazu:
az webapp log config --name <app-name> --resource-group <resource-group-name> --docker-container-logging filesystem
Nahraďte <app-name> a <resource-group-name> názvem vhodným pro vaši webovou aplikaci.
Jakmile je protokolování kontejneru zapnuté, spusťte následující příkaz, který zobrazí datový proud protokolu:
az webapp log tail --name <app-name> --resource-group <resource-group-name>
Pokud nevidíte protokoly konzoly okamžitě, podívejte se znovu za 30 sekund.
Pokud chcete streamování protokolů kdykoli zastavit, zadejte CTRL + C.
Můžete také zkontrolovat soubory protokolu v prohlížeči na adrese https://<app-name>.scm.azurewebsites.net/api/logs/docker .
Další informace najdete v tématu Streamování protokolů v Cloud Shell.
Přístup ke konzole SSH
Pokud chcete otevřít přímou relaci SSH s kontejnerem, vaše aplikace by měla být spuštěná.
Vložte následující adresu URL do vašeho prohlížeče a <app-name> nahraďte názvem vaší aplikace:
https://<app-name>.scm.azurewebsites.net/webssh/host
Pokud ještě nejste ověření, budete se muset ověřit s vaším předplatným Azure, abyste se mohli připojit. Po ověření se vám zobrazí prostředí prohlížeče, ve kterém můžete spouště příkazy uvnitř vašeho kontejneru.

Poznámka
Všechny změny provedené mimo adresář /home se uloží ve vlastním kontejneru a po restartování aplikace se neuchovají.
Pokud chcete otevřít vzdálenou relaci SSH z místního počítače, projděte si téma věnované otevření relace SSH ze vzdáleného prostředí.
Nástroje pro řešení potíží
Integrované image Javy jsou založené na operačním systému Alpine Linux. Pomocí správce apk balíčků nainstalujte nástroje nebo příkazy pro řešení potíží.
Flight Recorder
Všechny moduly runtime Java App Service prostředí Azul JVM jsou součástí nástroje Zulu Flight Recorder. Můžete ho použít k zaznamenání událostí prostředí JVM, systému a aplikací a řešení problémů v aplikacích Java.
Záznam s časovým limitem
K načasované nahrávce budete potřebovat identifikátor PID (ID procesu) aplikace v Javě. Pokud chcete zjistit PID, otevřete prohlížeč na webu SCM vaší webové aplikace na adrese https://<your-site-name>.scm.azurewebsites.net/ProcessExplorer/ . Tato stránka zobrazuje spuštěné procesy ve vaší webové aplikaci. V tabulce vyhledejte proces s názvem java a zkopírujte odpovídající identifikátor PID (ID procesu).
Pak otevřete konzolu ladění na horním panelu nástrojů webu SCM a spusťte následující příkaz. Nahraďte <pid> ID procesu, které jste zkopír vytvořili dříve. Tento příkaz spustí 30sekunerový záznam profileru vaší aplikace v Javě a vygeneruje v timed_recording_example.jfr adresáři D:\home soubor s názvem .
jcmd <pid> JFR.start name=TimedRecording settings=profile duration=30s filename="D:\home\timed_recording_example.JFR"
Pomocí SSH App Service a spuštěním příkazu zobrazte seznam všech jcmd spuštěných procesů Java. Kromě samotného nástroje jcmd byste měli vidět spuštěnou aplikaci v Javě s číslem ID procesu (pid).
078990bbcd11:/home# jcmd
Picked up JAVA_TOOL_OPTIONS: -Djava.net.preferIPv4Stack=true
147 sun.tools.jcmd.JCmd
116 /home/site/wwwroot/app.jar
Spuštěním následujícího příkazu spusťte 30sekunerový záznam prostředí JVM. Profilování prostředí JVM a vytvoření souboru JFR s názvem jfr_example.jfr v domovském adresáři. (Nahraďte 116 pid vaší aplikace v Javě.)
jcmd 116 JFR.start name=MyRecording settings=profile duration=30s filename="/home/jfr_example.jfr"
Během 30sekudového intervalu můžete ověřit, že se záznam odehrá. jcmd 116 JFR.check Zobrazí se všechny nahrávky pro daný proces Java.
Průběžný záznam
Nástroj Zulu Flight Recorder můžete použít k nepřetržitému profilování aplikace v Javě s minimálním dopadem na výkon modulu runtime. Spuštěním následujícího příkazu Azure CLI vytvořte nastavení aplikace s názvem JAVA_OPTS s potřebnou konfigurací. Obsah nastavení aplikace JAVA_OPTS se předá příkazu java při spuštění aplikace.
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
Po spuštění záznamu můžete aktuální data záznamu kdykoli vy výpisem vy výpisu zobrazit pomocí JFR.dump příkazu .
jcmd <pid> JFR.dump name=continuous_recording filename="/home/recording1.jfr"
Analýza .jfr souborů
Pomocí FTPS stáhněte soubor JFR do místního počítače. Pokud chcete analyzovat soubor JFR, stáhněte a nainstalujte nástroj Zulu Mission Control. Pokyny k nástroji Zulu Mission Control najdete v dokumentaci společnosti Azul a v pokynech k instalaci.
Protokolování aplikace
Povolte protokolování aplikace prostřednictvím Azure Portal nebo Azure CLI a nakonfigurujte App Service tak, aby zapisování standardního výstupu konzoly aplikace a standardních chybových datových proudů konzoly do místního systému souborů nebo služby Azure Blob Storage. Protokolování do místní instance App Service systému souborů je zakázáno 12 hodin po nakonfigurování. Pokud potřebujete delší dobu uchovávání, nakonfigurujte aplikaci tak, aby zapisuje výstup do kontejneru úložiště objektů blob. Protokoly aplikace Java a Tomcat najdete v adresáři /home/LogFiles/Application/.
Povolte protokolování aplikace prostřednictvím Azure Portal nebo Azure CLI a nakonfigurujte App Service tak, aby zapisování standardního výstupu konzoly aplikace a standardních chybových datových proudů konzoly do místního systému souborů nebo služby Azure Blob Storage. Pokud potřebujete delší dobu uchovávání, nakonfigurujte aplikaci tak, aby zapisuje výstup do kontejneru úložiště objektů blob. Protokoly aplikace Java a Tomcat najdete v adresáři /home/LogFiles/Application/.
protokolování Azure Blob Storage pro App Services na bázi Linux se dá nakonfigurovat jenom pomocí Azure Monitor
pokud vaše aplikace používá pro trasování Logback nebo Log4j , můžete tyto trasování přepošlete pro účely revize do Azure Application Insights pomocí pokynů pro konfiguraci protokolovacího rozhraní v tématu prozkoumat protokoly trasování Java v Application Insights.
Přizpůsobení a ladění
Azure App Service podporuje vyladění a přizpůsobení prostřednictvím Azure Portal a CLI. Projděte si následující články s konfigurací webové aplikace specifické pro jazyk Java:
- Konfigurace nastavení aplikace
- Nastavení vlastní domény
- Konfigurace vazeb TLS/SSL
- Přidat CDN
- Konfigurace webu Kudu
Nastavení možností modulu Java Runtime
Pokud chcete nastavit přidělenou paměť nebo jiné možnosti modulu runtime JVM, vytvořte nastavení aplikace s názvem JAVA_OPTS s možnostmi. App Service předá toto nastavení jako proměnnou prostředí modulu runtime Java při spuštění.
v Azure Portal v části Nastavení aplikace pro webovou aplikaci vytvořte nové nastavení aplikace s názvem JAVA_OPTS pro Java SE nebo CATALINA_OPTS Tomcat, které obsahuje další nastavení, jako je například -Xms512m -Xmx1204m .
Pokud chcete nakonfigurovat nastavení aplikace z modulu plug-in Maven, přidejte do části modul plug-in Azure značky nastavení/hodnoty. Následující příklad nastaví konkrétní minimální a maximální velikost haldy Java:
<appSettings>
<property>
<name>JAVA_OPTS</name>
<value>-Xms512m -Xmx1204m</value>
</property>
</appSettings>
Poznámka
při použití Tomcat v Windows App Service nemusíte vytvářet soubor web.config.
Vývojáři, kteří spouštějí jednu aplikaci s jedním slotem nasazení v plánu App Service, mohou použít následující možnosti:
- Instance B1 a S1:
-Xms1024m -Xmx1024m - Instance B2 a S2:
-Xms3072m -Xmx3072m - Instance B3 a S3:
-Xms6144m -Xmx6144m - P1v2 instance:
-Xms3072m -Xmx3072m - P2v2 instance:
-Xms6144m -Xmx6144m - P3v2 instance:
-Xms12800m -Xmx12800m - P1v3 instance:
-Xms6656m -Xmx6656m - P2v3 instance:
-Xms14848m -Xmx14848m - P3v3 instance:
-Xms30720m -Xmx30720m - Typem I1 instance:
-Xms3072m -Xmx3072m - I2 instance:
-Xms6144m -Xmx6144m - I3 instance:
-Xms12800m -Xmx12800m - I1v2 instance:
-Xms6656m -Xmx6656m - I2v2 instance:
-Xms14848m -Xmx14848m - I3v2 instance:
-Xms30720m -Xmx30720m
Při ladění nastavení haldy aplikace zkontrolujte podrobnosti plánu App Service a vezměte v úvahu více aplikací a slot nasazení potřebuje k vyhledání optimálního přidělení paměti.
Zapnout webové sokety
Zapněte podporu pro webové sokety v Azure Portal v nastavení aplikace pro danou aplikaci. Aby se nastavení projevilo, bude nutné aplikaci restartovat.
Zapněte podporu webového soketu pomocí rozhraní příkazového řádku Azure pomocí následujícího příkazu:
az webapp config set --name <app-name> --resource-group <resource-group-name> --web-sockets-enabled true
Pak restartujte aplikaci:
az webapp stop --name <app-name> --resource-group <resource-group-name>
az webapp start --name <app-name> --resource-group <resource-group-name>
Nastavit výchozí kódování znaků
v Azure Portal v části Nastavení aplikace pro webovou aplikaci vytvořte nové nastavení aplikace s názvem JAVA_OPTS s hodnotou -Dfile.encoding=UTF-8 .
Případně můžete nakonfigurovat nastavení aplikace pomocí modulu plug-in App Service Maven. Přidejte značky název a hodnota nastavení do konfigurace modulu plug-in:
<appSettings>
<property>
<name>JAVA_OPTS</name>
<value>-Dfile.encoding=UTF-8</value>
</property>
</appSettings>
Předem kompilovat soubory JSP
Chcete-li zlepšit výkon aplikací Tomcat, můžete před nasazením do App Service zkompilovat své soubory JSP. Můžete použít modul plug-in Maven , který poskytuje Apache Sling, nebo použít tento soubor sestavení ANT.
Zabezpečené aplikace
Aplikace Java běžící v App Service mají stejnou sadu osvědčených postupů zabezpečení jako u jiných aplikací.
Ověřování uživatelů (snadné ověřování)
Pomocí možnosti ověřování a autorizace nastavte ověřování aplikací v Azure Portal. odtud můžete povolit ověřování pomocí Azure Active Directory nebo přes sociální přihlášení, jako je Facebook, Google nebo GitHub. Konfigurace Azure Portal funguje pouze při konfiguraci jednoho poskytovatele ověřování. další informace najdete v tématu konfigurace aplikace App Service pro použití Azure Active Directory přihlášení a souvisejících článků pro jiné poskytovatele identity. Pokud potřebujete povolit více poskytovatelů přihlašování, postupujte podle pokynů v článku přizpůsobení přihlašování a přihlášení .
Java SE
vývojáři pružinového spouštění můžou pomocí Azure Active Directory pružiny boot starter zabezpečit aplikace pomocí známých poznámek a rozhraní api pro zabezpečení pružiny. Nezapomeňte zvětšit maximální velikost hlavičky v souboru Application. Properties . Navrhneme hodnotu 16384 .
Tomcat
Vaše aplikace Tomcat může získat přístup k deklaracím uživatele přímo z servlet přetypování objektu zabezpečení na objekt mapy. Objekt mapy bude mapovat jednotlivé typy deklarací na kolekci deklarací pro daný typ. V následujícím kódu request je instance HttpServletRequest .
Map<String, Collection<String>> map = (Map<String, Collection<String>>) request.getUserPrincipal();
Nyní můžete zkontrolovat Map objekt pro všechny konkrétní deklarace identity. Například následující fragment kódu projde všechny typy deklarací a vytiskne obsah každé kolekce.
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);
}
}
}
Chcete-li se odhlásit uživatele, použijte /.auth/ext/logout cestu. Chcete-li provést další akce, přečtěte si dokumentaci k přizpůsobení přihlašování a odhlašování. K dispozici je také oficiální dokumentace k rozhraní Tomcat HttpServletRequest a jeho metodám. V závislosti na konfiguraci App Service jsou také vycházející následující metody servlet:
public boolean isSecure()
public String getRemoteAddr()
public String getRemoteHost()
public String getScheme()
public int getServerPort()
Chcete-li tuto funkci zakázat, vytvořte nastavení aplikace s názvem WEBSITE_AUTH_SKIP_PRINCIPAL s hodnotou 1 . Chcete-li zakázat všechny filtry servlet přidané App Service, vytvořte nastavení s názvem WEBSITE_SKIP_FILTERS s hodnotou 1 .
Konfigurace TLS/SSL
Podle pokynů v části zabezpečení vlastního názvu DNS s vazbou TLS/SSL v Azure App Service Nahrajte stávající certifikát TLS/SSL a vytvořte jeho vazbu s názvem domény vaší aplikace. Ve výchozím nastavení bude vaše aplikace pořád umožňovat připojení HTTP – použijte konkrétní postup v tomto kurzu, který vynutil protokol TLS/SSL.
Použití odkazů na Trezor klíčů
Azure webtrezor poskytuje centralizovanou správu tajných kódů pomocí zásad přístupu a historie auditu. Do trezoru klíčů můžete ukládat tajné kódy (například hesla nebo připojovací řetězce) a přistupovat k nim ve vaší aplikaci pomocí proměnných prostředí.
Nejdřív postupujte podle pokynů pro udělení přístupu aplikace Key Vault a Vytvoření odkazu trezoru klíčů pro váš tajný klíč v nastavení aplikace. Můžete ověřit, že se odkaz na tajný kód přeloží vytištěním proměnné prostředí a vzdáleným přístupem k App Service terminálu.
Pro vložení těchto tajných kódů do konfiguračního souboru jarní nebo Tomcat použijte syntaxi injektáže proměnné prostředí ( ${MY_ENV_VAR} ). Informace o konfiguračních souborech pružiny najdete v této dokumentaci týkající se externěnakonfigurovaných konfigurací.
Použití úložiště klíčů Java
Ve výchozím nastavení se všechny veřejné nebo privátní certifikáty nahrané do App Service Linux načtou do příslušných úložišť klíčů Java jako kontejner se spustí. Po nahrání certifikátu bude potřeba restartovat App Service, aby se načetla do úložiště klíčů Java. Veřejné certifikáty jsou načteny do úložiště klíčů na portálu $JAVA_HOME/jre/lib/security/cacerts a soukromé certifikáty jsou uloženy v $JAVA_HOME/lib/security/client.jks .
Pro šifrování připojení JDBC k certifikátům v úložišti klíčů Java může být potřeba další konfigurace. Informace o zvoleném ovladači JDBC najdete v dokumentaci.
Inicializace úložiště klíčů Java
Chcete-li inicializovat import java.security.KeyStore objekt, načtěte soubor úložiště klíčů pomocí hesla. Výchozí heslo pro obě úložiště klíčů je changeit .
KeyStore keyStore = KeyStore.getInstance("jks");
keyStore.load(
new FileInputStream(System.getenv("JAVA_HOME")+"/lib/security/cacets"),
"changeit".toCharArray());
KeyStore keyStore = KeyStore.getInstance("pkcs12");
keyStore.load(
new FileInputStream(System.getenv("JAVA_HOME")+"/lib/security/client.jks"),
"changeit".toCharArray());
Ruční načtení úložiště klíčů
Certifikáty můžete načíst ručně do úložiště klíčů. Vytvořte nastavení aplikace SKIP_JAVA_KEYSTORE_LOAD s hodnotou, 1 která zakáže App Service načtení certifikátů do úložiště klíčů automaticky. Všechny veřejné certifikáty nahrané do App Service přes Azure Portal jsou uložené v části /var/ssl/certs/ . Privátní certifikáty jsou uloženy v části /var/ssl/private/ .
Nástroj Java Key můžete interagovat nebo ladit otevřením připojení SSH k vašemu App Service a spuštěním příkazu keytool . Seznam příkazů najdete v dokumentaci k nástroji Key . Další informace o rozhraní API úložiště klíčů najdete v oficiální dokumentaci.
Konfigurace platforem APM
V této části se dozvíte, jak připojit aplikace Java nasazené v Azure App Service s využitím Azure Monitor platforem Application Insights, NewRelic a AppDynamics Application Performance Monitoring (APM).
Konfigurace Application Insights
Azure Monitor Application Insights je cloudová služba pro monitorování aplikací, která zákazníkům umožňuje sledovat selhání, problémová místa a vzorce použití ke zlepšení výkonu aplikace a omezení střední doby řešení (MTTR). S několika kliknutími nebo příkazy rozhraní příkazového řádku můžete povolit monitorování pro aplikace Node.js nebo Java, automatické shromažďování protokolů, metriky a distribuované trasování, které eliminují nutnost zahrnutí sady SDK do aplikace.
portál Azure
pokud chcete Application Insights z Azure Portal povolit, přejděte na Application Insights na levé straně a vyberte zapnout Application Insights. Ve výchozím nastavení se použije nový prostředek Application Insights se stejným názvem, jako má vaše webová aplikace. Můžete zvolit použití existujícího prostředku Application Insights nebo změnit jeho název. V dolní části klikněte na použít .
Azure CLI
pokud chcete povolit rozhraní příkazového řádku Azure, budete muset vytvořit prostředek Application Insights a nastavit několik nastavení aplikace v Azure Portal a připojit Application Insights k vaší webové aplikaci.
povolení rozšíření Přehledy aplikací
az extension add -n application-insightspomocí níže uvedeného příkazu rozhraní příkazového řádku vytvořte prostředek Application Insights. Zástupné symboly nahraďte požadovaným názvem prostředku a skupinou.
az monitor app-insights component create --app <resource-name> -g <resource-group> --location westus2 --kind web --application-type webPoznamenejte si hodnoty pro
connectionStringainstrumentationKey, budete potřebovat tyto hodnoty v dalším kroku.Chcete-li načíst seznam jiných umístění, spusťte příkaz
az account list-locations.
Nastavte klíč instrumentace, připojovací řetězec a verzi agenta monitorování jako nastavení aplikace ve webové aplikaci.
<instrumentationKey>Hodnoty a nahraďte<connectionString>hodnotami z předchozího kroku.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"
Nastavte klíč instrumentace, připojovací řetězec a verzi agenta monitorování jako nastavení aplikace ve webové aplikaci.
<instrumentationKey>Hodnoty a nahraďte<connectionString>hodnotami z předchozího kroku.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"
Konfigurovat nové Relic
Vytvoření účtu NewRelic na NewRelic.com
Stáhněte si agenta Java ze NewRelic, bude mít název souboru podobný newrelic-java-x.x.x.zip.
Zkopírujte licenční klíč, budete ho potřebovat ke konfiguraci agenta později.
Do své instance App Service a vytvořte nový adresář /Home/site/wwwroot/APM.
Upload nezabalených souborů agenta Java NewRelic do adresáře pod /home/site/wwwroot/apm. Soubory pro vašeho agenta by měly být v /Home/site/wwwroot/APM/NewRelic.
Upravte soubor YAML na /Home/site/wwwroot/APM/NewRelic/NewRelic.yml a nahraďte hodnotu licence zástupného symbolu vlastním licenčním klíčem.
V Azure Portal přejděte do aplikace v App Service a vytvořte nové nastavení aplikace.
- pro aplikace Java SE vytvořte proměnnou prostředí s názvem
JAVA_OPTSs hodnotou-javaagent:/home/site/wwwroot/apm/newrelic/newrelic.jar. - Pro Tomcat Vytvořte proměnnou prostředí s názvem
CATALINA_OPTSs hodnotou-javaagent:/home/site/wwwroot/apm/newrelic/newrelic.jar.
- pro aplikace Java SE vytvořte proměnnou prostředí s názvem
Vytvoření účtu NewRelic na NewRelic.com
Stáhněte si agenta Java ze NewRelic, bude mít název souboru podobný newrelic-java-x.x.x.zip.
Zkopírujte licenční klíč, budete ho potřebovat ke konfiguraci agenta později.
Do své instance App Service a vytvořte nový adresář /Home/site/wwwroot/APM.
Upload nezabalených souborů agenta Java NewRelic do adresáře pod /home/site/wwwroot/apm. Soubory pro vašeho agenta by měly být v /Home/site/wwwroot/APM/NewRelic.
Upravte soubor YAML na /Home/site/wwwroot/APM/NewRelic/NewRelic.yml a nahraďte hodnotu licence zástupného symbolu vlastním licenčním klíčem.
V Azure Portal přejděte do aplikace v App Service a vytvořte nové nastavení aplikace.
- pro aplikace Java SE vytvořte proměnnou prostředí s názvem
JAVA_OPTSs hodnotou-javaagent:/home/site/wwwroot/apm/newrelic/newrelic.jar. - Pro Tomcat Vytvořte proměnnou prostředí s názvem
CATALINA_OPTSs hodnotou-javaagent:/home/site/wwwroot/apm/newrelic/newrelic.jar.
- pro aplikace Java SE vytvořte proměnnou prostředí s názvem
Pokud již máte proměnnou prostředí pro
JAVA_OPTSneboCATALINA_OPTS, přidejte-javaagent:/...možnost na konec aktuální hodnoty.
Konfigurace AppDynamics
Vytvoření účtu AppDynamics na AppDynamics.com
Stáhněte si agenta Java z webu AppDynamics, název souboru bude podobný AppServerAgent-x.x.x.xxxxx.zip
Pomocí konzoly Kudu vytvořte nový adresář /Home/site/wwwroot/APM.
Upload soubory agenta Java do adresáře pod položkou /home/site/wwwroot/apm. Soubory pro vašeho agenta by měly být v /Home/site/wwwroot/APM/AppDynamics.
V Azure Portal přejděte do aplikace v App Service a vytvořte nové nastavení aplikace.
- u aplikací Java SE vytvořte proměnnou prostředí s názvem
JAVA_OPTSs hodnotou-javaagent:/home/site/wwwroot/apm/appdynamics/javaagent.jar -Dappdynamics.agent.applicationName=<app-name>, kde<app-name>je váš App Service název. - Pro aplikace Tomcat Vytvořte proměnnou prostředí s názvem
CATALINA_OPTSs hodnotou-javaagent:/home/site/wwwroot/apm/appdynamics/javaagent.jar -Dappdynamics.agent.applicationName=<app-name>, kde<app-name>je váš App Service název.
- u aplikací Java SE vytvořte proměnnou prostředí s názvem
Vytvoření účtu AppDynamics na AppDynamics.com
Stáhněte si agenta Java z webu AppDynamics, název souboru bude podobný AppServerAgent-x.x.x.xxxxx.zip
Do své instance App Service a vytvořte nový adresář /Home/site/wwwroot/APM.
Upload soubory agenta Java do adresáře pod položkou /home/site/wwwroot/apm. Soubory pro vašeho agenta by měly být v /Home/site/wwwroot/APM/AppDynamics.
V Azure Portal přejděte do aplikace v App Service a vytvořte nové nastavení aplikace.
- u aplikací Java SE vytvořte proměnnou prostředí s názvem
JAVA_OPTSs hodnotou-javaagent:/home/site/wwwroot/apm/appdynamics/javaagent.jar -Dappdynamics.agent.applicationName=<app-name>, kde<app-name>je váš App Service název. - Pro aplikace Tomcat Vytvořte proměnnou prostředí s názvem
CATALINA_OPTSs hodnotou-javaagent:/home/site/wwwroot/apm/appdynamics/javaagent.jar -Dappdynamics.agent.applicationName=<app-name>, kde<app-name>je váš App Service název.
- u aplikací Java SE vytvořte proměnnou prostředí s názvem
Poznámka
Pokud již máte proměnnou prostředí pro JAVA_OPTS nebo CATALINA_OPTS , přidejte -javaagent:/... možnost na konec aktuální hodnoty.
Konfigurace zdrojů dat
Java SE
Pro připojení ke zdrojům dat v aplikacích pro pružinové spouštění doporučujeme vytvořit připojovací řetězce a vložit je do souboru . Properties .
V části "konfigurace" na stránce App Service nastavte název řetězce, vložte připojovací řetězec JDBC do pole hodnota a nastavte typ na Custom (vlastní). Volitelně můžete nastavit tento připojovací řetězec jako nastavení slotu.
Tento připojovací řetězec je pro naši aplikaci přístupný jako proměnná prostředí s názvem
CUSTOMCONNSTR_<your-string-name>. Například připojovací řetězec, který jsme vytvořili výše, bude pojmenovánCUSTOMCONNSTR_exampledb.V souboru Application. Properties , odkazujte na tento připojovací řetězec s názvem proměnné prostředí. V našem příkladu bychom použili následující.
app.datasource.url=${CUSTOMCONNSTR_exampledb}
Další informace o tomto tématu najdete v dokumentaci ke jarnímu spuštění při přístupu k datům a v externích konfiguracích .
Tomcat
Tyto pokyny platí pro všechna databázová připojení. Zástupné symboly budete muset vyplnit pomocí názvu třídy ovladače zvolené databáze a souboru JAR. Poskytuje se tabulka s názvy tříd a stahování ovladačů pro běžné databáze.
| databáze | Název třídy ovladače | Ovladač JDBC |
|---|---|---|
| PostgreSQL | org.postgresql.Driver |
Stáhnout |
| MySQL | com.mysql.jdbc.Driver |
Stáhnout (vyberte "nezávislé na platformě") |
| SQL Server | com.microsoft.sqlserver.jdbc.SQLServerDriver |
Stáhnout |
Chcete-li nakonfigurovat Tomcat pro použití JDBC (Java Database Connectivity) nebo rozhraní Java Persistence (JPA), nejprve upravte CATALINA_OPTS proměnnou prostředí, která je čtena nástrojem Tomcat při spuštění. Nastavte tyto hodnoty pomocí nastavení aplikace v modulu plug-in App Service Maven:
<appSettings>
<property>
<name>CATALINA_OPTS</name>
<value>"$CATALINA_OPTS -Ddbuser=${DBUSER} -Ddbpassword=${DBPASSWORD} -DconnURL=${CONNURL}"</value>
</property>
</appSettings>
nebo nastavte proměnné prostředí na stránce Nastavení konfigurační > aplikace v Azure Portal.
Dále určete, zda má být zdroj dat k dispozici pro jednu aplikaci nebo pro všechny aplikace běžící na Tomcat servlet.
Zdroje dat na úrovni aplikace
Vytvořte soubor context.xml v adresáři META-INF nebo v adresáři vašeho projektu. Pokud neexistuje, vytvořte soubor META-INF nebo s adresářem.
V context.xml přidejte
Contextprvek pro propojení zdroje dat s adresou JNDI.driverClassNameZástupný symbol nahraďte názvem třídy vašeho ovladače z tabulky výše.<Context> <Resource name="jdbc/dbconnection" type="javax.sql.DataSource" url="${dbuser}" driverClassName="<insert your driver class name>" username="${dbpassword}" password="${connURL}" /> </Context>Aktualizujte web.xml vaší aplikace tak, aby používala zdroj dat ve vaší aplikaci.
<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>
Sdílené prostředky na úrovni serveru
instalace Tomcat na App Service na Windows existují ve sdíleném prostoru v plánu App Service. Nemůžete přímo upravit instalaci Tomcat pro konfiguraci na úrovni serveru. Pokud chcete provést změny konfigurace na úrovni serveru pro instalaci Tomcat, musíte zkopírovat Tomcat do místní složky, ve které můžete upravit konfiguraci Tomcat.
Automatizace vytváření vlastních Tomcat při spuštění aplikace
Pomocí spouštěcího skriptu můžete provádět akce před spuštěním webové aplikace. Spouštěcí skript pro přizpůsobení Tomcat musí provést následující kroky:
- Ověřte, zda již byl Tomcat zkopírován a nakonfigurován místně. V takovém případě může spouštěcí skript končit.
- Zkopírujte Tomcat místně.
- Proveďte požadované změny konfigurace.
- Označuje, že konfigurace byla úspěšně dokončena.
u Windows lokalit vytvořte soubor s názvem startup.cmd nebo startup.ps1 v wwwroot adresáři. Tato akce bude provedena automaticky před spuštěním serveru Tomcat.
Tady je skript PowerShellu, který dokončí tyto kroky:
# 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 could not be 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
Transformace
Běžným případem použití pro přizpůsobení verze Tomcat je změna server.xml context.xml web.xml konfiguračních souborů, nebo Tomcat. App Service už tyto soubory upravuje, aby poskytovaly funkce platformy. Chcete-li tyto funkce nadále používat, je důležité zachovat obsah těchto souborů při provádění změn v nich. K tomu doporučujeme použít transformaci XSL (XSLT). Použijte transformaci XSL k provedení změn souborů XML při zachování původního obsahu souboru.
Příklad souboru XSLT
Tato příklad transformace přidá nový uzel konektoru do server.xml . Poznamenejte si transformaci identity, která zachovává původní obsah souboru.
<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 is 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 is 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"
keystroreFile="${{user.home}}/.keystore" keystorePass="changeit"
clientAuth="false" sslProtocol="TLS" />
</xsl:template>
</xsl:stylesheet>
Funkce pro transformaci XSL
Prostředí PowerShell obsahuje integrované nástroje pro transformaci souborů XML pomocí transformací XSL. Následující skript je ukázková funkce, kterou můžete použít v startup.ps1 k provedení transformace:
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
}
Nastavení aplikace
Tato platforma taky potřebuje, abyste věděli, kde je nainstalovaná vaše vlastní verze Tomcat. Umístění instalace můžete nastavit v CATALINA_BASE nastavení aplikace.
Ke změně tohoto nastavení můžete použít rozhraní příkazového řádku Azure:
az webapp config appsettings set -g $MyResourceGroup -n $MyUniqueApp --settings CATALINA_BASE="%LOCAL_EXPANDED%\tomcat"
Případně můžete ručně změnit nastavení v Azure Portal:
- přejít na Nastavení > konfigurační > nastavení aplikace.
- Vyberte Nové nastavení aplikace.
- Pomocí těchto hodnot můžete vytvořit nastavení:
- Název:
CATALINA_BASE - Hodnota:
"%LOCAL_EXPANDED%\tomcat"
- Název:
Příklad startup.ps1
Následující ukázkový skript zkopíruje vlastní Tomcat do místní složky, provede transformaci XSL a indikuje, že transformace byla úspěšná:
# 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 could not be 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
}
Dokončit konfiguraci
Nakonec umístíme jar ovladače do cesty pro Tomcat a restartujete App Service. Zajistěte, aby byly soubory ovladače JDBC k dispozici pro classloader Tomcat, a to jejich umístěním do adresáře /Home/Tomcat/lib . (Pokud tento adresář ještě neexistuje, vytvořte ho.) Chcete-li odeslat tyto soubory do instance App Service, proveďte následující kroky:
V Cloud Shellnainstalujte rozšíření WebApp:
az extension add -–name webappSpuštěním následujícího příkazu rozhraní příkazového řádku vytvořte tunel SSH z místního systému, který chcete App Service:
az webapp remote-connection create --resource-group <resource-group-name> --name <app-name> --port <port-on-local-machine>pomocí klienta SFTP Připojení na port místního tunelového propojení a nahrajte soubory do složky /home/tomcat/lib .
Alternativně můžete k nahrání ovladače JDBC použít klienta FTP. Při získávání přihlašovacích údajů k FTPpostupujte podle těchto pokynů.
Tomcat
Tyto pokyny platí pro všechna databázová připojení. Zástupné symboly budete muset vyplnit pomocí názvu třídy ovladače zvolené databáze a souboru JAR. Poskytuje se tabulka s názvy tříd a stahování ovladačů pro běžné databáze.
| databáze | Název třídy ovladače | Ovladač JDBC |
|---|---|---|
| PostgreSQL | org.postgresql.Driver |
Stáhnout |
| MySQL | com.mysql.jdbc.Driver |
Stáhnout (vyberte "nezávislé na platformě") |
| SQL Server | com.microsoft.sqlserver.jdbc.SQLServerDriver |
Stáhnout |
Chcete-li nakonfigurovat Tomcat pro použití JDBC (Java Database Connectivity) nebo rozhraní Java Persistence (JPA), nejprve upravte CATALINA_OPTS proměnnou prostředí, která je čtena nástrojem Tomcat při spuštění. Nastavte tyto hodnoty pomocí nastavení aplikace v modulu plug-in App Service Maven:
<appSettings>
<property>
<name>CATALINA_OPTS</name>
<value>"$CATALINA_OPTS -Ddbuser=${DBUSER} -Ddbpassword=${DBPASSWORD} -DconnURL=${CONNURL}"</value>
</property>
</appSettings>
nebo nastavte proměnné prostředí na stránce Nastavení konfigurační > aplikace v Azure Portal.
Dále určete, zda má být zdroj dat k dispozici pro jednu aplikaci nebo pro všechny aplikace běžící na Tomcat servlet.
Zdroje dat na úrovni aplikace
Vytvořte soubor context.xml v adresáři META-INF nebo v adresáři vašeho projektu. Pokud neexistuje, vytvořte soubor META-INF nebo s adresářem.
V context.xml přidejte
Contextprvek pro propojení zdroje dat s adresou JNDI.driverClassNameZástupný symbol nahraďte názvem třídy vašeho ovladače z tabulky výše.<Context> <Resource name="jdbc/dbconnection" type="javax.sql.DataSource" url="${dbuser}" driverClassName="<insert your driver class name>" username="${dbpassword}" password="${connURL}" /> </Context>Aktualizujte web.xml vaší aplikace tak, aby používala zdroj dat ve vaší aplikaci.
<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>
Sdílené prostředky na úrovni serveru
Přidání sdíleného zdroje dat na úrovni serveru bude vyžadovat, abyste upravili server.xml Tomcat. Nejdřív nahrajte spouštěcí skript a nastavte cestu ke skriptu v příkazu Konfigurace > při spuštění. Spouštěcí skript můžete nahrát pomocí FTP.
Spouštěcí skript vytvoří transformaci XSL do souboru server.xml a výstup výsledného souboru XML do /usr/local/tomcat/conf/server.xml . Spouštěcí skript by měl nainstalovat libxslt přes APK. Soubor XSL a spouštěcí skript je možné nahrávat prostřednictvím FTP. Níže je příklad spouštěcího skriptu.
# 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
Příklad souboru XSL je uveden níže. Vzorový soubor XSL přidá nový uzel konektoru do Tomcat server.xml.
<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 is 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 is 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"
keystroreFile="${{user.home}}/.keystore" keystorePass="changeit"
clientAuth="false" sslProtocol="TLS" />
</xsl:template>
</xsl:stylesheet>
Dokončit konfiguraci
Nakonec umístěte jar ovladače do cesty pro Tomcat a restartujte App Service.
Zajistěte, aby byly soubory ovladače JDBC k dispozici pro classloader Tomcat, a to jejich umístěním do adresáře /Home/Tomcat/lib . (Pokud tento adresář ještě neexistuje, vytvořte ho.) Chcete-li odeslat tyto soubory do instance App Service, proveďte následující kroky:
- V Cloud Shellnainstalujte rozšíření WebApp:
az extension add -–name webapp- Spuštěním následujícího příkazu rozhraní příkazového řádku vytvořte tunel SSH z místního systému, který chcete App Service:
az webapp remote-connection create --resource-group <resource-group-name> --name <app-name> --port <port-on-local-machine>- pomocí klienta SFTP Připojení na port místního tunelového propojení a nahrajte soubory do složky /home/tomcat/lib .
Alternativně můžete k nahrání ovladače JDBC použít klienta FTP. Při získávání přihlašovacích údajů k FTPpostupujte podle těchto pokynů.
Pokud jste vytvořili zdroj dat na úrovni serveru, restartujte aplikaci App Service Linux. Tomcat se obnoví
CATALINA_BASE/home/tomcata použije aktualizovanou konfiguraci.
JBoss EAP
Existují tři základní kroky při registraci zdroje dat pomocí protokolu JBoss EAP: nahrání ovladače JDBC, přidání ovladače JDBC jako modulu a registrace modulu. App Service je Bezstavová hostitelská služba, takže konfigurační příkazy pro přidání a registraci modulu zdroje dat musí být spouštěny pomocí skriptů a aplikovány při spuštění kontejneru.
Získejte ovladač JDBC vaší databáze.
Vytvořte soubor definice modulu XML pro ovladač JDBC. Níže zobrazený příklad je definice modulu pro PostgreSQL.
<?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>Příkazy rozhraní příkazového řádku JBoss umístěte do souboru s názvem
jboss-cli-commands.cli. Příkazy JBoss musí přidat modul a zaregistrovat ho jako zdroj dat. Následující příklad ukazuje příkazy rozhraní příkazového řádku JBoss pro PostgreSQL.#!/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.PostgreSQLValidConnectionCheckerVytvořte spouštěcí skript,
startup_script.shkterý bude volat příkazy rozhraní příkazového řádku JBoss. Následující příklad ukazuje, jak zavolatjboss-cli-commands.cli. Později nakonfigurujete App Service pro spuštění tohoto skriptu při spuštění kontejneru.$JBOSS_HOME/bin/jboss-cli.sh --connect --file=/home/site/deployments/tools/jboss-cli-commands.cliPomocí klienta FTP podle vašeho výběru nahrajte ovladač JDBC, , a
jboss-cli-commands.clistartup_script.shdefinici modulu do/site/deployments/tools/.Nakonfigurujte lokalitu tak,
startup_script.shaby se spouštěl při spuštění kontejneru. V části Azure Portal na Configuration > General (Obecné konfigurace) Nastavení Startup Command > (Spouštěcí příkaz). Pole spouštěcího příkazu nastavte na/home/site/deployments/tools/startup_script.sh. Uložte změny.
Pokud chcete ověřit, že se zdroj dat přidal na server JBoss, stáhněte do webové aplikace SSH a spusťte $JBOSS_HOME/bin/jboss-cli.sh --connect příkaz . Po připojení k JBoss spusťte , /subsystem=datasources:read-resource aby se vytiskl seznam zdrojů dat.
robots933456 v protokolech
V protokolech kontejneru se může zobrazit následující zpráva:
2019-04-08T14:07:56.641002476Z "-" - - [08/Apr/2019:14:07:56 +0000] "GET /robots933456.txt HTTP/1.1" 404 415 "-" "-"
Tuto zprávu klidně ignorujte. /robots933456.txt je fiktivní cesta URL, kterou App Service používá ke kontrole, jestli kontejner dokáže obsloužit požadavky. Odpověď 404 jednoduše indikuje, že příslušná cesta neexistuje, ale dá službě App Service vědět, že kontejner je v pořádku a je připravený reagovat na požadavky.
Volba verze modulu runtime Java
App Service umožňuje uživatelům zvolit hlavní verzi prostředí JVM, jako je Java 8 nebo Java 11, a podverza, například 1.8.0_232 nebo 11.0.5. Můžete také zvolit, aby se podververce automaticky aktualizovala, jakmile budou k dispozici nové dílčí verze. Ve většině případů by produkční lokality měly používat připnuté dílčí verze prostředí JVM. Tím se zabrání neočekávaným výpadkům během automatické aktualizace podverže. Všechny webové aplikace v Javě používají 64bitové prostředí JVM, toto není konfigurovatelné.
Pokud se rozhodnete připnout podverii, budete muset podververi prostředí JVM pravidelně aktualizovat v lokalitě. Pokud chcete zajistit, aby vaše aplikace běží na novější podverici, vytvořte pracovní slot a zvyšte podverici na pracovní lokalitě. Jakmile potvrdíte, že aplikace funguje správně pro novou podverii, můžete prohodit pracovní a produkční sloty.
JBoss EAP App Service Plans
JBoss EAP je k dispozici pouze u typů Premium v3 a Isolated v2 App Service Plány. Zákazníci, kteří ve verzi Public Preview vytvořili web JBoss EAP na jiné úrovni, by měli škálovat na Premium nebo izolovaný hardware, aby se vyhnuli neočekávanému chování.
Příkaz k podpoře modulu runtime Javy
Verze a údržba sady JDK
Podporovaná sada Java Development Kit (JDK) pro Azure je zulu poskytovaná prostřednictvím Azul Systems. Sestavení Sady Azul Zulu Enterprise sady OpenJDK jsou nenáročná multiplatformní distribuce sady OpenJDK pro produkční prostředí pro Azure a Azure Stack s využitím Microsoftu a Azul Systems. Obsahuje všechny komponenty pro vytváření a spouštění aplikací Java SE. JDK můžete nainstalovat z instalace sady Java JDK.
Aktualizace hlavní verze budou k dispozici prostřednictvím nových možností modulu runtime v Azure App Service. Zákazníci aktualizují na tyto novější verze Javy tím, že App Service nasazení a zodpovídají za testování a zajištění, aby hlavní aktualizace splňovala jejich potřeby.
Podporované JDK se každý rok automaticky opravují čtvrtletně v lednu, dubnu, červenci a říjnu. Další informace o Javě v Azure najdete v tomto dokumentu podpory.
Aktualizace zabezpečení
Opravy a opravy pro hlavní ohrožení zabezpečení budou vydány, jakmile budou k dispozici ve společnosti Azul Systems. "Hlavní" ohrožení zabezpečení je definováno základním skóre 9.0 nebo vyšším v systému NIST Common Vulnerability Scoring System verze 2.
Tomcat 8.0 dosáhl ke konci životnosti (EOL) k 30. září 2018. Přestože je modul runtime stále dostupný Azure App Service, Azure nebude pro Tomcat 8.0 instalovat aktualizace zabezpečení. Pokud je to možné, migrujte své aplikace na Tomcat 8.5 nebo 9.0. Tomcat 8.5 i 9.0 jsou k dispozici na Azure App Service. Další informace najdete na oficiálním webu Tomcat.
Vyřazení a vyřazení
Pokud se podporovaný modul runtime Java vyřazen z provozu, vývojářům Azure, kteří používají ovlivněný modul runtime, se alespoň šest měsíců před vyřazeným z provozu zobrazí oznámení o vyřazení modulu runtime z provozu.
Místní vývoj
Vývojáři si mohou stáhnout verzi Production Edition sady Azul Zulu Enterprise JDK pro místní vývoj z webu azul ke stažení.
Podpora vývoje
Podpora produktů azul Zulu JDK podporovaných v Azure je k dispozici prostřednictvím Microsoftu při vývoji pro Azure nebo Azure Stack s kvalifikovaným plánem podpora Azure.
Další kroky
Navštivte Centrum pro vývojáře v Javě, kde najdete rychlé starty, kurzy a referenční dokumentaci k Javě v Azure.