Учебник. Развертывание приложения 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.
Для работы с руководством требуется следующее:
- Учетная запись Azure с активной подпиской. Если у вас нет учетной записи Azure, ее можно создать бесплатно.
- Учетная запись GitHub. Вы также можете получить его бесплатно.
Пример приложения
Чтобы изучить пример приложения, используемого в этом руководстве, скачайте его из репозитория 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:
- Введите "веб-приложение база данных" в строке поиска в верхней части портала Azure.
- Выберите элемент с меткой Веб-приложение и база данных под заголовком Marketplace. Вы также можете перейти напрямую к мастеру создания.
Шаг 2. На странице "Создание веб-приложения + база данных " заполните форму следующим образом.
- Группа ресурсов → выбрать создать и использовать имя msdocs-core-sql-tutorial.
- Регион → любой ближайший к вам регион Azure.
- Имя → msdocs-core-sql-XYZ, где XYZ является тремя случайными символами. Это имя должно быть уникальным в Azure.
- Стек среды выполнения → .NET 7 (STS).
- Добавьте Кэш Azure для Redis? → Да.
- План размещения — Базовый. Позже, когда все будет готово, вы сможете вертикально увеличить масштаб до рабочей ценовой категории.
- Выберите SQLAzure в качестве ядра СУБД. База данных SQL Azure — это полностью управляемая платформа как служба (PaaS), которая всегда работает в последней стабильной версии SQL Server.
- Выберите Review + create (Просмотреть и создать).
- После завершения проверки щелкните Создать.
Шаг 3. Развертывание занимает несколько минут. После завершения развертывания нажмите кнопку Перейти к ресурсу. Вы перейдете непосредственно в приложение Службы приложений, но будут созданы следующие ресурсы:
- Группа ресурсов — Контейнер для всех созданных ресурсов.
- План службы приложений — определяет вычислительные ресурсы для Службы приложений. Создается план Linux на уровне Базовый.
- Служба приложений — представляет приложение и выполняется в плане службы приложений.
- Виртуальная сеть — интегрирована с приложением Службы приложений и изолирует внутренний сетевой трафик.
- Частные конечные точки → конечные точки Access для сервера базы данных и кэша Redis в виртуальной сети.
- Сетевые интерфейсы → Представляют частные IP-адреса, по одному для каждой из частных конечных точек.
- База данных SQL Azure сервер → доступен только за частной конечной точкой.
- База данных SQL Azure → базу данных и пользователя создаются на сервере.
- Кэш Azure для Redis → доступно только за частной конечной точкой.
- Частная зона DNS зонах → включить разрешение DNS сервера базы данных и кэш Redis в виртуальной сети.
2. Проверка строка подключения
Мастер создания уже создал строка подключения для базы данных SQL и кэша Redis. На этом шаге найдите созданные строка подключения для более поздних версий.
Шаг 1. На странице Служба приложений в меню слева выберите "Конфигурация".
Шаг 2.
- Прокрутите страницу до нижней части страницы и найдите AZURE_SQL_CONNECTIONSTRING в разделе строк Подключение ion. Эта строка была создана из новой базы данных SQL мастером создания. Чтобы настроить приложение, это имя все, что вам нужно.
- Кроме того, найдите AZURE_REDIS_CONNECTIONSTRING в разделе параметров приложения. Эта строка была создана из нового кэша Redis мастером создания. Чтобы настроить приложение, это имя все, что вам нужно.
- Если вы хотите, нажмите кнопку "Изменить " справа от каждого параметра и просмотреть или скопировать его значение.
Позже вы измените приложение на использование
AZURE_SQL_CONNECTIONSTRING
иAZURE_REDIS_CONNECTIONSTRING
.
3. Развертывание примера кода
На этом шаге вы настроите развертывание GitHub с помощью GitHub Actions. Это всего лишь один из множества способов развертывания в Службе приложений, но это также отличный способ обеспечения непрерывной интеграции в процессе развертывания. По умолчанию каждая команда git push
из репозитория GitHub запускает действие сборки и развертывания.
Шаг 1. В новом окне браузера:
- Войдите в свою учетную запись GitHub.
- Перейдите к https://github.com/Azure-Samples/msdocs-app-service-sqldb-dotnetcore.
- Выберите Создать вилку.
- Щелкните Создать вилку.
Шаг 2. На странице Служба приложений в меню слева выберите Центр развертывания.
Шаг 3. На странице Центра развертывания:
- В поле Источник выберите GitHub. По умолчанию в качестве поставщика сборки выбрано GitHub Actions.
- Войдите в свою учетную запись GitHub и следуйте инструкциям по авторизации Azure.
- В поле Организация выберите свою учетную запись.
- В репозитории выберите msdocs-app-service-sqldb-dotnetcore.
- В поле Ветвь выберите main.
- В меню сверху выберите Сохранить. Служба приложений фиксирует файл рабочего процесса в выбранном репозитории GitHub в каталоге
.github/workflows
.
Шаг 4. Верните страницу GitHub примера вилки, откройте Visual Studio Code в браузере, нажав клавишу .
.
Шаг 5. В Visual Studio Code в браузере:
- Откройте DotNetCoreSqlDb/appsettings.json в обозревателе.
- Измените имя
MyDbConnection
AZURE_SQL_CONNECTIONSTRING
строка подключения на , которое соответствует строка подключения, созданному в Служба приложений ранее.
Шаг 6.
- Откройте DotNetCoreSqlDb/Program.cs в обозревателе.
- В методе измените
options.UseSqlServer
имяMyDbConnection
AZURE_SQL_CONNECTIONSTRING
строка подключения на . Здесь строка подключения используется примером приложения. builder.Services.AddDistributedMemoryCache();
Удалите метод и замените его следующим кодом. Он изменяет код с помощью кэша в памяти в кэш Redis в Azure, и он делает это с помощью более ранних версийAZURE_REDIS_CONNECTIONSTRING
.
builder.Services.AddStackExchangeRedisCache(options =>
{
options.Configuration = builder.Configuration["AZURE_REDIS_CONNECTIONSTRING"];
options.InstanceName = "SampleInstance";
});
Шаг 7.
- Откройте github/workflows/main_msdocs-core-sql-XYZ в обозревателе. Этот файл был создан мастером создания Служба приложений.
- На шаге
dotnet publish
добавьте шаг, чтобы установить средство Entity Framework Core с помощью командыdotnet tool install -g dotnet-ef --version 7.0.14
. - На новом шаге добавьте еще один шаг, чтобы создать пакет миграции базы данных в пакете развертывания:
dotnet ef migrations bundle --runtime linux-x64 -p DotNetCoreSqlDb/DotNetCoreSqlDb.csproj -o ${{env.DOTNET_ROOT}}/myapp/migrate
Пакет миграции — это автономный исполняемый файл, который можно запустить в рабочей среде, не требуя пакета SDK для .NET. Контейнер linux Служба приложений имеет только среду выполнения .NET, а не пакет SDK для .NET.
Шаг 8.
- Выберите расширение Система управления версиями.
- В текстовом поле введите сообщение фиксации, например
Configure DB & Redis & add migration bundle
. - Выберите "Фиксация" и "Отправить".
Шаг 9. Назад на странице Центра развертывания в портал Azure:
- Выберите Журналы. Новый запуск развертывания уже запущен из зафиксированных изменений.
- В элементе журнала для запуска развертывания выберите запись "Сборка и развертывание журналов " с последней меткой времени.
Шаг 10. Вы перейдете в репозиторий GitHub и увидите, что действие GitHub выполняется. Файл рабочего процесса определяет два отдельных этапа: сборку и развертывание. Дождитесь, пока в выполнении действия GitHub не будет показано состояние Завершено. Это займет несколько минут.
4. Создание схемы базы данных
С помощью База данных SQL, защищенной виртуальной сетью, проще всего запустить миграцию баз данных dotnet в сеансе SSH с контейнером Служба приложений.
Шаг 1. Вернитесь на страницу Служба приложений в меню слева выберите SSH.
Шаг 2. В терминале SSH:
- Запустите
cd /home/site/wwwroot
. Вот все развернутые файлы. - Запустите пакет миграции, созданный рабочим процессом GitHub.
./migrate
При успешном завершении Служба приложений успешно подключается к База данных SQL. После перезапуска приложения могут сохраняться только изменения в файлах в/home
. Изменения за пределами/home
не сохраняются.
5. Перейдите к приложению
Шаг 1. На странице Служба приложений:
- В меню слева выберите Обзор.
- Выберите URL-адрес своего приложения. Также можно перейти непосредственно по адресу
https://<app-name>.azurewebsites.net
.
Шаг 2. Добавление нескольких задач в список. Поздравляем, вы работаете с безопасным приложением на основе данных ASP.NET Core в службе приложение Azure.
Совет
Пример приложения реализует шаблон кэша в сторону . Когда вы посещаете представление данных во второй раз или перезагрузите ту же страницу после внесения изменений данных, время обработки на веб-странице показывает гораздо быстрее, так как загружает данные из кэша вместо базы данных.
6. Потоковая передача журналов диагностики
Служба приложений Azure захватывает все сообщения, выводимые на консоль, чтобы помочь в диагностике проблем приложения. Пример приложения выводит сообщения журнала консоли в каждой из своих конечных точек для демонстрации этой возможности.
Шаг 1. На странице Служба приложений:
- В меню слева выберите Журналы службы приложений.
- Под элементом Ведение журнала приложения выберите Файловая система.
Шаг 2. В меню слева выберите поток журналов. Вы увидите журналы для своего приложения, включая журналы платформы и журналы из контейнера.
7. Очистка ресурсов
По завершении работы можно удалить все ресурсы из вашей подписки Azure, удалив соответствующую группу ресурсов.
Шаг 1. В строке поиска в верхней части портал Azure:
- Введите имя группы ресурсов.
- Выберите группу ресурсов.
Шаг 2. На странице группы ресурсов выберите "Удалить группу ресурсов".
Шаг 3.
- Введите имя группы ресурсов для подтверждения удаления.
- Выберите команду Удалить.
Часто задаваемые вопросы
- Сколько стоит такая конфигурация?
- Разделы справки подключиться к серверу База данных SQL Azure, защищенному за виртуальной сетью с другими средствами?
- Как осуществляется разработка локальных приложений с использованием GitHub Actions?
- Разделы справки ошибки отладки во время развертывания GitHub Actions?
Сколько стоит такая конфигурация?
Цены на создание ресурсов приведены ниже:
- План службы приложений создается на уровне Базовый, и его можно масштабировать вверх или вниз. См. цены на Службу приложений.
- База данных 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
этот параметр. Зафиксируйте и отправьте изменения, чтобы активировать другое развертывание для Служба приложений.
Следующие шаги
Перейдите к следующему руководству, чтобы узнать, как защитить приложение с помощью личного домена и сертификата.
Также ознакомьтесь с другими ресурсами: