Развертывание приложения Spring в Службе приложений с использованием MySQL
Примечание.
Для приложений Spring рекомендуется использовать Azure Spring Apps. Однако вы по-прежнему можете использовать службу приложение Azure в качестве назначения. Дополнительные сведения см. в статье "Выбор подходящих служб Azure для приложений Java".
Из этого руководства вы узнаете, как создавать, настраивать, развертывать и масштабировать веб-приложения Java, а также устранять неполадки с ними в Службе приложений в Linux.
Это руководство основано на популярном примере приложения PetClinic. В этом разделе вы протестируете версию HSQLDB приложения локально, а затем разверните ее в службе приложение Azure. После этого вы настроите и развернете версию, которая использует База данных Azure для MySQL. Наконец, вы узнаете, как получить доступ к журналам приложений и увеличить масштаб, увеличив число рабочих ролей, работающих в приложении.
Необходимые компоненты
Получение примера
Чтобы приступить к работе с примером приложения, клонируйте и подготовьте исходный репозиторий с помощью следующих команд.
git clone https://github.com/spring-petclinic/spring-framework-petclinic.git
cd spring-framework-petclinic
Сборка и запуск примера HSQLDB в локальной среде
Сначала мы протестируем пример локально, используя HSQLDB в качестве базы данных.
Создайте версию HSQLDB примера приложения.
mvn package
Затем присвойте переменной среды TOMCAT_HOME расположение установки Tomcat.
export TOMCAT_HOME=<Tomcat install directory>
Затем обновите файл pom.xml для развертывания файла WAR. Добавьте следующий код XML в качестве дочернего узла существующего элемента <plugins>
. При необходимости измените 1.9.11
на текущую версию подключаемого модуля 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>
В такой конфигурации приложение можно развернуть локально в Tomcat.
mvn cargo:deploy
Затем запустите Tomcat.
${TOMCAT_HOME}/bin/catalina.sh run
Теперь в браузере можно перейти по адресу http://localhost:8080
, чтобы увидеть работающее приложение и оценить его работу. По завершении нажмите клавиши CTRL+C в командной строке Bash, чтобы остановить Tomcat.
Развертывание в Службу приложений Azure
Теперь, когда приложение протестировано локально, его можно развернуть в Azure.
Сначала настройте следующие переменные среды. Для REGION
используйте West US 2
или другие регионы, которые можно найти здесь.
export RESOURCEGROUP_NAME=<resource group>
export WEBAPP_NAME=<web app>
export WEBAPP_PLAN_NAME=${WEBAPP_NAME}-appservice-plan
export REGION=<region>
Maven будет использовать эти значения для создания ресурсов Azure с предоставленными вами именами. С помощью переменных среды можно хранить секреты учетной записи отдельно от файлов проекта.
Затем обновите файл pom.xml, чтобы настроить Maven для развертывания в Azure. Добавьте следующий код XML после добавленного ранее элемента <plugin>
. При необходимости измените 2.5.0
на текущую версию подключаемого модуля Maven для Службы приложений Azure.
<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>
Затем войдите в Azure.
az login
После этого разверните приложение в Службе приложений в Linux.
mvn azure-webapp:deploy
Теперь вы можете перейти по адресу https://<app-name>.azurewebsites.net
(после замены <app-name>
), чтобы увидеть работающее приложение.
Настройка Базы данных Azure для MySQL
Теперь вместо HSQLDB будет использоваться MySQL. Вам нужно будет создать экземпляр MySQL Server в Azure и добавить базу данных, а затем обновить конфигурацию приложения, используя новые сведения о подключении к базе данных.
Сначала настройте следующие переменные среды для дальнейшего использования.
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=\$
Затем создайте и инициализируйте сервер базы данных. Выполните az mysql up для начальной настройки. Затем используйте az mysql server configuration set, чтобы увеличить время ожидания подключения и задать часовой пояс сервера.
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
Затем с помощью CLI MySQL подключитесь к базе данных в Azure.
mysql -u ${MYSQL_SERVER_ADMIN_LOGIN_NAME}@${MYSQL_SERVER_NAME} \
-h ${MYSQL_SERVER_FULL_NAME} -P 3306 -p
В командной строке CLI MySQL выполните приведенную ниже команду, чтобы проверить, названа ли ваша база данных тем же именем, которое вы указали ранее для переменной среды MYSQL_DATABASE_NAME
.
show databases;
Теперь вы можете использовать MySQL.
Настройка приложения для работы с MySQL
Теперь нужно добавить сведения о подключении к версии MySQL приложения и выполнить развертывание в Службе приложений.
Обновите файл pom.xml, чтобы включить MySQL в действующую конфигурацию. Удалите элемент <activation>
из профиля H2 и поместите его в профиль MySQL, как показано ниже. В оставшейся части фрагмента кода показана существующая конфигурация. Обратите внимание, как настроенные ранее переменные среды используются Maven для настройки доступа к MySQL.
<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>
Затем обновите файл pom.xml, чтобы настроить Maven для развертывания в Azure и использования MySQL. Добавьте следующий код XML после добавленного ранее элемента <plugin>
. При необходимости измените 2.5.0
на текущую версию подключаемого модуля Maven для Службы приложений Azure.
<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>
Затем выполните сборку приложения и протестируйте его локально, развернув и запустив с помощью Tomcat.
mvn package
mvn cargo:deploy
${TOMCAT_HOME}/bin/catalina.sh run
Теперь приложение можно просмотреть локально, перейдя по адресу http://localhost:8080
. Приложение будет выглядеть и работать так же, как и раньше, но теперь оно использует базу данных Azure для MySQL вместо HSQLDB. По завершении нажмите клавиши CTRL+C в командной строке Bash, чтобы остановить Tomcat.
Наконец, разверните приложение в Службе приложений.
mvn azure-webapp:deploy
Теперь можно перейти по адресу https://<app-name>.azurewebsites.net
, чтобы увидеть работающее приложение, использующее Службу приложений и Базу данных Azure для MySQL.
Доступ к журналам приложения
Если необходимо устранить неполадки, можно просмотреть журналы приложения. Чтобы открыть удаленный поток журналов на локальном компьютере, используйте следующую команду.
az webapp log tail --name ${WEBAPP_NAME} \
--resource-group ${RESOURCEGROUP_NAME}
После завершения просмотра журналов нажмите клавиши CTRL+C, чтобы остановить поток.
Этот поток журналов также доступен по адресу https://<app-name>.scm.azurewebsites.net/api/logstream
.
Горизонтальное увеличение масштаба
Чтобы вы могли увеличить трафик в приложении, выполните горизонтальное увеличение масштаба до нескольких экземпляров с помощью следующей команды.
az appservice plan update --number-of-workers 2 \
--name ${WEBAPP_PLAN_NAME} \
--resource-group ${RESOURCEGROUP_NAME}
Поздравляем! Вы создали и масштабировали веб-приложение Java, используя Spring Framework, JSP, Spring Data, Hibernate, JDBC, Службу приложений в Linux и Базу данных Azure для MySQL.
Очистка ресурсов
Ранее вы создали ресурсы Azure в группе ресурсов. Если эти ресурсы вам не понадобятся в будущем, вы можете удалить группу ресурсов, выполнив следующую команду.
az group delete --name ${RESOURCEGROUP_NAME}
Следующие шаги
Ознакомьтесь с другими вариантами конфигурации и вариантами CI/CD, доступными для Java в Службе приложений.
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по