Учебник. Развертывание приложения ASP.NET Core с подключением к Базе данных SQL Azure в Службе приложений Azure

В этом руководстве вы узнаете, как развернуть управляемое данными приложение ASP.NET Core для приложение Azure Service и подключиться к База данных SQL Azure. Вы также развернете Кэш Azure для Redis, чтобы включить код кэширования в приложении. Служба приложений Azure — это высокомасштабируемая веб-служба с поддержкой самостоятельного исправления, которая позволяет легко развертывать приложения в Windows или Linux. Хотя в этом руководстве используется приложение ASP.NET Core 7.0, процесс совпадает с другими версиями ASP.NET Core и ASP платформа .NET Framework.

Для работы с руководством требуется следующее:

Пример приложения

Чтобы изучить пример приложения, используемого в этом руководстве, скачайте его из репозитория https://github.com/Azure-Samples/msdocs-app-service-sqldb-dotnetcore или клонируйте его с помощью следующей команды Git:

git clone https://github.com/Azure-Samples/msdocs-app-service-sqldb-dotnetcore.git
cd msdocs-app-service-sqldb-dotnetcore

1. Создание Служба приложений, базы данных и кэша

В этом шаге вы создадите ресурсы Azure. Действия, используемые в этом руководстве, создают набор защищенных по умолчанию ресурсов, которые включают Служба приложений, База данных SQL Azure и кэш Azure. В процессе создания вы укажете следующее:

  • Имя веб-приложения. Это имя используется в составе DNS-имени вашего веб-приложения в виде https://<app-name>.azurewebsites.net.
  • Регион для физического запуска приложения.
  • Стек среды выполнения для приложения. Здесь вы выбираете версию .NET, используемую для вашего приложения.
  • План размещения для приложения. Это ценовая категория, которая включает набор функций и емкость масштабирования для вашего приложения.
  • Группа ресурсов для приложения. Группа ресурсов позволяет группировать (в логическом контейнере) все ресурсы Azure, необходимые для приложения.

Войдите на портал Azure и выполните следующие действия, чтобы создать ресурсы Службы приложений Azure.

Шаг 1. В портал Azure:

  1. Введите "веб-приложение база данных" в строке поиска в верхней части портала Azure.
  2. Выберите элемент с меткой Веб-приложение и база данных под заголовком Marketplace. Вы также можете перейти напрямую к мастеру создания.

Снимок экрана, на котором показано, как использовать поле поиска на верхней панели инструментов для поиска мастера создания

Шаг 2. На странице "Создание веб-приложения + база данных " заполните форму следующим образом.

  1. Группа ресурсов → выбрать создать и использовать имя msdocs-core-sql-tutorial.
  2. Регион → любой ближайший к вам регион Azure.
  3. Имяmsdocs-core-sql-XYZ, где XYZ является тремя случайными символами. Это имя должно быть уникальным в Azure.
  4. Стек среды выполнения → .NET 7 (STS).
  5. Добавьте Кэш Azure для Redis? → Да.
  6. План размещения — Базовый. Позже, когда все будет готово, вы сможете вертикально увеличить масштаб до рабочей ценовой категории.
  7. Выберите SQLAzure в качестве ядра СУБД. База данных SQL Azure — это полностью управляемая платформа как служба (PaaS), которая всегда работает в последней стабильной версии SQL Server.
  8. Выберите Review + create (Просмотреть и создать).
  9. После завершения проверки щелкните Создать.

Снимок экрана: настройка нового приложения и базы данных в мастере

Шаг 3. Развертывание занимает несколько минут. После завершения развертывания нажмите кнопку Перейти к ресурсу. Вы перейдете непосредственно в приложение Службы приложений, но будут созданы следующие ресурсы:

  • Группа ресурсов — Контейнер для всех созданных ресурсов.
  • План службы приложений — определяет вычислительные ресурсы для Службы приложений. Создается план Linux на уровне Базовый.
  • Служба приложений — представляет приложение и выполняется в плане службы приложений.
  • Виртуальная сеть — интегрирована с приложением Службы приложений и изолирует внутренний сетевой трафик.
  • Частные конечные точки → конечные точки Access для сервера базы данных и кэша Redis в виртуальной сети.
  • Сетевые интерфейсы → Представляют частные IP-адреса, по одному для каждой из частных конечных точек.
  • База данных SQL Azure сервер → доступен только за частной конечной точкой.
  • База данных SQL Azure → базу данных и пользователя создаются на сервере.
  • Кэш Azure для Redis → доступно только за частной конечной точкой.
  • Частная зона DNS зонах → включить разрешение DNS сервера базы данных и кэш Redis в виртуальной сети.

