Поделиться через


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

Примечание.

Начиная с 1 июня 2024 г. только что созданные Служба приложений приложения могут создать уникальное имя узла по умолчанию, использующее соглашение <app-name>-<random-hash>.<region>.azurewebsites.netоб именовании. Существующие имена приложений остаются неизменными. Например:

myapp-ds27dh7271aah175.westus-01.azurewebsites.net

Дополнительные сведения см. в разделе "Уникальное имя узла по умолчанию" для ресурса Служба приложений.

В этой статье показано, как развернуть код в виде пакета 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, , composerbowergulpи .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-пакета проекта, перетащив его в область проводника на веб-странице.

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

Эта конечная точка в настоящее время не работает для Служба приложений 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 и многое другое.