Руководство по созданию PHP (Laravel) и База данных Azure для MySQL — гибкое приложение сервера в службе приложение Azure
Служба приложений 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", чтобы бесплатно попробовать База данных 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
В этом шаге вы создадите ресурсы Azure. Действия, описанные в этом руководстве, создают Служба приложений и База данных Azure для MySQL гибкую конфигурацию сервера, безопасную по умолчанию. В процессе создания вы укажете следующее:
- Имя веб-приложения. Это имя используется в составе DNS-имени вашего веб-приложения в виде
https://<app-name>.azurewebsites.net
. - Среда выполнения для приложения. Здесь следует выбрать версию PHP, которая будет использоваться для приложения.
- Группа ресурсов для приложения. Группа ресурсов позволяет группировать (в логическом контейнере) все ресурсы Azure, необходимые для приложения.
Войдите на портал Azure и выполните следующие действия, чтобы создать ресурсы Службы приложений Azure.
Instructions | Снимок экрана |
---|---|
В портал Azure:
|
![]() |
На странице Создание веб-приложения+базы данных заполните форму следующим образом.
|
![]() |
Развертывание занимает несколько минут и создает следующие ресурсы:
|
![]() |
Мастер создания создал параметры приложения, которые можно использовать для подключения к базе данных, но не в формате, который можно использовать для кода. На этом шаге вы изменяете и обновляете параметры приложения в нужный формат.
Instructions | Снимок экрана | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
В левом меню на странице Службы приложений выберите Конфигурация. | ![]() |
||||||||||
На вкладке "Параметры приложения" на странице "Конфигурация" для каждого из следующих параметров выберите "Изменить", обновите поле "Имя" новыми значениями и нажмите кнопку "ОК".
|
![]() |
||||||||||
Создайте новый MYSQL_ATTR_SSL_CA параметр базы данных:
|
![]() |
||||||||||
Создайте следующие дополнительные параметры приложения, выполнив те же действия, а затем нажмите кнопку "Сохранить".
|
![]() |
На этом шаге вы настроите развертывание 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. Его можно ускорить, настроив этот файл. |
![]() |
Мастер создания помещает База данных Azure для MySQL гибкий экземпляр сервера за частную конечную точку, поэтому он доступен только из виртуальной сети. Так как приложение Службы приложений уже интегрировано с виртуальной сетью, выполнять миграции баз данных с вашей базой данных проще всего непосредственно из контейнера Службы приложений.
Instructions | Снимок экрана |
---|---|
На странице Служба приложений:
https://<app-name>.scm.azurewebsites.net/webssh/host . |
![]() |
В терминале SSH:
|
![]() |
Жизненный цикл приложения Laravel начинается в каталоге /public. Контейнер PHP 8.0 по умолчанию для Службы приложений использует Nginx, который запускается в корневом каталоге приложения. Чтобы изменить корневой каталог сайта, нужно изменить файл конфигурации Nginx в контейнере PHP 8.0 (/etc/nginx/sites-available/default). Для удобства пример репозитория содержит пользовательский файл конфигурации, который называется default. Как отмечалось ранее, не следует заменять этот файл с помощью оболочки SSH, так как после перезапуска приложения такие изменения будут потеряны.
По завершении работы можно удалить все ресурсы из вашей подписки 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 с виртуальной сетью для прямого доступа.
Возьмем автоматически созданный файл рабочего процесса из Службы приложений в качестве примера, где каждый git push
запускает новый прогон сборки и развертывания. Из локального клона репозитория GitHub вы вносите необходимые обновления в GitHub. Например:
git add .
git commit -m "<some-message>"
git push origin main
Автоматически созданный файл рабочего процесса из Службы приложений определяет прогон из двух заданий — сначала сборка, потом развертывание. Так как каждое задание выполняется в собственной чистой среде, файл рабочего процесса гарантирует, что задание deploy
имеет доступ к файлам из задания build
:
- В конце задания
build
отправьте файлы в виде артефактов. - В начале задания
deploy
скачайте эти артефакты.
Большая часть времени, затрачиваемого процессом из двух заданий, уходит на отправку и скачивание артефактов. При желании файл рабочего процесса можно упростить, объединив два задания в одно, что устраняет необходимость в шагах отправки и скачивания.
Из этого руководства вы узнали, как:
- Создание безопасного по умолчанию PHP и База данных Azure для MySQL гибкого серверного приложения в Azure
- Настройка секретов подключения для База данных Azure для MySQL гибкого сервера с помощью параметров приложения
- Развертывание кода приложения с помощью GitHub Actions
- Обновление и повторное развертывание приложения
- Безопасные переносы баз данных
- Потоковая передача журналов диагностики из Azure.
- Управление приложением на портале Azure.