Снимок экрана: процесс развертывания завершен.

2. Проверка строка подключения

Мастер создания уже создал строка подключения для базы данных SQL и кэша Redis. На этом шаге найдите созданные строка подключения для более поздних версий.

Шаг 1. На странице Служба приложений в меню слева выберите "Конфигурация".

Снимок экрана: открытие страницы конфигурации в Службе приложений.

Шаг 2.

  1. Прокрутите страницу до нижней части страницы и найдите AZURE_SQL_CONNECTIONSTRING в разделе строк Подключение ion. Эта строка была создана из новой базы данных SQL мастером создания. Чтобы настроить приложение, это имя все, что вам нужно.
  2. Кроме того, найдите AZURE_REDIS_CONNECTIONSTRING в разделе параметров приложения. Эта строка была создана из нового кэша Redis мастером создания. Чтобы настроить приложение, это имя все, что вам нужно.
  3. Если вы хотите, нажмите кнопку "Изменить " справа от каждого параметра и просмотреть или скопировать его значение. Позже вы измените приложение на использование AZURE_SQL_CONNECTIONSTRING и AZURE_REDIS_CONNECTIONSTRING.

Снимок экрана: создание параметра приложения.

3. Развертывание примера кода

На этом шаге вы настроите развертывание GitHub с помощью GitHub Actions. Это всего лишь один из множества способов развертывания в Службе приложений, но это также отличный способ обеспечения непрерывной интеграции в процессе развертывания. По умолчанию каждая команда git push из репозитория GitHub запускает действие сборки и развертывания.

Шаг 1. В новом окне браузера:

  1. Войдите в свою учетную запись GitHub.
  2. Перейдите к https://github.com/Azure-Samples/msdocs-app-service-sqldb-dotnetcore.
  3. Выберите Создать вилку.
  4. Щелкните Создать вилку.

Снимок экрана: создание вилка примера репозитория GitHub.

Шаг 2. На странице Служба приложений в меню слева выберите Центр развертывания.

Снимок экрана: открытие центра развертывания в Службе приложений.

Шаг 3. На странице Центра развертывания:

  1. В поле Источник выберите GitHub. По умолчанию в качестве поставщика сборки выбрано GitHub Actions.
  2. Войдите в свою учетную запись GitHub и следуйте инструкциям по авторизации Azure.
  3. В поле Организация выберите свою учетную запись.
  4. В репозитории выберите msdocs-app-service-sqldb-dotnetcore.
  5. В поле Ветвь выберите main.
  6. В меню сверху выберите Сохранить. Служба приложений фиксирует файл рабочего процесса в выбранном репозитории GitHub в каталоге .github/workflows.

Снимок экрана: настройка CI/CD с помощью GitHub Actions.

Шаг 4. Верните страницу GitHub примера вилки, откройте Visual Studio Code в браузере, нажав клавишу . .

Снимок экрана: открытие окна браузера с Visual Studio Code в GitHub.

Шаг 5. В Visual Studio Code в браузере:

  1. Откройте DotNetCoreSqlDb/appsettings.json в обозревателе.
  2. Измените имя MyDbConnectionAZURE_SQL_CONNECTIONSTRINGстрока подключения на , которое соответствует строка подключения, созданному в Служба приложений ранее.

Снимок экрана: строка подключения имя изменено в appsettings.json.

Шаг 6.

  1. Откройте DotNetCoreSqlDb/Program.cs в обозревателе.
  2. В методе измените options.UseSqlServer имя MyDbConnectionAZURE_SQL_CONNECTIONSTRINGстрока подключения на . Здесь строка подключения используется примером приложения.
  3. builder.Services.AddDistributedMemoryCache(); Удалите метод и замените его следующим кодом. Он изменяет код с помощью кэша в памяти в кэш Redis в Azure, и он делает это с помощью более ранних версий AZURE_REDIS_CONNECTIONSTRING .
