Развертывание файлов в Службе приложений
Примечание.
Начиная с 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
, 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 и многое другое.
Дополнительные ресурсы
- Deploying from a zip file (Развертывание из ZIP-файла)
- Справка по переменным среды и параметрам приложений