Spring-alkalmazás üzembe helyezése az App Service-ben a MySQL-lel
Feljegyzés
Spring-alkalmazások esetén az Azure Spring Apps használatát javasoljuk. Azonban továbbra is használhatja a Azure-alkalmazás szolgáltatást célként. További információ: A Java-alkalmazásokhoz megfelelő Azure-szolgáltatások kiválasztása.
Ez az oktatóanyag bemutatja a Java-webalkalmazások a Linuxos App Service-ben történő buildelését, konfigurálását, üzembe helyezését, hibaelhárítását és méretezését.
Ez az oktatóanyag a népszerű Spring PetClinic mintaalkalmazásra épül. Ebben a témakörben helyileg teszteli az alkalmazás HSQLDB-verzióját, majd üzembe helyezi azt Azure-alkalmazás Szolgáltatásban. Ezt követően konfigurálja és üzembe helyezi az Azure Database for MySQL-t használó verziót. Végül megtudhatja, hogyan férhet hozzá az alkalmazásnaplókhoz, és hogyan méretezheti fel az alkalmazást futtató feldolgozók számának növelésével.
Előfeltételek
Minta letöltése
A mintaalkalmazás használatba vételéhez klónozza és készítse elő a forrásadattárat az alábbi parancsokkal.
git clone https://github.com/spring-petclinic/spring-framework-petclinic.git
cd spring-framework-petclinic
A HSQLDB-minta helyi buildelése és futtatása
Először helyileg teszteljük a mintát a HSQLDB adatbázisként való használatával.
Hozza létre a mintaalkalmazás HSQLDB-verzióját.
mvn package
Ezután állítsa a TOMCAT_HOME környezeti változót a Tomcat-telepítés helyére.
export TOMCAT_HOME=<Tomcat install directory>
Ezután frissítse pom.xml fájlt a WAR-fájl üzembe helyezéséhez. Adja hozzá a következő XML-t gyermekként a meglévő <plugins>
elemhez. Szükség esetén váltson 1.9.11
a Cargo Maven 3 beépülő modul aktuális verziójára.
<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>
Ezzel a konfigurációval üzembe helyezheti helyileg az alkalmazást a Tomcatben.
mvn cargo:deploy
Ezután indítsa el a Tomcatet.
${TOMCAT_HOME}/bin/catalina.sh run
A böngészőben a http://localhost:8080
címen mostantól megtekintheti a futó alkalmazást, és megismerheti annak működését. Ha végzett, a Bash-parancssorban válassza a Ctrl+C billentyűkombinációt a Tomcat leállításához.
Üzembe helyezés az Azure App Service-ben
A helyi futás megtekintése után üzembe helyezheti az alkalmazást az Azure-ban.
Elsőként állítsa be az alábbi környezeti változókat. A REGION
, a használat West US 2
vagy más régiók itt találhatók.
export RESOURCEGROUP_NAME=<resource group>
export WEBAPP_NAME=<web app>
export WEBAPP_PLAN_NAME=${WEBAPP_NAME}-appservice-plan
export REGION=<region>
A Maven ezekkel az értékekkel hozza létre az Ön által megadott nevekkel rendelkező Azure-erőforrásokat. Környezeti változókkal nem kell a fiók titkos kódjait megosztania a projektfájlokkal.
Ezután frissítse a pom.xml fájlt úgy, hogy az Azure-beli üzembe helyezéshez konfigurálja a Mavent. Adja hozzá a következő XML-t a korábban hozzáadott <plugin>
elem után. Szükség esetén frissítse a Maven Plugin for Azure App Service2.5.0
-ás verzióját a jelenlegire.
<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>
Ezután jelentkezzen be az Azure-ba.
az login
Helyezze üzembe az alkalmazást a Linux App Service-ben.
mvn azure-webapp:deploy
Most már megnyithatja az https://<app-name>.azurewebsites.net
oldalt (az <app-name>
lecserélése után) a futó alkalmazás megtekintéséhez.
Az Azure Database for MySQL beállítása
Ezt követően a MySQL-t fogjuk használni a HSQLDB helyett. Létrehozunk egy MySQL-kiszolgálópéldányt az Azure-on, majd hozzáadunk egy adatbázist, és frissítjük az alkalmazáskonfigurációt az új adatbázis-kapcsolat adataival.
Elsőként állítsa be az alábbi környezeti változókat a későbbi használatra.
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=\$
Ezután hozza létre és inicializálja az adatbázis-kiszolgálót. Használja az az mysql up parancsot a kezdeti konfigurációhoz. Ezután az az mysql server configuration set paranccsal növelje a kapcsolati időtúllépést és állítsa be a kiszolgáló időzónáját.
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
Ezután a MySQL CLI használatával csatlakozzon az Azure-beli adatbázishoz.
mysql -u ${MYSQL_SERVER_ADMIN_LOGIN_NAME}@${MYSQL_SERVER_NAME} \
-h ${MYSQL_SERVER_FULL_NAME} -P 3306 -p
A MySQL CLI parancssorában futtassa a következő parancsot a környezeti változóhoz korábban megadott értékkel megegyező nevű adatbázis ellenőrzéséhez MYSQL_DATABASE_NAME
.
show databases;
A MySQL most már használatra kész.
Az alkalmazás konfigurálása a MYSQL-hez
A következőkben hozzáadjuk a kapcsolat adatait az alkalmazás MySQL-verziójához, majd üzembe helyezzük az App Service-ben.
Frissítse a pom.xml fájlt, hogy a MySQL legyen az aktív konfiguráció. Távolítsa el az <activation>
elemet a H2-profilból, és helyezze inkább a MySQL-profilba az itt látható módon. A kódrészlet többi része a meglévő konfigurációt mutatja. A Maven a korábban beállított környezeti változókkal konfigurálja a MySQL-hozzáférést.
<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>
Ezután frissítse a pom.xml fájlt úgy, hogy az Azure-beli üzembe helyezéshez és a MySQL-lel történő használathoz konfigurálja a Mavent. Adja hozzá a következő XML-t a korábban hozzáadott <plugin>
elem után. Szükség esetén frissítse a Maven Plugin for Azure App Service2.5.0
-ás verzióját a jelenlegire.
<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>
Ezután készítse el az alkalmazást, majd tesztelje helyileg a Tomcattel történő üzembe helyezéssel és teszteléssel.
mvn package
mvn cargo:deploy
${TOMCAT_HOME}/bin/catalina.sh run
Most már megtekintheti helyileg az alkalmazást a http://localhost:8080
címen. Az alkalmazás ugyanúgy fog kinézni és viselkedni, mint korábban, azonban a HSQLDB helyett az Azure Database for MySQL-t használja. Ha végzett, a Bash-parancssorban válassza a Ctrl+C billentyűkombinációt a Tomcat leállításához.
Végül helyezze üzembe az alkalmazást az App Service-ben.
mvn azure-webapp:deploy
Most már megtekintheti a futó alkalmazást az App Service-szel és az Azure Database for MySQL-lel az https://<app-name>.azurewebsites.net
helyen.
Az alkalmazásnaplók elérése
Ha hibaelhárítást kell végeznie, megtekintheti az alkalmazásnaplókat. A távoli naplófolyam helyi gépen történő megnyitásához használja a következő parancsot.
az webapp log tail --name ${WEBAPP_NAME} \
--resource-group ${RESOURCEGROUP_NAME}
Ha befejezte a naplók megtekintését, a Ctrl+C billentyűkombinációval állítsa le a streamet.
A naplók az https://<app-name>.scm.azurewebsites.net/api/logstream
címen is elérhetők.
Horizontális felskálázás
Az alkalmazás megnövekedett forgalmának támogatásához horizontális felskálázást végezhet több példányra az alábbi paranccsal.
az appservice plan update --number-of-workers 2 \
--name ${WEBAPP_PLAN_NAME} \
--resource-group ${RESOURCEGROUP_NAME}
Gratulálunk! Elkészített és kiterjesztett egy Java-webalkalmazást a Spring Framework, a JSP, a Spring Data, a Hibernate, a JDBC, au App Service Linux és az Azure Database for MySQL segítségével.
Az erőforrások eltávolítása
Az előző szakaszokban Azure-erőforrásokat hozott létre egy erőforráscsoportban. Ha várhatóan nem lesz szüksége ezekre az erőforrásokra a jövőben, törölje az erőforráscsoportot a következő parancs futtatásával.
az group delete --name ${RESOURCEGROUP_NAME}
Következő lépések
A következőkben tekintse át a Java App Service-re vonatkozó konfigurációs és CI-/CD-beállításait.
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: