Руководство по созданию PHP (Laravel) и База данных Azure для MySQL — гибкое приложение сервера в службе приложение Azure
ОБЛАСТЬ ПРИМЕНЕНИЯ: База данных Azure для MySQL — гибкий сервер
Служба приложений Azure — это высокомасштабируемая служба размещения с самостоятельной установкой исправлений на основе операционной системы Linux. В этом руководстве показано, как создать безопасное приложение PHP в Службе приложений Azure, подключенное к базе данных MySQL (с помощью гибкого сервера Базы данных Azure для MySQL). По завершении вы получите приложение Laravel, работающее в Службе приложений Azure в Linux.
В этом руководстве описано следующее:
- Создание изначально безопасного приложения на основе PHP и MySQL в Azure
- Настройка секретов подключения к MySQL с помощью параметров приложения
- Развертывание кода приложения с помощью GitHub Actions
- Обновление и повторное развертывание приложения
- Безопасные переносы баз данных
- Потоковая передача журналов диагностики из Azure.
- Управление приложением на портале Azure.
Необходимые компоненты
- Подписка Azure. Если у вас еще нет подписки Azure, создайте бесплатную учетную запись Azure, прежде чем начинать работу. В настоящее время с бесплатной учетной записью Azure можно попробовать База данных Azure для MySQL — гибкий сервер бесплатно в течение 12 месяцев. Дополнительные сведения см. в разделе База данных Azure для MySQL — гибкий сервер бесплатно.
Пример приложения
Для работы с этим руководством клонируйте или скачайте пример приложения из репозитория:
git clone https://github.com/Azure-Samples/laravel-tasks.git
Если вы хотите запустить приложение локально, сделайте следующее:
В .env настройте параметры базы данных (например
DB_DATABASE
,DB_USERNAME
иDB_PASSWORD
) с помощью параметров в локальной База данных Azure для MySQL гибкой базе данных сервера. Для выполнения этого примера требуется локальный База данных Azure для MySQL гибкий экземпляр сервера.В корне репозитория запустите Laravel с помощью следующих команд:
composer install php artisan migrate php artisan key:generate php artisan serve
1. Создание Служба приложений и База данных Azure для MySQL гибких ресурсов сервера
В этом шаге вы создадите ресурсы Azure. Действия, описанные в этом руководстве, создают Служба приложений и База данных Azure для MySQL гибкую конфигурацию сервера, безопасную по умолчанию. В процессе создания вы укажете следующее:
- Имя веб-приложения. Это имя используется в составе DNS-имени вашего веб-приложения в виде
https://<app-name>.azurewebsites.net
. - Среда выполнения для приложения. Здесь следует выбрать версию PHP, которая будет использоваться для приложения.
- Группа ресурсов для приложения. Группа ресурсов позволяет группировать (в логическом контейнере) все ресурсы Azure, необходимые для приложения.
Войдите на портал Azure и выполните следующие действия, чтобы создать ресурсы Службы приложений Azure.
Instructions | Снимок экрана |
---|---|
В портал Azure:
|
|
На странице Создание веб-приложения+базы данных заполните форму следующим образом.
|
|
Развертывание занимает несколько минут и создает следующие ресурсы:
|
2. Настройка подключения к базе данных
Мастер создания создал параметры приложения, которые можно использовать для подключения к базе данных, но не в формате, который можно использовать для кода. На этом шаге вы изменяете и обновляете параметры приложения в нужный формат.
Instructions | Снимок экрана | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
В левом меню на странице Службы приложений выберите Конфигурация. | |||||||||||
На вкладке "Параметры приложения" на странице "Конфигурация" для каждого из следующих параметров нажмите кнопку "Изменить", обновите поле "Имя" с новыми значениями и нажмите кнопку "ОК".
|
|||||||||||
Создайте новый MYSQL_ATTR_SSL_CA параметр базы данных:
|
|||||||||||
Создайте следующие дополнительные параметры приложения, выполнив те же действия, а затем нажмите кнопку "Сохранить".
|
3. Развертывание примера кода
На этом шаге вы настроите развертывание GitHub с помощью GitHub Actions. Это всего лишь один из множества способов развертывания в Службе приложений, но это также отличный способ обеспечения непрерывной интеграции в процессе развертывания. По умолчанию каждая команда git push
из репозитория GitHub запускает действие сборки и развертывания. Вы внесете некоторые изменения в базу кода с помощью Visual Studio Code непосредственно в браузере, а затем позволите GitHub Actions выполнить развертывание автоматически.
Instructions | Снимок экрана |
---|---|
В новом окне браузера:
|
|
На странице GitHub откройте Visual Studio Code в браузере, нажав клавишу . . |
|
В Visual Studio Code в браузере откройте файл config/database.php в обозревателе. В подключении mysql убедитесь, что уже используются параметры приложения, созданные ранее для подключения MySQL (DB_HOST , DB_DATABASE , DB_USERNAME , DB_PASSWORD , MYSQL_ATTR_SSL_CA ). |
|
Вернитесь на страницу Службы приложений и в меню слева выберите Центр развертывания. | |
На странице Центра развертывания:
.github/workflows . |
|
На странице Центра развертывания:
|
|
Чтобы внести изменения в код, перейдите в Visual Studio Code в браузере:
Совет Действие GitHub определяется файлом в репозитории GitHub в .github/workflow. Его можно ускорить, настроив этот файл. |
4. Создание схемы базы данных
Мастер создания помещает База данных Azure для MySQL гибкий экземпляр сервера за частную конечную точку, поэтому он доступен только из виртуальной сети. Так как приложение Службы приложений уже интегрировано с виртуальной сетью, выполнять миграции баз данных с вашей базой данных проще всего непосредственно из контейнера Службы приложений.
Instructions | Снимок экрана |
---|---|
На странице Служба приложений:
https://<app-name>.scm.azurewebsites.net/webssh/host . |
|
В терминале SSH:
|
5. Изменение корня сайта
Жизненный цикл приложения Laravel начинается в каталоге /public. Контейнер PHP 8.0 по умолчанию для Службы приложений использует Nginx, который запускается в корневом каталоге приложения. Чтобы изменить корневой каталог сайта, нужно изменить файл конфигурации Nginx в контейнере PHP 8.0 (/etc/nginx/sites-available/default). Для удобства пример репозитория содержит пользовательский файл конфигурации, который называется default. Как отмечалось ранее, не следует заменять этот файл с помощью оболочки SSH, так как после перезапуска приложения такие изменения будут потеряны.
6. Переход в приложение
7. Потоковая передача журналов диагностики
Очистка ресурсов
По завершении работы можно удалить все ресурсы из вашей подписки Azure, удалив соответствующую группу ресурсов.
Часто задаваемые вопросы
- Сколько стоит такая конфигурация?
- Разделы справки подключиться к гибкой базе данных сервера База данных Azure для MySQL, защищенной виртуальной сетью?
- Как осуществляется разработка локальных приложений с использованием GitHub Actions?
- Почему развертывание GitHub Actions идет так медленно?
Сколько стоит такая конфигурация?
Цены на создание ресурсов приведены ниже:
- План службы приложений создается на уровне Premium V2, и его можно масштабировать вверх или вниз. См. цены на Службу приложений.
- База данных Azure для MySQL гибкий экземпляр сервера создается на уровне B1ms и может масштабироваться вверх или вниз. При использовании бесплатной учетной записи Azure уровень B1ms предоставляется бесплатно в течение 12 месяцев до достижения ежемесячных пределов. См. База данных Azure для MySQL гибкие цены на сервер.
- Плата за виртуальную сеть не взимается, если только вы не настроите дополнительные функциональные возможности, такие как пиринг. См. цены на виртуальные сети Azure.
- За частную зону DNS взимается небольшая плата. См. цены на Azure DNS.
Разделы справки подключиться к гибкой базе данных сервера База данных Azure для MySQL, защищенной виртуальной сетью?
Чтобы подключиться к гибкой базе данных сервера База данных Azure для MySQL, можно использовать несколько методов на основе средств и сред в вашем распоряжении:
- Доступ к средству командной строки:
mysql
Используйте команду из терминала SSH приложения для базового доступа.
- Классические средства (например, MySQL Workbench):
- Использование туннелирования SSH с Помощью Azure CLI:
- Создайте сеанс SSH в веб-приложении с помощью Azure CLI.
- Используйте сеанс SSH для туннелирования трафика в MySQL.
- Использование VPN типа "сеть — сеть" или виртуальной машины Azure:
- Использование туннелирования SSH с Помощью Azure CLI:
- Интеграция Azure Cloud Shell:
- Интеграция Azure Cloud Shell с виртуальной сетью для прямого доступа.
Как осуществляется разработка локальных приложений с использованием GitHub Actions?
Возьмем автоматически созданный файл рабочего процесса из Службы приложений в качестве примера, где каждый git push
запускает новый прогон сборки и развертывания. Из локального клона репозитория GitHub вы вносите необходимые обновления в GitHub. Например:
git add .
git commit -m "<some-message>"
git push origin main
Почему развертывание GitHub Actions идет так медленно?
Автоматически созданный файл рабочего процесса из Службы приложений определяет прогон из двух заданий — сначала сборка, потом развертывание. Так как каждое задание выполняется в собственной чистой среде, файл рабочего процесса гарантирует, что задание deploy
имеет доступ к файлам из задания build
:
- В конце задания
build
отправьте файлы в виде артефактов. - В начале задания
deploy
скачайте эти артефакты.
Большая часть времени, затрачиваемого процессом из двух заданий, уходит на отправку и скачивание артефактов. При желании файл рабочего процесса можно упростить, объединив два задания в одно, что устраняет необходимость в шагах отправки и скачивания.
Итоги
Из этого руководства вы узнали, как:
- Создание безопасного по умолчанию PHP и База данных Azure для MySQL гибкого серверного приложения в Azure
- Настройка секретов подключения для База данных Azure для MySQL гибкого сервера с помощью параметров приложения
- Развертывание кода приложения с помощью GitHub Actions
- Обновление и повторное развертывание приложения
- Безопасные переносы баз данных
- Потоковая передача журналов диагностики из Azure.
- Управление приложением на портале Azure.