builder.Services.AddStackExchangeRedisCache(options =>
{
options.Configuration = builder.Configuration["AZURE_REDIS_CONNECTIONSTRING"];
options.InstanceName = "SampleInstance";
});

Снимок экрана: строка подключения имя изменено в Program.cs.

Шаг 7.

  1. Откройте github/workflows/main_msdocs-core-sql-XYZ в обозревателе. Этот файл был создан мастером создания Служба приложений.
  2. На шаге dotnet publish добавьте шаг, чтобы установить средство Entity Framework Core с помощью команды dotnet tool install -g dotnet-ef --version 7.0.14.
  3. На новом шаге добавьте еще один шаг, чтобы создать пакет миграции базы данных в пакете развертывания: dotnet ef migrations bundle --runtime linux-x64 -p DotNetCoreSqlDb/DotNetCoreSqlDb.csproj -o ${{env.DOTNET_ROOT}}/myapp/migrate Пакет миграции — это автономный исполняемый файл, который можно запустить в рабочей среде, не требуя пакета SDK для .NET. Контейнер linux Служба приложений имеет только среду выполнения .NET, а не пакет SDK для .NET.

Снимок экрана: шаги, добавленные в файл рабочего процесса GitHub для пакета миграции базы данных.

Шаг 8.

  1. Выберите расширение Система управления версиями.
  2. В текстовом поле введите сообщение фиксации, например Configure DB & Redis & add migration bundle.
  3. Выберите "Фиксация" и "Отправить".

Снимок экрана: фиксация изменений и отправка на GitHub.

Шаг 9. Назад на странице Центра развертывания в портал Azure:

  1. Выберите Журналы. Новый запуск развертывания уже запущен из зафиксированных изменений.
  2. В элементе журнала для запуска развертывания выберите запись "Сборка и развертывание журналов " с последней меткой времени.

Снимок экрана: открытие журналов развертывания в центре развертывания.

Шаг 10. Вы перейдете в репозиторий GitHub и увидите, что действие GitHub выполняется. Файл рабочего процесса определяет два отдельных этапа: сборку и развертывание. Дождитесь, пока в выполнении действия GitHub не будет показано состояние Завершено. Это займет несколько минут.

Снимок экрана: выполнение действия GitHub.

4. Создание схемы базы данных

С помощью База данных SQL, защищенной виртуальной сетью, проще всего запустить миграцию баз данных dotnet в сеансе SSH с контейнером Служба приложений.

Шаг 1. Вернитесь на страницу Служба приложений в меню слева выберите SSH.

Снимок экрана: открытие оболочки SSH для  вашего приложения с портала Azure.

Шаг 2. В терминале SSH:

  1. Запустите cd /home/site/wwwroot. Вот все развернутые файлы.
  2. Запустите пакет миграции, созданный рабочим процессом GitHub../migrate При успешном завершении Служба приложений успешно подключается к База данных SQL. После перезапуска приложения могут сохраняться только изменения в файлах в /home. Изменения за пределами /home не сохраняются.

Снимок экрана: команды для запуска в оболочке SSH и их выходные данные.

5. Перейдите к приложению

Шаг 1. На странице Служба приложений:

  1. В меню слева выберите Обзор.
  2. Выберите URL-адрес своего приложения. Также можно перейти непосредственно по адресу https://<app-name>.azurewebsites.net.

Снимок экрана: запуск Службы приложений с портала Azure.

Шаг 2. Добавление нескольких задач в список. Поздравляем, вы работаете с безопасным приложением на основе данных ASP.NET Core в службе приложение Azure.

Снимок экрана: приложение .NET Core, работающее в Служба приложений.

Совет

Пример приложения реализует шаблон кэша в сторону . Когда вы посещаете представление данных во второй раз или перезагрузите ту же страницу после внесения изменений данных, время обработки на веб-странице показывает гораздо быстрее, так как загружает данные из кэша вместо базы данных.

6. Потоковая передача журналов диагностики

Служба приложений Azure захватывает все сообщения, выводимые на консоль, чтобы помочь в диагностике проблем приложения. Пример приложения выводит сообщения журнала консоли в каждой из своих конечных точек для демонстрации этой возможности.

