Nasazení aplikace Spring do služby App Service pomocí MySQL
Poznámka:
Pro aplikace Spring doporučujeme používat Azure Spring Apps. Službu Aplikace Azure však můžete použít jako cíl. Další informace najdete v tématu Volba správných služeb Azure pro vaše aplikace v Javě.
Tento kurz vás provede sestavením, konfigurací, nasazením, řešením problémů a škálováním webových aplikací v jazyce Java ve službě App Service využívající Linux.
Základem tohoto kurzu je populární ukázková aplikace Spring s názvem PetClinic. V tomto tématu otestujete verzi HSQLDB aplikace místně a pak ji nasadíte do služby Aplikace Azure Service. Potom nakonfigurujete a nasadíte verzi, která používá Azure Database for MySQL. Nakonec se dozvíte, jak získat přístup k protokolům aplikace a horizontální navýšením kapacity tím, že zvýšíte počet pracovních procesů, na kterých běží vaše aplikace.
Požadavky
Získání ukázky
Pokud chcete začít s ukázkovou aplikací, pomocí následujících příkazů naklonujte a připravte zdrojové úložiště.
git clone https://github.com/spring-petclinic/spring-framework-petclinic.git
cd spring-framework-petclinic
Místní sestavení a spuštění ukázky HSQLDB
Nejprve ukázku otestujeme místně pomocí HSQLDB jako databáze.
Sestavte verzi HSQLDB ukázkové aplikace.
mvn package
Dále nastavte proměnnou prostředí TOMCAT_HOME na umístění vaší instalace Tomcat.
export TOMCAT_HOME=<Tomcat install directory>
Potom aktualizujte pom.xml soubor pro nasazení souboru WAR. Přidejte následující kód XML tak, aby byl podřízený existujícímu elementu <plugins>
. V případě potřeby přejděte 1.9.11
na aktuální verzi modulu plug-in Cargo Maven 3.
<plugin>
<groupId>org.codehaus.cargo</groupId>
<artifactId>cargo-maven3-plugin</artifactId>
<version>1.9.11</version>
<configuration>
<container>
<containerId>tomcat9x</containerId>
<type>installed</type>
<home>${TOMCAT_HOME}</home>
</container>
<configuration>
<type>existing</type>
<home>${TOMCAT_HOME}</home>
</configuration>
<deployables>
<deployable>
<groupId>${project.groupId}</groupId>
<artifactId>${project.artifactId}</artifactId>
<type>war</type>
<properties>
<context>/</context>
</properties>
</deployable>
</deployables>
</configuration>
</plugin>
S touto konfigurací můžete aplikaci nasadit místně do služby Tomcat.
mvn cargo:deploy
Pak spusťte Tomcat.
${TOMCAT_HOME}/bin/catalina.sh run
V prohlížeči teď můžete přechodem na adresu http://localhost:8080
zobrazit spuštěnou aplikaci a zjistit, jak funguje. Až budete hotovi, vyberte Ctrl+C na příkazovém řádku Bash a zastavte Tomcat.
Nasazení do Azure App Service
Teď, když jste aplikaci viděli běžet místně, ji nasadíme do Azure.
Nejprve nastavte následující proměnné prostředí. Pro REGION
, použití West US 2
nebo jiné oblasti najdete zde.
export RESOURCEGROUP_NAME=<resource group>
export WEBAPP_NAME=<web app>
export WEBAPP_PLAN_NAME=${WEBAPP_NAME}-appservice-plan
export REGION=<region>
Maven tyto hodnoty použije k vytvoření prostředků Azure s názvy, které zadáte. S využitím proměnných prostředí můžete tajné kódy účtu uchovávat mimo soubory projektu.
Pak úpravou souboru pom.xml nakonfigurujte Maven pro nasazení Azure. Za dříve přidaný element <plugin>
přidejte následující kód XML. V případě potřeby změňte 2.5.0
na aktuální verzi modulu plug-in Maven pro Azure App Service.
<plugin>
<groupId>com.microsoft.azure</groupId>
<artifactId>azure-webapp-maven-plugin</artifactId>
<version>2.5.0</version>
<configuration>
<schemaVersion>v2</schemaVersion>
<subscriptionId>${SUBSCRIPTION_ID}</subscriptionId>
<resourceGroup>${RESOURCEGROUP_NAME}</resourceGroup>
<appName>${WEBAPP_NAME}</appName>
<region>${REGION}</region>
<pricingTier>P1v2</pricingTier>
<runtime>
<os>Linux</os>
<javaVersion>Java 8</javaVersion>
<webContainer>TOMCAT 9.0</webContainer>
</runtime>
<deployment>
<resources>
<resource>
<directory>${project.basedir}/target</directory>
<includes>
<include>*.war</include>
</includes>
</resource>
</resources>
</deployment>
</configuration>
</plugin>
Dále se přihlaste k Azure.
az login
Pak aplikaci nasaďte do služby App Service využívající Linux.
mvn azure-webapp:deploy
Pokud chcete vidět spuštěnou aplikaci, můžete (po nahrazení <app-name>
) přejít na adresu https://<app-name>.azurewebsites.net
.
Nastavení služby Azure Database for MySQL
V dalším kroku přepneme z HSQLDB na MySQL. V Azure vytvoříme instanci serveru MySQL a přidáme databázi a následně aktualizujeme konfiguraci aplikace novými informacemi o připojení k databázi.
Nejprve nastavte následující proměnné prostředí, které se budou používat v dalších krocích.
export MYSQL_SERVER_NAME=<server>
export MYSQL_SERVER_FULL_NAME=${MYSQL_SERVER_NAME}.mysql.database.azure.com
export MYSQL_SERVER_ADMIN_LOGIN_NAME=<admin>
export MYSQL_SERVER_ADMIN_PASSWORD=<password>
export MYSQL_DATABASE_NAME=<database>
export DOLLAR=\$
Pak vytvořte a inicializujte databázový server. K počáteční konfiguraci použijte příkaz az mysql up. Příkazem az mysql server configuration set prodlužte časový limit připojení a nastavte časové pásmo serveru.
az extension add --name db-up
az mysql up \
--resource-group ${RESOURCEGROUP_NAME} \
--server-name ${MYSQL_SERVER_NAME} \
--database-name ${MYSQL_DATABASE_NAME} \
--admin-user ${MYSQL_SERVER_ADMIN_LOGIN_NAME} \
--admin-password ${MYSQL_SERVER_ADMIN_PASSWORD}
az mysql server configuration set --name wait_timeout \
--resource-group ${RESOURCEGROUP_NAME} \
--server ${MYSQL_SERVER_NAME} --value 2147483
az mysql server configuration set --name time_zone \
--resource-group ${RESOURCEGROUP_NAME} \
--server ${MYSQL_SERVER_NAME} --value=-8:00
Pak se pomocí rozhraní příkazového řádku MySQL připojte k databázi v Azure.
mysql -u ${MYSQL_SERVER_ADMIN_LOGIN_NAME}@${MYSQL_SERVER_NAME} \
-h ${MYSQL_SERVER_FULL_NAME} -P 3306 -p
Na příkazovém řádku MySQL spusťte následující příkaz, který ověří vaši databázi s názvem se stejnou hodnotou, kterou jste zadali dříve pro proměnnou MYSQL_DATABASE_NAME
prostředí.
show databases;
MySQL je teď připraveno k použití.
Konfigurace aplikace pro MySQL
Dále přidáme informace o připojení k verzi MySQL aplikace a pak ji nasadíme do služby App Service.
Aktualizujte soubor pom.xml tak, aby byl MySQL aktivní konfigurací. <activation>
Odeberte prvek z profilu H2 a místo toho ho vložte do profilu MySQL, jak je znázorněno zde. Zbytek tohoto fragmentu kódu ukazuje existující konfiguraci. Všimněte si, jak Maven používá ke konfiguraci přístupu k MySQL dříve nastavené proměnné prostředí.
<profile>
<id>MySQL</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<db.script>mysql</db.script>
<jpa.database>MYSQL</jpa.database>
<jdbc.driverClassName>com.mysql.jdbc.Driver</jdbc.driverClassName>
<jdbc.url>jdbc:mysql://${DOLLAR}{MYSQL_SERVER_FULL_NAME}:3306/${DOLLAR}{MYSQL_DATABASE_NAME}?useUnicode=true</jdbc.url>
<jdbc.username>${DOLLAR}{MYSQL_SERVER_ADMIN_LOGIN_NAME}@${DOLLAR}{MYSQL_SERVER_FULL_NAME}</jdbc.username>
<jdbc.password>${DOLLAR}{MYSQL_SERVER_ADMIN_PASSWORD}</jdbc.password>
</properties>
...
</profile>
Pak úpravou souboru pom.xml nakonfigurujte Maven pro nasazení Azure a použití MySQL. Za dříve přidaný element <plugin>
přidejte následující kód XML. V případě potřeby změňte 2.5.0
na aktuální verzi modulu plug-in Maven pro Azure App Service.
<plugin>
<groupId>com.microsoft.azure</groupId>
<artifactId>azure-webapp-maven-plugin</artifactId>
<version>2.5.0</version>
<configuration>
<schemaVersion>v2</schemaVersion>
<subscriptionId>${SUBSCRIPTION_ID}</subscriptionId>
<resourceGroup>${RESOURCEGROUP_NAME}</resourceGroup>
<appName>${WEBAPP_NAME}</appName>
<region>${REGION}</region>
<pricingTier>P1v2</pricingTier>
<runtime>
<os>Linux</os>
<javaVersion>Java 8</javaVersion>
<webContainer>TOMCAT 9.0</webContainer>
</runtime>
<appSettings>
<property>
<name>MYSQL_SERVER_FULL_NAME</name>
<value>${MYSQL_SERVER_FULL_NAME}</value>
</property>
<property>
<name>MYSQL_SERVER_ADMIN_LOGIN_NAME</name>
<value>${MYSQL_SERVER_ADMIN_LOGIN_NAME}</value>
</property>
<property>
<name>MYSQL_SERVER_ADMIN_PASSWORD</name>
<value>${MYSQL_SERVER_ADMIN_PASSWORD}</value>
</property>
<property>
<name>MYSQL_DATABASE_NAME</name>
<value>${MYSQL_DATABASE_NAME}</value>
</property>
</appSettings>
<deployment>
<resources>
<resource>
<directory>${project.basedir}/target</directory>
<includes>
<include>*.war</include>
</includes>
</resource>
</resources>
</deployment>
</configuration>
</plugin>
Dále sestavte aplikaci a nasazením a spuštěním pomocí služby Tomcat ji místně otestujte.
mvn package
mvn cargo:deploy
${TOMCAT_HOME}/bin/catalina.sh run
Aplikaci si teď můžete místně prohlédnout na adrese http://localhost:8080
. Vzhled a chování aplikace bude stejné jako předtím, ale místo HSQLDB se bude používat Azure Database for MySQL. Až budete hotovi, vyberte Ctrl+C na příkazovém řádku Bash a zastavte Tomcat.
Nakonec aplikaci nasaďte do služby App Service.
mvn azure-webapp:deploy
Přechodem na adresu https://<app-name>.azurewebsites.net
teď můžete zobrazit spuštěnou aplikaci, která používá App Service a Azure Database for MySQL.
Přístup k protokolům aplikace
Pokud potřebujete řešit problémy, můžete se podívat do protokolů aplikace. K otevření vzdáleného streamu protokolu na místním počítači použijte následující příkaz.
az webapp log tail --name ${WEBAPP_NAME} \
--resource-group ${RESOURCEGROUP_NAME}
Až budete hotovi se zobrazením protokolů, zastavíte stream stisknutím kombinace kláves Ctrl+C.
Stream protokolu je dostupný také na adrese https://<app-name>.scm.azurewebsites.net/api/logstream
.
Horizontální navýšení kapacity
Zvýšený provoz směřující do aplikace můžete zvládnout horizontálním rozšířením kapacity pomocí následujícího příkazu.
az appservice plan update --number-of-workers 2 \
--name ${WEBAPP_PLAN_NAME} \
--resource-group ${RESOURCEGROUP_NAME}
Gratulujeme! Pomocí produktů Spring Framework, JSP, Spring Data, Hibernate, JDBC, App Service využívající Linux a Azure Database for MySQL jste sestavili webovou aplikaci v jazyce Java a horizontálně rozšířili její kapacitu.
Vyčištění prostředků
V předchozích částech jste vytvořili prostředky Azure ve skupině prostředků. Pokud předpokládáte, že už tyto prostředky nebudete používat, spuštěním následujícího příkazu tuto skupinu prostředků odstraňte.
az group delete --name ${RESOURCEGROUP_NAME}
Další kroky
Podívejte se na další možnosti konfigurace a CI/CD dostupné pro jazyk Java se službou App Service.