Nasazení aplikace Spring do služby App Service pomocí MySQL
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 místně otestujete verzi HSQLDB aplikace a potom ji nasadíte do služby Azure App Service. Následně nakonfigurujete a nasadíte verzi, která používá Azure Database for MySQL. Nakonec zjistíte, jak získat přístup k protokolům aplikace a horizontálně rozšířit kapacitu zvýšením počtu pracovních procesů vaší aplikace.
Předpoklady
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
Nejdřív otestujeme vzorek 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>
Pak aktualizujte soubor pom.xml 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.8 na aktuální verzi 1.9.8.
<plugin>
<groupId>org.codehaus.cargo</groupId>
<artifactId>cargo-maven3-plugin</artifactId>
<version>1.9.8</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ž skončíte, stisknutím kláves Ctrl+C na příkazovém řádku Bash 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í. V případě REGION použijte West US 2 nebo jiné oblasti, které najdete REGION.
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.2.3 na aktuální verzi 2.2.3.
<plugin>
<groupId>com.microsoft.azure</groupId>
<artifactId>azure-webapp-maven-plugin</artifactId>
<version>2.2.3</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 pomocí rozhraní příkazového řádku MySQL se 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 CLI spusťte následující příkaz k ověření databáze s názvem se stejnou hodnotou, kterou jste zadali dříve pro MYSQL_DATABASE_NAME proměnnou 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 a zpřístupněte tak aktivní konfiguraci MySQL. Odeberte <activation> prvek z profilu H2 a místo toho ho umístě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.2.3 na aktuální verzi 2.2.3.
<plugin>
<groupId>com.microsoft.azure</groupId>
<artifactId>azure-webapp-maven-plugin</artifactId>
<version>2.2.3</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ž skončíte, stisknutím kláves Ctrl+C na příkazovém řádku Bash 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ž si protokoly prohlédněte, stisknutím kláves CTRL+C stream zastavte.
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.