Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Примечание.
Запуск из пакета не поддерживается для приложений Python. При развертывании ZIP-файла кода Python необходимо установить флаг, чтобы включить автоматизацию сборки Azure. Автоматизация сборки создаст виртуальную среду Python для приложения и установит необходимые требования и пакет. Дополнительные сведения см. в статье об автоматизации сборки .
В службе приложений Azureприложения можно запускать непосредственно из файла пакета развертывания ZIP. Здесь показано, как включить эту функцию в вашем приложении.
Все остальные методы развертывания в Службе приложений имеют общее значение: ваши распакуемые файлы развертываются в D:\home\site\wwwroot в приложении (или /home/site/wwwroot для приложений Linux). Так как в среде выполнения приложение использует тот же каталог, развертывание может завершиться неудачей из-за конфликтов блокировки файлов, и приложение может вести себя непредсказуемо, так как некоторые файлы еще не обновлены. Чтобы включить этот параметр, вам не нужно назначать какое-либо значение переменной WEBSITE_RUN_FROM_PACKAGE
или полностью удалять его.
Напротив, при запуске непосредственно из ZIP-пакета файлы в пакете не копируются в каталог wwwroot . Вместо этого сам ZIP-пакет монтируется непосредственно как каталог wwwroot только для чтения. Чтобы включить этот параметр, задайте WEBSITE_RUN_FROM_PACKAGE
значение =1 или укажите URL-адрес ZIP-файла. Существует несколько преимуществ непосредственно запуска из пакета:
- Устраняет конфликты блокировки файлов между развертыванием и средой выполнения.
- Гарантирует, что в любое время выполняются только полностью развернутые приложения.
- Можно выполнить развертывание в рабочее приложение с последующим перезапуском.
- Повышается производительность развертываний Azure Resource Manager.
- Может сократиться время "холодного запуска", особенно для функций JavaScript с большими деревьями пакетов npm.
Примечание.
В настоящее время поддерживаются только ZIP-файлы пакета.
Создание ZIP-пакета проекта
Внимание
При создании ZIP-пакета для развертывания не включайте корневой каталог. Включите только файлы и каталоги в корневой каталог. При скачивании репозитория GitHub в виде ZIP-файла нельзя развернуть этот файл как есть в службу приложений. GitHub добавляет вложенные каталоги на верхнем уровне, которые не работают со службой приложений.
В окне терминала на локальном компьютере перейдите к корневому каталогу проекта приложения.
Этот каталог должен содержать файл записи в веб-приложение, например index.html
, index.php
и app.js
. Он также может содержать такие файлы управления пакетами, как project.json
, composer.json
, package.json
и bower.json
requirements.txt
.
Если вы не хотите, чтобы служба приложений выполняла автоматизацию развертывания, выполните все задачи сборки. Например: npm
, , bower
gulp
, composer
и pip
. Убедитесь, что у вас есть все файлы, необходимые для запуска приложения. Этот шаг является обязательным, если вы хотите запустить пакет напрямую.
Создайте ZIP-архив всего содержимого проекта. Для проектов dotnet
добавьте всё содержимое выходного каталога команды dotnet publish
, за исключением самого каталога. Например, введите следующую команду в терминале, чтобы создать ZIP-пакет, содержащий содержимое текущего каталога:
# Bash
zip -r <file-name>.zip .
# PowerShell
Compress-Archive -Path * -DestinationPath <file-name>.zip
Включение запуска из ZIP-пакета
Параметр WEBSITE_RUN_FROM_PACKAGE
приложения включает запуск из ZIP-пакета. Чтобы задать его, запустите следующую команду с помощью Azure CLI.
az webapp config appsettings set --resource-group <group-name> --name <app-name> --settings WEBSITE_RUN_FROM_PACKAGE="1"
WEBSITE_RUN_FROM_PACKAGE="1"
позволяет запускать ваше приложение из ZIP-пакета, локального для вашего приложения. Можно также запустить из удаленного пакета.
Запуск ZIP-пакета
Самый простой способ запустить ZIP-пакет в службе приложений — с помощью команды Azure CLI az webapp deployment source config-zip . Например:
az webapp deploy --resource-group <group-name> --name <app-name> --src-path <filename>.zip
WEBSITE_RUN_FROM_PACKAGE
Так как задан параметр приложения, эта команда не извлекает содержимое ZIP-пакета в каталог D:\home\site\wwwroot приложения. Вместо этого он передает ZIP-файл "как есть" в D:\home\data\SitePackages и создает packagename.txt в том же каталоге, который содержит имя ZIP-пакета для загрузки во время выполнения. При отправке ZIP-пакета другим способом (например, FTP) необходимо создать каталог D:\home\data\SitePackages и файл packagename.txt вручную.
Команда также перезапускает приложение. Так как параметр WEBSITE_RUN_FROM_PACKAGE
задан, служба приложений подключает отправленный пакет как каталог wwwroot только для чтения и запускает приложение непосредственно из этого подключенного каталога.
Запустить с внешнего URL-адреса
Вы также можете запустить ZIP-пакет из внешнего URL-адреса, например хранилища BLOB-объектов Azure. Azure Storage Explorer можно использовать для загрузки ZIP-файлов пакетов в учетную запись хранения Blob. Следует использовать контейнер частного хранилища с подписанным URL-адресом (SAS) или управляемое удостоверение, чтобы среда выполнения службы приложений могла безопасно получить доступ к ZIP-пакету.
Примечание.
В настоящее время существующий ресурс службы приложений, на котором выполняется локальный ZIP-пакет, нельзя перенести для запуска из удаленного ZIP-пакета. Вам потребуется создать новый ресурс Служба приложений, настроенный для запуска из внешнего URL-адреса.
Когда вы загрузите файл в хранилище Blob и получите для него URL-адрес SAS, установите параметр приложения WEBSITE_RUN_FROM_PACKAGE
на этот URL-адрес. Убедитесь, что URL-адрес заканчивается .zip
. В приведенном ниже примере показано, как сделать это с помощью Azure CLI.
az webapp config appsettings set --name <app-name> --resource-group <resource-group-name> --settings WEBSITE_RUN_FROM_PACKAGE="https://myblobstorage.blob.core.windows.net/content/SampleCoreMVCApp.zip?st=2018-02-13T09%3A48%3A00Z&se=2044-06-14T09%3A48%3A00Z&sp=rl&sv=2017-04-17&sr=b&sig=bNrVrEFzRHQB17GFJ7boEanetyJ9DGwBSV8OM3Mdh%2FM%3D"
При публикации обновленного пакета с тем же именем в хранилище BLOB-объектов необходимо перезапустить приложение, чтобы обновленный пакет загружался в службу приложений.
Получение доступа к пакету в Azure Blob Storage с помощью управляемого удостоверения.
Вы можете настроить Хранилище BLOB-объектов Azure для авторизации запросов с помощью Microsoft Entra ID. Эта конфигурация означает, что вместо создания ключа SAS с истечением срока действия можно использовать управляемое удостоверение приложения. По умолчанию используется назначаемое системой удостоверение приложения. Если вы хотите указать пользовательское удостоверение, можно указать ИД ресурса этого удостоверения в параметре приложения WEBSITE_RUN_FROM_PACKAGE_BLOB_MI_RESOURCE_ID
. Параметр также может принимать SystemAssigned
в качестве значения, что эквивалентно опущению параметра.
Чтобы разрешить получение пакета с помощью удостоверения, выполните следующие действия:
Убедитесь, что большой двоичный объект настроен для частного доступа.
Предоставьте удостоверению роль Читатель данных больших двоичных объектов хранилища с областью действия для большого двоичного объекта пакета. Для получения подробной информации о назначении роли см. статью Назначение роли Azure для доступа к данным BLOB-объектов.
Задайте параметр приложения
WEBSITE_RUN_FROM_PACKAGE
для URL-адреса большого двоичного объекта пакета. Этот URL-адрес обычно является формойhttps://{storage-account-name}.blob.core.windows.net/{container-name}/{path-to-package}
или аналогичным.Если вы хотите указать пользовательское удостоверение, можно указать ИД ресурса этого удостоверения в параметре приложения
WEBSITE_RUN_FROM_PACKAGE_BLOB_MI_RESOURCE_ID
. Параметр также может принимать "SystemAssigned" в качестве значения, хотя это то же самое, что и полное его отсутствие. Идентификатор ресурса — это стандартное представление ресурса в Azure. Для управляемого удостоверения, назначаемого пользователем, это будет/subscriptions/subid/resourcegroups/rg-name/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity-name
. Идентификатор ресурса управляемого удостоверения, назначаемого пользователем, можно получить в разделе "Параметры ->Свойства ->Идентификатор назначенного пользователем управляемого удостоверения.
Развертывание файлов веб-заданий при запуске из пакета
При включении запуска приложения из пакета есть два способа развертывания файлов веб-заданий:
- Разверните в том же ZIP-пакете, что и ваше приложение: включите их так, как вы обычно это делаете в
<project-root>\app_data\jobs\...
(что соответствует пути развертывания\site\wwwroot\app_data\jobs\...
, указанному в руководстве по веб-заданиям). - Развертывание отдельно от ZIP-пакета приложения: так как обычный путь
\site\wwwroot\app_data\jobs\...
развертывания теперь доступен только для чтения, вы не можете развернуть файлы веб-заданий там. Вместо этого разверните файлы веб-заданий в\site\jobs\...
, в котором не только чтение. Веб-задания, развернутые в\site\wwwroot\app_data\jobs\...
и\site\jobs\...
в обоих запусках.
Примечание.
Когда \site\wwwroot
становится доступным только для чтения, операции, такие как создание disable.job, завершаются сбоем.
Устранение неполадок
- Выполнение непосредственно из пакета делает его
wwwroot
доступным только для чтения. При попытке записи файлов в этот каталог приложение получит сообщение об ошибке. - Форматы TAR и GZIP не поддерживаются.
- ZIP-файл может содержать не более 1 ГБ
- Эта функция несовместима с локальным кэшем.
- Для повышения производительности холодного запуска используйте параметр local ZIP (
WEBSITE_RUN_FROM_PACKAGE
= 1).