Развертывание файлов в Службе приложений

В этой статье показано, как развернуть код в виде пакета ZIP, WAR, JAR или EAR в Службе приложений Azure. В ней также показано, как развертывать отдельные файлы в Службе приложений отдельно от пакета приложения.

Необходимые компоненты

Чтобы выполнить действия, описанные в этой статье, создайте приложение службы приложений или используйте приложение, созданное для другого руководства.

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

Создание 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-пакета

При развертывании ZIP-пакета Служба приложений распаковывает его содержимое, используя путь по умолчанию для приложения (D:\home\site\wwwroot в Windows, /home/site/wwwroot в Linux).

Развертывание из ZIP-пакета осуществляется с помощью той же службы Kudu, которая обеспечивает непрерывное развертывание на основе интеграции. Kudu поддерживает следующие возможности развертывания из ZIP-пакета:

  • удаление файлов, оставшихся после предыдущего развертывания;
  • включение процесса сборки по умолчанию, в том числе восстановления пакетов;
  • настройку развертывания, в том числе выполнение скриптов развертывания;
  • журналы развертывания.
  • Предельный размер пакета составляет 2048 МБ.

Примечание.

Файлы в ZIP-пакете копируются только в том случае, если их метки времени не совпадают с уже развернутыми.

Использование пользовательского интерфейса zip-развертывания в Kudu

Откройте браузер и перейдите по адресу https://<app_name>.scm.azurewebsites.net/ZipDeployUI.

Загрузите ZIP-пакет, созданный при выполнении действий из раздела Создание ZIP-пакета проекта, перетащив его в область проводника на веб-странице.

Во время развертывания значок в верхнем правом углу показывает ход выполнения в процентах. Кроме того, на странице внизу области обозревателя отображаются подробные сообщения об операции. После завершения развертывания должно быть указано Deployment successfulпоследнее сообщение.

В настоящее время указанная выше конечная точка не работает для Служба приложений Linux. Вместо этого рекомендуется использовать FTP или API развертывания ZIP-файла.

Без zip-развертывания пользовательского интерфейса в Kudu

Разверните ZIP-пакет для веб-приложения с помощью команды az webapp deploy. Команда CLI использует API публикации Kudu для развертывания файлов и является полностью настраиваемой.

В приведенном ниже примере ZIP-пакет отправляется на сайт. Укажите путь к локальному ZIP-пакету для --src-path.

az webapp deploy --resource-group <group-name> --name <app-name> --src-path <zip-package-path>

Эта команда перезапускает приложение после развертывания ZIP-пакета.

Включение автоматизации сборки для zip-развертывания

По умолчанию подсистема развертывания предполагает, что ZIP-пакет готов к запуску в исходном виде и автоматизация сборки не используется. Чтобы разрешить ту же автоматизацию сборки, что и при развертывании Git, задайте параметр приложения SCM_DO_BUILD_DURING_DEPLOYMENT, выполнив в Cloud Shell следующую команду:

az webapp config appsettings set --resource-group <group-name> --name <app-name> --settings SCM_DO_BUILD_DURING_DEPLOYMENT=true

Дополнительные сведения см. в документации по Kudu.

Развертывание пакетов WAR, JAR и EAR

Вы можете развернуть пакет WAR, JAR или EAR в Службе приложений, чтобы запустить веб-приложение Java с помощью Azure CLI, PowerShell или API публикации Kudu.

Процесс развертывания, показанный здесь, помещает пакет в общую папку содержимого приложения с правильным соглашением об именовании и структурой каталогов (см . справочник по API публикации Kudu), и это рекомендуемый подход. При развертывании пакетов WAR/JAR/EAR с помощью FTP или WebDeploy могут возникнуть неизвестные сбои из-за ошибок в именовании или структуре.

Разверните WAR-пакет в Tomcat или JBoss EAP с помощью команды az webapp deploy. Укажите путь к локальному пакету Java для --src-path.

az webapp deploy --resource-group <group-name> --name <app-name> --src-path ./<package-name>.war

Команда CLI использует API публикации Kudu для развертывания пакетов и является полностью настраиваемой.

Развертывание отдельных файлов

Разверните скрипт запуска, библиотеку и статический файл в веб-приложении при помощи команды az webapp deploy с параметром --type.

Если скрипт запуска развернут таким образом, Служба приложений автоматически использует его для запуска приложения.

Команда CLI использует API публикации Kudu для развертывания файлов и является полностью настраиваемой.