Шаг 1. На странице Служба приложений:

  1. В меню слева выберите Журналы службы приложений.
  2. Под элементом Ведение журнала приложения выберите Файловая система.

Снимок экрана: включение собственных журналов в Службе приложений на портале Azure.

Шаг 2. В меню слева выберите поток журналов. Вы увидите журналы для своего приложения, включая журналы платформы и журналы из контейнера.

Снимок экрана: просмотр потока журналов на портале Azure.

7. Очистка ресурсов

По завершении работы можно удалить все ресурсы из вашей подписки Azure, удалив соответствующую группу ресурсов.

Шаг 1. В строке поиска в верхней части портал Azure:

  1. Введите имя группы ресурсов.
  2. Выберите группу ресурсов.

Снимок экрана: поиск группы ресурсов на портале Azure и переход к ней.

Шаг 2. На странице группы ресурсов выберите "Удалить группу ресурсов".

Снимок экрана: расположение кнопки

Шаг 3.

  1. Введите имя группы ресурсов для подтверждения удаления.
  2. Выберите команду Удалить.

Снимок экрана: диалоговое окно подтверждения для удаления группы ресурсов на портале Azure. :

Часто задаваемые вопросы

Сколько стоит такая конфигурация?

Цены на создание ресурсов приведены ниже:

  • План службы приложений создается на уровне Базовый, и его можно масштабировать вверх или вниз. См. цены на Службу приложений.
  • База данных SQL Azure создается в общем назначении, бессерверный уровень на оборудовании серии "Стандартный" с минимальными ядрами. Существует небольшая стоимость и может быть распределена по другим регионам. Вы можете свести к минимуму затраты еще больше, уменьшая максимальный размер или масштабируя его, изменяя уровень обслуживания, уровень вычислений, конфигурацию оборудования, количество ядер, размер базы данных и избыточность зоны. См. страницу Цены на Базу данных SQL Azure.
  • Кэш Azure для Redis создается на уровне "Базовый" с минимальным размером кэша. Существует небольшая стоимость, связанная с этим уровнем. Его можно масштабировать до более высоких уровней производительности для повышения доступности, кластеризация и других функций. См. Кэш Azure для Redis цены.
  • Плата за виртуальную сеть не взимается, если только вы не настроите дополнительные функциональные возможности, такие как пиринг. См. цены на виртуальные сети Azure.
  • За частную зону DNS взимается небольшая плата. См. цены на Azure DNS.

Разделы справки подключиться к серверу База данных SQL Azure, защищенному за виртуальной сетью с другими средствами?

  • Для базового доступа из программы командной строки можно запустить sqlcmd из терминала SSH приложения. Контейнер приложения не предоставляется вместе с sqlcmd, поэтому его необходимо установить вручную. Помните, что установленный клиент не сохраняется во время перезапуска приложения.
  • Чтобы подключиться из клиента SQL Server Management Studio или из Visual Studio, компьютер должен находиться в виртуальной сети. Например, это может быть виртуальная машина Azure, подключенная к одной из подсетей, или компьютер в локальной сети с VPN-подключением типа "сеть — сеть" к виртуальной сети Azure.

Как осуществляется разработка локальных приложений с использованием GitHub Actions?

Возьмем автоматически созданный файл рабочего процесса из Службы приложений в качестве примера, где каждый git push запускает новый прогон сборки и развертывания. Из локального клона репозитория GitHub вы вносите необходимые обновления в GitHub. Например:

git add .
git commit -m "<some-message>"
git push origin main

Разделы справки ошибки отладки во время развертывания GitHub Actions?

Если шаг завершается ошибкой в файле рабочего процесса GitHub, попробуйте изменить неудающуюся команду, чтобы создать более подробные выходные данные. Например, можно получить больше выходных данных из любой dotnet команды, добавив -v этот параметр. Зафиксируйте и отправьте изменения, чтобы активировать другое развертывание для Служба приложений.

Следующие шаги

Перейдите к следующему руководству, чтобы узнать, как защитить приложение с помощью личного домена и сертификата.

Также ознакомьтесь с другими ресурсами: