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


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

Примечание.

Начиная с 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.jsonrequirements.txt.

Если вы не хотите, чтобы служба приложений выполняла автоматизацию развертывания, выполните все задачи сборки. Например: npm, , bowergulp, 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-пакета:

  • Удаление файлов, оставшихся после предыдущего развертывания
  • Параметр включения процесса сборки по умолчанию, включающего восстановление пакета
  • Настройка развертывания, включая выполнение скриптов развертывания
  • Журналы развертывания
  • Ограничение размера пакета размером 2 048 мегабайт

Примечание.

Файлы в 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-пакет готов к запуску в исходном виде и автоматизация сборки не используется. Чтобы включить ту же автоматизацию сборки, используемую SCM_DO_BUILD_DURING_DEPLOYMENT в развертывании Git, задайте параметр приложения. Выполните следующую команду в Azure 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 или веб-развертывания могут возникнуть неизвестные сбои из-за ошибок в именовании или структуре.

Разверните пакет 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-объектов с ключом подписанного URL-адреса (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-адреса. Для аутентификации с помощью Kudu REST API мы рекомендуем использовать аутентификацию токенов, однако вы также можете использовать базовую аутентификацию с учетными данными развертывания вашего приложения.

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

Ключ Допустимые значения Описание: Обязательное поле Тип
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. Нет Логический
clean true|false Указывает, следует ли удалить целевое развертывание, прежде чем развертывать артефакт там. Нет Логический
ignorestack true|false API публикации использует переменную среды WEBSITE_STACK, чтобы выбрать безопасные значения по умолчанию в зависимости от языкового стека сайта. Задав для этого параметра значение false, можно отключить параметры по умолчанию, связанные с языком. Нет Логический
target-path Абсолютный путь Абсолютный путь для развертывания артефакта. Например, /home/site/deployments/tools/driver.jar или /home/site/scripts/helper.sh. Нет Строка

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