Развертывание скрипта запуска

az webapp deploy --resource-group <group-name> --name <app-name> --src-path scripts/startup.sh --type=startup

Развертывание файла библиотеки

az webapp deploy --resource-group <group-name> --name <app-name> --src-path driver.jar --type=lib

Развертывание статического файла

az webapp deploy --resource-group <group-name> --name <app-name> --src-path config.json --type=static

Развертывание в приложениях, защищенных сетью

В зависимости от конфигурации сети веб-приложения прямой доступ к приложению из среды разработки может быть заблокирован (см . раздел "Развертывание на защищенных сетью сайтов" и "Развертывание на сетевых защищенных сайтах " , часть 2). Вместо отправки пакета или файла в веб-приложение можно опубликовать его в системе хранения, доступной из веб-приложения, и активировать приложение для извлечения ZIP-файла из расположения хранилища.

Удаленный URL-адрес может быть любым общедоступным расположением, но лучше всего использовать контейнер хранилища BLOB-объектов с ключом SAS для защиты.

az webapp deploy Используйте команду, как и в других разделах, но используйте --src-url вместо --src-pathнее. В следующем примере параметр используется --src-url для указания URL-адреса ZIP-файла, размещенного в учетной записи служба хранилища Azure.

az webapp deploy --resource-group <group-name> --name <app-name> --src-url "https://storagesample.blob.core.windows.net/sample-container/myapp.zip?sv=2021-10-01&sb&sig=slk22f3UrS823n4kSh8Skjpa7Naj4CG3 --type zip

Справочник по API публикации Kudu

API publish в Kudu дает возможность задать в команде CLI те же параметры, что и в запросе URL-адреса. Для проверки подлинности с помощью REST API Kudu рекомендуется использовать проверку подлинности маркеров, но вы также можете использовать базовую проверку подлинности с учетными данными развертывания приложения.

В следующей таблице показаны доступные параметры запроса, их допустимые значения и описания.

Ключ. Допустимые значения Description Обязательное поле Тип
type war|jar|ear|lib|startup|static|zip Тип развертываемого артефакта. Он задает целевой путь по умолчанию и сообщает веб-приложению, как следует выполнять развертывание.
- type=zip: развертывание ZIP-пакета путем распаковки содержимого в /home/site/wwwroot. Параметр target-path указывать не обязательно.
- type=war: развертывание WAR-пакета. По умолчанию WAR-пакет развертывается в папке /home/site/wwwroot/app.war. Целевой путь можно указать с помощью параметра target-path.
- type=jar: развертывание пакета JAR в /home/site/wwwroot/app.jar. Параметр target-path игнорируется
- type=ear: развертывание пакета EAR в /home/site/wwwroot/app.ear. Параметр target-path игнорируется
- type=lib: развертывание файла библиотеки JAR. По умолчанию файл развертывается в папке /home/site/libs. Целевой путь можно указать с помощью параметра target-path.
- type=static: развертывание статического файла (например, скрипта). По умолчанию файл развертывается в папке /home/site/wwwroot.
- type=startup: развертывание скрипта, который Служба приложений автоматически использует для запуска приложения. По умолчанию скрипт развертывается в папке D:\home\site\scripts\<name-of-source> (в Windows) или home/site/wwwroot/startup.sh (в Linux). Целевой путь можно указать с помощью параметра target-path.
Да Строка
restart true|false По умолчанию API перезапускает приложение после операции развертывания (restart=true). Чтобы развернуть несколько артефактов, предотвратите перезапуск во всех развертываниях, кроме последнего, задав параметр restart=false. No Логический
clean true|false Указывает, следует ли очистить (удалить) целевое развертывание, прежде чем развертывать артефакт в этом расположении. No Логический
ignorestack true|false API публикации использует переменную среды WEBSITE_STACK, чтобы выбрать безопасные значения по умолчанию в зависимости от языкового стека сайта. Задав для этого параметра значение false, можно отключить параметры по умолчанию, связанные с языком. No Логический
target-path Абсолютный путь Абсолютный путь для развертывания артефакта. Например, "/home/site/deployments/tools/driver.jar", "/home/site/scripts/helper.sh". Нет Строка

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

Чтобы изучить более сложные сценарии развертывания, ознакомьтесь с развертыванием в Azure с помощью Git. Развертывание в Azure на основе Git обеспечивает систему управления версиями, восстановление пакета, MSBuild и многое другое.

Дополнительные ресурсы