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.