Руководство. Создание веб-приложения JBoss с помощью службы приложение Azure в Linux и MySQL
В этом руководстве показано, как создавать, настраивать и развертывать безопасное приложение JBoss в службе приложение Azure, которая подключается к базе данных MySQL (с помощью База данных Azure для MySQL). Служба приложений Azure — это высокомасштабируемая веб-служба с поддержкой самостоятельного исправления, которая позволяет легко развертывать приложения в Windows или Linux. По завершении вы получите приложение JBoss, работающее в службе приложение Azure в Linux.
В этом руководстве описано следующее:
- Создайте безопасную архитектуру по умолчанию для службы приложение Azure и гибкого сервера База данных Azure для MySQL.
- Безопасное подключение к базе данных с помощью строка подключения без пароля.
- Проверьте источники данных JBoss в Служба приложений с помощью интерфейса командной строки JBoss.
- Разверните пример приложения JBoss, чтобы Служба приложений из репозитория GitHub.
- Доступ к параметрам приложения Служба приложений в коде приложения.
- Создание обновлений и повторное развертывание кода приложения.
- Потоковая передача журналов диагностики из Служба приложений.
- Управление приложением в портал Azure.
- Подготовьте ту же архитектуру и разверните с помощью Интерфейса командной строки разработчика Azure.
- Оптимизируйте рабочий процесс разработки с помощью GitHub Codespaces и GitHub Copilot.
Необходимые компоненты
- Учетная запись Azure с активной подпиской. Если у вас нет учетной записи Azure, ее можно создать бесплатно.
- Учетная запись GitHub. Вы также можете получить его бесплатно.
- Знание Java с помощью разработки JBoss.
- (Необязательно) Чтобы попробовать GitHub Copilot, учетная запись GitHub Copilot. Доступна 30-дневная бесплатная пробная версия.
- Учетная запись Azure с активной подпиской. Если у вас нет учетной записи Azure, ее можно создать бесплатно.
- Установлен интерфейс командной строки разработчика Azure. Вы можете выполнить действия с помощью Azure Cloud Shell , так как он уже установлен с помощью Интерфейса командной строки разработчика Azure.
- Знание Java с помощью разработки JBoss.
- (Необязательно) Чтобы попробовать GitHub Copilot, учетная запись GitHub Copilot. Доступна 30-дневная бесплатная пробная версия.
Перейти к концу
Вы можете быстро развернуть пример приложения в этом руководстве и увидеть его выполнение в Azure. Просто выполните следующие команды в Azure Cloud Shell и следуйте инструкциям в командной строке:
mkdir msdocs-jboss-mysql-sample-app
cd msdocs-jboss-mysql-sample-app
azd init --template msdocs-jboss-mysql-sample-app
azd up
1. Запустите пример
Сначала вы настраиваете пример приложения на основе данных в качестве отправной точки. Для удобства пример репозитория включает конфигурацию контейнера разработки. Контейнер разработки имеет все необходимое для разработки приложения, включая базу данных, кэш и все переменные среды, необходимые образцу приложения. Контейнер разработки может выполняться в пространстве кода GitHub, что означает, что вы можете запустить пример на любом компьютере с веб-браузером.
Шаг 1. В новом окне браузера:
- Войдите в свою учетную запись GitHub.
- Перейдите к https://github.com/Azure-Samples/msdocs-jboss-mysql-sample-app/fork.
- Отмена выбора только для копирования основной ветви. Вы хотите, чтобы все ветви.
- Щелкните Создать вилку.
Шаг 2. В вилке GitHub:
- Выберите основную начальную>ветвь без инфраструктуры для начальной ветви. Эта ветвь содержит только пример проекта и не содержит файлов или конфигурации, связанных с Azure. Выберите пространство кода "Создать код>" на начальном экране без инфраструктуры. Пространство кода занимает несколько минут, чтобы настроить.
Шаг 3. В терминале пространства кода:
- Запустите
mvn clean wildfly:run
. - Когда появится уведомление
Your application running on port 8080 is available.
, подождите несколько секунд, пока сервер WildFly завершит загрузку приложения. Затем нажмите кнопку "Открыть в браузере". Пример приложения должен отображаться на новой вкладке браузера. Чтобы остановить сервер WildFly, введитеCtrl
+C
.
Совет
Вы можете попросить GitHub Copilot об этом репозитории. Например:
- @workspace Что делает этот проект?
- @workspace Что делает папка devcontainer?
Возникли проблемы? Ознакомьтесь с разделом "Устранение неполадок".
2. Создание Служба приложений и MySQL
Сначала вы создадите ресурсы Azure. Действия, используемые в этом руководстве, создают набор безопасных ресурсов по умолчанию, включающих Служба приложений и База данных Azure для MySQL. Для процесса создания укажите:
- Имя веб-приложения. Он используется в качестве части DNS-имени приложения в виде
https://<app-name>-<hash>.<region>.azurewebsites.net
. - Регион для физического запуска приложения. Он также используется в качестве части DNS-имени приложения.
- Стек среды выполнения для приложения. Здесь вы выбираете версию Java, используемую для вашего приложения.
- План размещения для приложения. Это ценовая категория, которая включает набор функций и емкость масштабирования для вашего приложения.
- Группа ресурсов для приложения. Группа ресурсов позволяет группировать (в логическом контейнере) все ресурсы Azure, необходимые для приложения.
Войдите на портал Azure и выполните следующие действия, чтобы создать ресурсы Службы приложений Azure.
Шаг 1. В портал Azure:
- В верхней строке поиска введите службу приложений.
- Выберите элемент, помеченный Служба приложений в заголовке служб.
- Выберите "Создать>веб-приложение". Вы также можете перейти напрямую к мастеру создания.
Шаг 2. На странице "Создание веб-приложения " заполните форму следующим образом.
- Имя: msdocs-jboss-mysql. Для вас будет создана группа ресурсов с именем msdocs-jboss-mysql_group .
- Стек среды выполнения: Java 17.
- Стек веб-сервера Java: Red Hat JBoss EAP 8. Если вы настроили подписку Red Hat с помощью Azure, выберите Red Hat JBoss EAP 8 BYO License.
- Регион: любой регион Azure рядом с вами.
- План Linux. Создание и использование имени msdocs-jboss-mysql.
- Тарифный план: Premium V3 P0V3. Когда вы будете готовы, вы можете увеличить масштаб до другой ценовой категории.
- Развертывание с помощью приложения: выбор базы данных. База данных Azure для MySQL — гибкий сервер выбирается по умолчанию. Это полностью управляемая база данных MySQL как услуга в Azure, совместимая с последними выпусками сообщества.
- Выберите Review + create (Просмотреть и создать).
- После завершения проверки щелкните Создать.
Шаг 3. Развертывание занимает несколько минут. После завершения развертывания нажмите кнопку Перейти к ресурсу. Вы перейдете непосредственно в приложение Службы приложений, но будут созданы следующие ресурсы:
- Группа ресурсов: контейнер для всех созданных ресурсов.
- Служба приложений план. Определяет вычислительные ресурсы для Служба приложений. Создается план Linux на уровне Базовый.
- Служба приложений. Представляет приложение и запускается в плане Служба приложений.
- Виртуальная сеть: интегрированная с приложением Служба приложений и изолирует внутренний сетевой трафик.
- База данных Azure для MySQL гибкий сервер: доступен только из виртуальной сети. База данных и пользователь создаются на этом сервере.
- Частная зона DNS зоны: включите разрешение DNS сервера базы данных в виртуальной сети.
- Частные конечные точки: доступ к конечным точкам сервера базы данных в виртуальной сети.
Возникли проблемы? Ознакомьтесь с разделом "Устранение неполадок".
3. Создание подключения без пароля
На этом шаге создается подключение службы на основе управляемого удостоверения, которое можно позже использовать для создания источника данных на сервере JBoss. Используя управляемое удостоверение для подключения к базе данных MySQL, код безопасно от случайной утечки секретов.
Шаг 1. Создание управляемого удостоверения.
- В верхней строке поиска введите управляемое удостоверение.
- Выберите элемент, помеченный управляемыми удостоверениями , в заголовке служб .
- Нажмите кнопку создания.
- В группе ресурсов выберите msdocs-jboss-mysql_group.
- В регионе выберите тот же регион, который использовался для веб-приложения.
- В поле Name введите msdocs-jboss-mysql-server-identity.
- Выберите Review + create (Просмотреть и создать).
- Нажмите кнопку создания.
Шаг 2. Включение проверки подлинности Microsoft Entra на сервере MySQL.
- В верхней строке поиска введите msdocs-jboss-mysql-server.
- Выберите ресурс гибкого сервера База данных Azure для MySQL с именем msdocs-jboss-mysql-server.
- В меню слева выберите "Проверка подлинности системы безопасности>".
- В разделе "Назначение доступа" выберите только проверку подлинности Microsoft Entra.
- В управляемом удостоверении, назначаемом пользователем, выберите "Выбрать".
- Выберите msdocs-jboss-mysql-server-identity, а затем нажмите кнопку "Добавить". Для назначения удостоверения серверу MySQL требуется некоторое время.
- В имени администратора Microsoft Entra выберите "Выбрать".
- Найдите учетную запись Azure и выберите ее, а затем нажмите кнопку "Выбрать".
- Нажмите кнопку Сохранить и дождитесь завершения операции.
Шаг 3. Добавление соединителя службы на основе управляемых удостоверений.
- В верхней строке поиска введите msdocs-jboss-mysql.
- Выберите ресурс Служба приложений с именем msdocs-jboss-mysql.
- На странице Служба приложений в меню слева выберите "Параметры > соединителя службы".
- Нажмите кнопку создания.
- На вкладке Основные сведения задайте следующие параметры:
- Задайте для типа службы значение DB для гибкого сервера MySQL.
- Установите гибкий сервер MySQL на msdocs-jboss-mysql-server.
- Задайте для базы данных MySQL значение msdocs-jboss-mysql-database.
- Задайте тип клиента Java.
- Выберите вкладку Аутентификация.
- Выберите управляемое удостоверение, назначенное системой.
- Выберите вкладку "Рецензирование и создание ".
- После завершения проверки выберите "Создать в Cloud Shell " и дождитесь завершения операции в Cloud Shell.
- При отображении выходных данных JSON можно закрыть Cloud Shell. Кроме того, закройте диалоговое окно создания подключения .
- Выберите "Обновить", чтобы отобразить новый соединитель службы.
Шаг 4. Добавление подключаемых модулей проверки подлинности в строка подключения.
- В меню слева выберите переменные среды.
- Выберите AZURE_MYSQL_CONNECTIONSTRING. Поле "Значение" должно содержать
user
но нетpassword
. Пользователь является управляемым удостоверением. - Сервер JBoss в приложении Служба приложений имеет подключаемые модули проверки подлинности, прошедшие проверку подлинности управляемого удостоверения, но вам по-прежнему необходимо добавить его в строка подключения. Прокрутите до конца значения и добавьте
&defaultAuthenticationPlugin=com.azure.identity.extensions.jdbc.mysql.AzureMysqlAuthenticationPlugin&authenticationPlugins=com.azure.identity.extensions.jdbc.mysql.AzureMysqlAuthenticationPlugin
. - Выберите Применить.
- Нажмите кнопку "Применить", а затем подтвердите.
Возникли проблемы? Ознакомьтесь с разделом "Устранение неполадок".
4. Подтверждение источника данных JNDI
Если добавить параметр приложения, содержащий допустимый строка подключения JDBC для Oracle, SQL Server, PostgreSQL или MySQL, Служба приложений добавляет для него источник данных Именования Java и интерфейса каталога (JNDI) на сервере JBoss. На этом шаге вы используете подключение SSH к контейнеру приложения для проверки источника данных JNDI. В этом процессе вы узнаете, как получить доступ к оболочке SSH и запустить интерфейс командной строки JBoss.
Шаг 1. Назад на странице Служба приложений:
- В меню слева выберите SSH средств > разработки.
- Выберите Выполнить.
Шаг 2. В терминале SSH:
- Запустите
$JBOSS_HOME/bin/jboss-cli.sh --connect
. - В подключении интерфейса командной строки JBoss выполните команду
ls subsystem=datasources/data-source
. Вы увидите автоматически созданный источникAZURE_MYSQL_CONNECTIONSTRING_DS
данных. - Получите имя JNDI источника данных с
/subsystem=datasources/data-source=AZURE_MYSQL_CONNECTIONSTRING_DS:read-attribute(name=jndi-name)
помощью . Теперь у вас есть имяjava:jboss/env/jdbc/AZURE_MYSQL_CONNECTIONSTRING_DS
JNDI, которое можно использовать в коде приложения позже.
Примечание.
После перезапуска приложения могут сохраняться только изменения в файлах в /home
. Например, если изменить или изменить /opt/eap/standalone/configuration/standalone.xml
конфигурацию сервера в интерфейсе командной строки JBoss, изменения не будут сохраняться после перезапуска приложения. Чтобы сохранить изменения, используйте скрипт запуска, например в разделе "Настройка источников данных" для приложения Tomcat, JBoss или Java SE в службе приложение Azure
Возникли проблемы? Ознакомьтесь с разделом "Устранение неполадок".
5. Развертывание примера кода
На этом шаге вы настроите развертывание GitHub с помощью GitHub Actions. Это всего лишь один из множества способов развертывания в Службе приложений, но это также отличный способ обеспечения непрерывной интеграции в процессе развертывания. По умолчанию каждый git push
из репозитория GitHub запускает действие сборки и развертывания.
Как и соглашение JBoss, если вы хотите развернуть в корневом контексте JBoss, назовите созданный артефакт ROOT.war.
Шаг 1. Вернитесь на страницу Служба приложений в меню слева выберите Центр развертывания>.
Шаг 2. На странице Центра развертывания:
- В поле Источник выберите GitHub. По умолчанию в качестве поставщика сборки выбрано GitHub Actions.
- Войдите в свою учетную запись GitHub и следуйте инструкциям по авторизации Azure.
- В поле Организация выберите свою учетную запись.
- В репозитории выберите msdocs-jboss-mysql-sample-app.
- В ветви выберите starter-no-infra. Это та же ветвь, в которую вы работали с примером приложения, без файлов или конфигурации, связанных с Azure.
- Для типа проверки подлинности выберите удостоверение, назначаемое пользователем.
- В меню сверху выберите Сохранить. Служба приложений фиксирует файл рабочего процесса в выбранном репозитории GitHub в каталоге
.github/workflows
. По умолчанию центр развертывания создает назначаемое пользователем удостоверение для рабочего процесса для проверки подлинности с помощью Microsoft Entra (проверка подлинности OIDC). Дополнительные сведения о вариантах проверки подлинности см. в статье "Развертывание в Служба приложений с помощью GitHub Actions".
Шаг 3. Вернитесь в пространство кода GitHub примера вилки, выполните команду git pull origin starter-no-infra
.
Это извлекает только что зафиксированный файл рабочего процесса в пространство кода. Его можно изменить в соответствии с вашими потребностями в .github/workflows/starter-no-infra_msdocs-jboss-mysql.yml.
Шаг 4 (вариант 1: с GitHub Copilot):
- Запустите новый сеанс чата, щелкнув представление чата, а затем щелкните +.
- Спросите: "@workspace Как приложение подключается к базе данных?". Copilot может дать вам некоторое объяснение
java:jboss/MySQLDS
источника данных и его настройке. - Скажем, "Источник данных в JBoss в Azure использует имя JNDI java:jboss/env/jdbc/AZURE_MYSQL_CONNECTIONSTRING_DS". Copilot может дать вам предложение кода, аналогичное варианту 2: без шагов GitHub Copilot ниже и даже сообщить вам, чтобы внести изменения в класс. GitHub Copilot не дает вам одинаковый ответ каждый раз, вам может потребоваться задать дополнительные вопросы, чтобы точно настроить его ответ. Советы см. в статье "Что можно сделать с помощью GitHub Copilot в моем пространстве кода?".
Шаг 4 (вариант 2: без GitHub Copilot):
- Откройте src/main/resources/META-INF/persistence.xml в обозревателе. При запуске приложения он загружает параметры базы данных в этом файле.
- Измените значение
<jta-data-source>
изjava:jboss/MySQLDS
java:jboss/env/jdbc/AZURE_MYSQL_CONNECTIONSTRING_DS
источника данных, который вы нашли с помощью интерфейса командной строки JBoss ранее в оболочке SSH.
Шаг 5.
- Выберите расширение Система управления версиями.
- В текстовом поле введите сообщение фиксации, например
Configure Azure JNDI name
. - Нажмите кнопку "Зафиксировать", а затем подтвердите значение "Да".
- Нажмите кнопку "Синхронизировать изменения 1", а затем нажмите кнопку "ОК".
Шаг 6. Назад на странице Центра развертывания в портал Azure:
- Выберите Журналы. Новый запуск развертывания уже запущен из зафиксированных изменений.
- В элементе журнала для запуска развертывания выберите запись "Сборка и развертывание журналов " с последней меткой времени.
Шаг 7. Вы перейдете в репозиторий GitHub и увидите, что действие GitHub выполняется. Файл рабочего процесса определяет два отдельных этапа: сборку и развертывание. Дождитесь, пока в выполнении действия GitHub не будет показано состояние Завершено. Это занимает около 5 минут.
Возникли проблемы? Ознакомьтесь с разделом "Устранение неполадок".
6. Перейдите к приложению
Шаг 1. На странице Служба приложений:
- В меню слева выберите Обзор.
- В домене по умолчанию выберите URL-адрес приложения.
Шаг 2. Добавление нескольких задач в список. Поздравляем, вы запускаете веб-приложение в службе приложение Azure с безопасным подключением к База данных Azure для MySQL.
Возникли проблемы? Ознакомьтесь с разделом "Устранение неполадок".
7. Потоковая передача журналов диагностики
Служба приложений Azure захватывает все сообщения, выводимые на консоль, чтобы помочь в диагностике проблем с приложением. Пример приложения включает стандартные инструкции ведения журнала Log4j для демонстрации этой возможности, как показано в следующем фрагменте кода:
private static final Logger logger = Logger.getLogger(MethodHandles.lookup().lookupClass().getName());
@PersistenceContext
private EntityManager entityManager;
public List<Task> getAllTasks() {
logger.log(Level.INFO, "Finding all tasks. ");
return this.entityManager.createNamedQuery("findAllTasks", Task.class).getResultList();
}
На странице Служба приложений в меню слева выберите поток журнала. Вы увидите журналы для своего приложения, включая журналы платформы и журналы из контейнера.
Дополнительные сведения о ведении журнала в приложениях Java в серии о включении Azure Monitor OpenTelemetry для приложений .NET, Node.js, Python и Java.
Возникли проблемы? Ознакомьтесь с разделом "Устранение неполадок".
8. Очистка ресурсов
По завершении работы можно удалить все ресурсы из вашей подписки Azure, удалив соответствующую группу ресурсов.
Шаг 1. В строке поиска в верхней части портал Azure:
- Введите имя группы ресурсов msdocs-jboss-mysql_group.
- Выберите группу ресурсов.
Шаг 2. На странице группы ресурсов выберите "Удалить группу ресурсов".
Шаг 3.
- Подтвердите удаление, введя имя группы ресурсов.
- Выберите команду Удалить.
- Подтвердите еще раз с помощью удаления .
2. Создание ресурсов Azure и развертывание примера приложения
На этом шаге вы создадите ресурсы Azure и развернете пример приложения для Служба приложений в Linux. Действия, используемые в этом руководстве, создают набор безопасных ресурсов по умолчанию, включающих Служба приложений и База данных Azure для MySQL.
Контейнер разработки уже имеет интерфейс командной строки разработчика Azure (AZD).
Выполните команду
azd init
из корневого каталога репозитория.azd init --template jboss-app-service-mysql-infra
При появлении запроса укажите следующие ответы:
Вопрос Ответ Продолжить инициализацию приложения в ' <your-directory>
'?Y Что вы хотите сделать с этими файлами? Сохранение существующих файлов без изменений Введите новое имя среды Введите уникальное имя. Шаблон AZD использует это имя как часть DNS-имени веб-приложения в Azure ( <app-name>-<hash>.azurewebsites.net
). Разрешены буквенно-цифровые символы и дефисы.Войдите в Azure, выполнив
azd auth login
команду и выполнив следующую команду:azd auth login
Создайте необходимые ресурсы Azure и разверните код приложения с
azd up
помощью команды. Следуйте запросу, чтобы выбрать нужную подписку и расположение для ресурсов Azure.azd up
Выполнение
azd up
команды занимает около 15 минут (кэш Redis занимает больше всего времени). Он также компилирует и развертывает код приложения, но вы измените код позже, чтобы работать с Служба приложений. Во время выполнения команда предоставляет сообщения о процессе подготовки и развертывания, включая ссылку на развертывание в Azure. По завершении команда также отображает ссылку на приложение развертывания.Этот шаблон AZD содержит файлы (azure.yaml и инфракрасный каталог), создающие безопасную архитектуру по умолчанию со следующими ресурсами Azure:
- Группа ресурсов: контейнер для всех созданных ресурсов.
- Служба приложений план. Определяет вычислительные ресурсы для Служба приложений. Создается план Linux на уровне B1 .
- Служба приложений. Представляет приложение и запускается в плане Служба приложений.
- Виртуальная сеть: интегрированная с приложением Служба приложений и изолирует внутренний сетевой трафик.
- База данных Azure для MySQL гибкий сервер: доступен только из виртуальной сети. База данных создается для вас на сервере.
- Кэш Azure для Redis. Доступно только из виртуальной сети.
- Частные конечные точки: доступ к конечным точкам для хранилища ключей и кэша Redis в виртуальной сети.
- Частная зона DNS зонах: включите разрешение DNS хранилища ключей, сервера базы данных и кэш Redis в виртуальной сети.
- Рабочая область Log Analytics: выступает в качестве целевого контейнера для вашего приложения для отправки журналов, где можно также запрашивать журналы.
- Хранилище ключей. Используется для сохранения пароля базы данных при повторном развертывании с помощью AZD.
Когда команда завершит создание ресурсов и развертывание кода приложения в первый раз, развернутое пример приложения еще не работает, так как необходимо внести небольшие изменения, чтобы подключиться к базе данных в Azure.
Возникли проблемы? Ознакомьтесь с разделом "Устранение неполадок".
3. Проверка строка подключения
Шаблон AZD, который вы используете, создали переменные подключения для вас уже в качестве параметров приложения и выводит их в терминал для удобства. Параметры приложения — это один из способов сохранения секретов подключения из репозитория кода.
В выходных данных AZD найдите параметр
AZURE_MYSQL_CONNECTIONSTRING
приложения. Отображаются только имена параметров. Они выглядят следующим образом в выходных данных AZD:App Service app has the following app settings: - AZURE_KEYVAULT_RESOURCEENDPOINT - AZURE_KEYVAULT_SCOPE - AZURE_MYSQL_CONNECTIONSTRING - AZURE_REDIS_CONNECTIONSTRING
AZURE_MYSQL_CONNECTIONSTRING
содержит строка подключения в базу данных MySQL в Azure. Позже его необходимо использовать в коде.Для удобства шаблон AZD отображает прямую ссылку на страницу параметров приложения. Найдите ссылку и откройте ее на новой вкладке браузера.
Если вы добавите параметр приложения, содержащий допустимый источник данных Oracle, SQL Server, PostgreSQL или MySQL строка подключения, Служба приложений добавляет его в качестве источника данных Java Naming and Directory Interface (JNDI) в context.xml-файле сервера JBoss.
Возникли проблемы? Ознакомьтесь с разделом "Устранение неполадок".
4. Подтверждение источника данных JNDI
На этом шаге вы используете подключение SSH к контейнеру приложения для проверки источника данных JNDI на сервере JBoss. В этом процессе вы узнаете, как получить доступ к оболочке SSH для контейнера JBoss.
В выходных данных AZD найдите URL-адрес сеанса SSH и перейдите к нему в браузере. Это выглядит следующим образом в выходных данных:
Open SSH session to App Service container at: https://<app-name>-<hash>.scm.azurewebsites.net/webssh/host
В терминале SSH выполните команду
$JBOSS_HOME/bin/jboss-cli.sh --connect
.В подключении интерфейса командной строки JBoss выполните команду
ls subsystem=datasources/data-source
. Вы увидите автоматически созданный источникAZURE_MYSQL_CONNECTIONSTRING_DS
данных.Получите имя JNDI источника данных с
/subsystem=datasources/data-source=AZURE_MYSQL_CONNECTIONSTRING_DS:read-attribute(name=jndi-name)
помощью . Теперь у вас есть имяjava:jboss/env/jdbc/AZURE_MYSQL_CONNECTIONSTRING_DS
JNDI, которое можно использовать в коде приложения позже.
Примечание.
После перезапуска приложения могут сохраняться только изменения в файлах в /home
. Например, если изменить или изменить /opt/eap/standalone/configuration/standalone.xml
конфигурацию сервера в интерфейсе командной строки JBoss, изменения не будут сохраняться после перезапуска приложения. Чтобы сохранить изменения, используйте скрипт запуска, например в разделе "Настройка источников данных" для приложения Tomcat, JBoss или Java SE в службе приложение Azure
Возникли проблемы? Ознакомьтесь с разделом "Устранение неполадок".
5. Изменение примера кода и повторное развертывание
В пространстве кода GitHub запустите новый сеанс чата, щелкнув представление чата , а затем щелкните +.
Спросите: "@workspace Как приложение подключается к базе данных?". Copilot может дать вам некоторое объяснение
java:jboss/MySQLDS
источника данных и его настройке.Спросите: "@workspace я хочу заменить источник данных, определенный в persistence.xml существующим источником данных JNDI в JBoss". Copilot может дать вам предложение по коду, аналогичное варианту 2: без шагов GitHub Copilot ниже и даже сообщить вам внести изменения в файл persistence.xml .
Откройте src/main/resources/META-INF/persistence.xml в обозревателе и внесите предлагаемые изменения JNDI.
GitHub Copilot не дает вам одинаковый ответ каждый раз, вам может потребоваться задать другие вопросы, чтобы точно настроить его ответ. Советы см. в статье "Что можно сделать с помощью GitHub Copilot в моем пространстве кода?".
В терминале пространства кода выполните команду
azd deploy
.azd deploy
Совет
Вы также можете использовать azd up
всегда, что делает все azd package
, azd provision
и azd deploy
.
Чтобы узнать, как упаковывается файл War, можно запустить azd package --debug
самостоятельно.
Возникли проблемы? Ознакомьтесь с разделом "Устранение неполадок".
6. Перейдите к приложению
В выходных данных AZD найдите URL-адрес приложения и перейдите к нему в браузере. URL-адрес выглядит следующим образом в выходных данных AZD:
Deploying services (azd deploy) (✓) Done: Deploying service web - Endpoint: https://<app-name>-<hash>.azurewebsites.net/
Добавьте несколько задач в список.
Поздравляем, вы запускаете веб-приложение в службе приложение Azure с безопасным подключением к База данных Azure для MySQL.
Возникли проблемы? Ознакомьтесь с разделом "Устранение неполадок".
7. Потоковая передача журналов диагностики
служба приложение Azure может записывать журналы консоли для диагностики проблем с приложением. Для удобства шаблон AZD уже включил ведение журнала в локальную файловую систему и отправляет журналы в рабочую область Log Analytics.
Пример приложения включает стандартные инструкции ведения журнала Log4j для демонстрации этой возможности, как показано в следующем фрагменте кода:
private static final Logger logger = Logger.getLogger(MethodHandles.lookup().lookupClass().getName());
@PersistenceContext
private EntityManager entityManager;
public List<Task> getAllTasks() {
logger.log(Level.INFO, "Finding all tasks. ");
return this.entityManager.createNamedQuery("findAllTasks", Task.class).getResultList();
}
В выходных данных AZD найдите ссылку для потоковой передачи журналов Служба приложений и перейдите к нему в браузере. Ссылка выглядит следующим образом в выходных данных AZD:
Stream App Service logs at: https://portal.azure.com/#@/resource/subscriptions/<subscription-guid>/resourceGroups/<group-name>/providers/Microsoft.Web/sites/<app-name>/logStream
Дополнительные сведения о ведении журнала в приложениях Java в серии о включении Azure Monitor OpenTelemetry для приложений .NET, Node.js, Python и Java.
Возникли проблемы? Ознакомьтесь с разделом "Устранение неполадок".
8. Очистка ресурсов
Чтобы удалить все ресурсы Azure в текущей среде развертывания, выполните azd down
и следуйте инструкциям.
azd down
Устранение неполадок
- В мастере создания появится сообщение об ошибке "не имеет права на использование функции "Принести собственную лицензию".
- В представлении развертывания портала для База данных Azure для MySQL гибком сервере отображается состояние конфликта.
- В диалоговом окне "Создание подключения" отображается кнопка Create On Cloud Shell, но она не включена.
- Мое приложение не удалось запустить, и я вижу: "Доступ запрещен для пользователя... (с помощью пароля: NO)' в журналах.
- Развернутый пример приложения не отображает приложение списка задач.
- В журналах диагностики отображается ошибка "Таблица "Задача".
В мастере создания появится сообщение об ошибке "не имеет права на использование функции "Принести собственную лицензию".
Если вы видите ошибку: The subscription '701ea799-fb46-4407-bb67-9cbcf289f1c7' is not entitled to use the Bring Your Own License feature when creating the application
это означает, что выбрана лицензия Red Hat JBoss EAP 7/8 BYO в стеке веб-серверов Java, но не настроена учетная запись Azure в Red Hat Cloud Access или у вас нет активной лицензии JBoss EAP в Red Hat Cloud Access.
В представлении развертывания портала для База данных Azure для MySQL гибком сервере отображается состояние конфликта.
В зависимости от выбранной подписки и выбранного региона может появиться состояние развертывания для База данных Azure для MySQL гибкий сервер Conflict
с следующим сообщением в разделе "Сведения об операции".
InternalServerError: An unexpected error occured while processing the request.
Эта ошибка, скорее всего, вызвана ограничением подписки для выбранного региона. Попробуйте выбрать другой регион для развертывания.
В диалоговом окне "Создание подключения" отображается кнопка Create On Cloud Shell, но она не включена.
В диалоговом окне также может появиться сообщение об ошибке: The database server is in Virtual Network and Cloud Shell can't connect to it. Please copy the commands and execute on an environment which can connect to the database server in Virtual Network.
Автоматизация соединителя служб нуждается в сетевом доступе к серверу MySQL. Просмотрите параметры сети ресурса сервера MySQL и убедитесь, что разрешить общедоступный доступ к этому ресурсу через Интернет с помощью общедоступного IP-адреса выбран как минимум. Соединитель службы может взять его оттуда.
Если этот флажок не отображается, возможно, вы создали развертывание с помощью мастера веб-приложения и базы данных, а развертывание блокирует доступ ко всему общедоступному сетевому серверу MySQL. Изменить конфигурацию невозможно. Так как контейнер Linux приложения может получить доступ к MySQL через интеграцию виртуальной сети, вы можете установить Azure CLI в сеансе SSH приложения и запустить указанные команды Cloud Shell там.
Развернутый пример приложения не отображает приложение списка задач.
Если вы видите страницу-заставку JBoss вместо приложения списка задач, Служба приложений, скорее всего, по-прежнему загружает обновленный контейнер из последнего развертывания кода. Подождите несколько минут и обновите страницу.
Мое приложение не удалось запустить, и я вижу: "Доступ запрещен для пользователя... (с помощью пароля: NO)' в журналах.
Эта ошибка, скорее всего, связана с тем, что вы не добавили подключаемый модуль проверки подлинности без пароля в строка подключения (см. пример кода Java для интеграции База данных Azure для MySQL с соединителем службы). Измените строка подключения MySQL, следуя инструкциям в 3. Создайте подключение без пароля.
В журналах диагностики отображается ошибка "Таблица "Задача".
Эту ошибку Гибернации можно игнорировать, так как она указывает, что код приложения подключен к базе данных MySQL. Приложение настроено на создание необходимых таблиц при запуске (см. раздел src/main/resources/META-INF/persistence.xml). Когда приложение запускается в первый раз, оно должно успешно создать таблицы, но при последующих перезапусках вы увидите эту ошибку, так как таблицы уже существуют.
Часто задаваемые вопросы
- Сколько стоит такая конфигурация?
- Разделы справки подключиться к серверу MySQL за виртуальной сетью с другими инструментами?
- Разделы справки получить действительный маркер доступа для подключения MySQL с помощью проверки подлинности Microsoft Entra?
- Как осуществляется разработка локальных приложений с использованием GitHub Actions?
- У меня нет разрешений на создание удостоверения, назначаемого пользователем
- Что можно сделать с помощью GitHub Copilot в моем пространстве кода?
Сколько стоит такая конфигурация?
Цены на созданные ресурсы приведены следующим образом:
- План Служба приложений создается на уровне P0v3 и может быть масштабирован вверх или вниз. См. цены на Службу приложений.
- Гибкий сервер MySQL создается на уровне D2ds и может масштабироваться вверх или вниз. См. цены на Базу данных Azure для MySQL.
- Кэш Azure для Redis создается на уровне "Базовый" с минимальным размером кэша. Существует небольшая стоимость, связанная с этим уровнем. Его можно масштабировать до более высоких уровней производительности для повышения доступности, кластеризации и других функций. См. Кэш Azure для Redis цены.
- Плата за виртуальную сеть не взимается, если только вы не настроите дополнительные функциональные возможности, такие как пиринг. См. цены на виртуальные сети Azure.
- За частную зону DNS взимается небольшая плата. См. цены на Azure DNS.
Разделы справки подключиться к серверу MySQL за виртуальной сетью с другими инструментами?
В этом руководстве приложение Служба приложений уже имеет сетевое подключение к серверу MySQL и может проходить проверку подлинности в Microsoft Entra с помощью управляемого удостоверения, назначаемого системой. Вы можете подключиться к MySQL непосредственно из контейнера приложения, выполнив следующие команды в сеансе SSH (получение <server>
<user>
значений и <database>
значений AZURE_MYSQL_CONNECTIONSTRING
из параметра приложения):
apt-get update
apt-get install curl less mysql-client jq -y
mysql -h <server> --user <user> --database <database> --enable-cleartext-plugin --password=`curl "${IDENTITY_ENDPOINT}?resource=https://ossrdbms-aad.database.windows.net&api-version=2019-08-01" -H "X-IDENTITY-HEADER: $IDENTITY_HEADER" -s | jq -r '.access_token'`
Ниже приведены некоторые рекомендации.
- Средства, устанавливаемые в сеансе SSH, не сохраняются во время перезапуска приложения.
- Если вы выполнили действия портала и настроили MySQL с помощью пользователя Microsoft Entra в качестве администратора, вы можете подключиться к MySQL с помощью пользователя Microsoft Entra.
- Чтобы подключиться из классического средства, например MySQL Workbench, компьютер должен находиться в виртуальной сети, например виртуальной машине Azure, развернутой в той же виртуальной сети. Кроме того, необходимо отдельно настроить проверку подлинности с помощью управляемого удостоверения или пользователя Microsoft Entra.
- Чтобы подключиться с компьютера в локальной сети с VPN-подключением типа "сеть — сеть" с виртуальной сетью Azure, невозможно настроить проверку подлинности с помощью управляемого удостоверения, но можно настроить проверку подлинности с помощью пользователя Microsoft Entra.
- Вы также можете интегрировать Azure Cloud Shell и подключиться с помощью Azure CLI или Интерфейса командной строки MySQL. Для проверки подлинности можно настроить пользователя Microsoft Entra.
Разделы справки получить действительный маркер доступа для подключения MySQL с помощью проверки подлинности Microsoft Entra?
Для пользователя Microsoft Entra, управляемого удостоверения, назначаемого системой, или управляемого удостоверения, назначаемого пользователем, авторизованного для доступа к базе данных MySQL, Azure CLI может помочь создать маркер доступа. В случае управляемого удостоверения удостоверение должно быть настроено на Служба приложений приложении или виртуальной машине, где выполняется Azure CLI.
# Sign in as a Microsoft Entra user
az login
# Sign in as the system-assigned managed identity
az login --identity
# Sign in as a user-assigned managed identity
az login --identity --username <client-id-of-user-assigned-identity>
# Get an access token
az account get-access-token --resource-type oss-rdbms
Если вы хотите, вы также можете использовать команду az mysql flexible-server connect Azure CLI для подключения к MySQL. При появлении запроса используйте маркер доступа в качестве пароля.
az mysql flexible-server connect -n <server-name-only> -u <user> -d <database> --interactive
Дополнительные сведения см. в разделе:
- Использование управляемых удостоверений в Службе приложений и Функциях Azure
- Проверка подлинности в Azure с помощью Azure CLI
- Подключение к гибкому серверу База данных Azure для MySQL с помощью идентификатора Microsoft Entra
Как осуществляется разработка локальных приложений с использованием GitHub Actions?
Используя автоматически созданный файл рабочего процесса из Служба приложений в качестве примера, каждый git push
запускает новую сборку и развертывание. Из локального клона репозитория GitHub необходимо внести необходимые обновления и отправить их в GitHub. Например:
git add .
git commit -m "<some-message>"
git push origin starter-no-infra
У меня нет разрешений на создание удостоверения, назначаемого пользователем
См. статью "Настройка развертывания GitHub Actions" из Центра развертывания.
Что можно сделать с помощью GitHub Copilot в моем пространстве кода?
Вы можете заметить, что представление чата GitHub Copilot уже было там, когда вы создали пространство кода. Для удобства мы добавим расширение чата GitHub Copilot в определение контейнера (см . статью .devcontainer/devcontainer.json). Однако вам нужна учетная запись GitHub Copilot (доступна бесплатная пробная версия 30 дней).
Несколько советов для вас при разговоре с GitHub Copilot:
- В одном сеансе чата вопросы и ответы создаются друг на друга, и вы можете настроить свои вопросы, чтобы точно настроить ответ, который вы получаете.
- По умолчанию GitHub Copilot не имеет доступа к файлу в репозитории. Чтобы задать вопросы о файле, сначала откройте файл в редакторе.
- Чтобы разрешить GitHub Copilot получить доступ ко всем файлам в репозитории при подготовке его ответов, начните с вашего вопроса
@workspace
. Дополнительные сведения см. в разделе Use the @workspace agent. - В сеансе чата GitHub Copilot может предложить изменения и (с
@workspace
) даже там, где внести изменения, но не разрешено вносить изменения. Это до вас, чтобы добавить предлагаемые изменения и проверить его.
Вот некоторые другие вещи, которые вы можете сказать, чтобы точно настроить ответ, который вы получаете:
- Измените этот код, чтобы использовать jdbc/AZURE_MYSQL_CONNECTIONSTRING_DS источника данных.
- Некоторые импорты в коде используют javax, но у меня есть приложение Jakarta.
- Я хочу, чтобы этот код выполнялся только в том случае, если задана переменная среды AZURE_MYSQL_CONNECTIONSTRING.
- Я хочу, чтобы этот код выполнялся только в службе приложение Azure, а не локально.
Следующие шаги
Дополнительные сведения о запуске приложений Java на Служба приложений см. в руководстве разработчика.
Узнайте, как защитить приложение с помощью личного домена и сертификата.