Развертывание файлов в Службе приложений
В этой статье показано, как развернуть код в виде пакета ZIP, WAR, JAR или EAR в Службе приложений Azure. В ней также показано, как развертывать отдельные файлы в Службе приложений отдельно от пакета приложения.
Предварительные требования
Чтобы выполнить действия, описанные в этой статье, создайте приложение службы приложений или используйте приложение, созданное для другого руководства.
Если у вас еще нет подписки Azure, создайте бесплатную учетную запись Azure, прежде чем начинать работу.
Создание ZIP-пакета проекта
Примечание
Если файлы скачаны в виде ZIP-пакета, сначала извлеките их. Например, если вы скачали ZIP-пакет из GitHub, его нельзя развернуть "как есть". 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
. При выполнении следующей команды в окне терминала используется инструмент по умолчанию:
# 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 МБ.
Дополнительные сведения см. в документации по Kudu.
Примечание
Файлы в ZIP-пакете копируются только в том случае, если их метки времени не совпадают с уже развернутыми. Создание ZIP-файла с помощью процесса сборки, который кэширует выходные данные, может привести к ускорению развертываний. Дополнительные сведения см. в статье Развертывание из ZIP-файла или URL-адреса.
Разверните 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-файл из хранилища вместо передачи ZIP-файла в веб-приложение. См. эту статью по развертыванию защищенных веб-приложений в сети для получения дополнительной информации.
В приведенном ниже примере используется параметр --src-url
, чтобы указать URL-адрес учетной записи хранения Azure, из которой сайт должен получить ZIP-файл.
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
Включение автоматизации сборки для развертывания 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.
Что происходит с моим приложением во время развертывания?
Все официально поддерживаемые методы развертывания вносят изменения в файлы в папке /home/site/wwwroot вашего приложения. Эти файлы используются для запуска приложения. Поэтому, возможно, не удастся выполнить развертывание из-за заблокированных файлов. Кроме того, из-за неодновременного обновления всех файлов приложение может вести себя непредсказуемо во время развертывания. Такое поведение нежелательно для приложения, с которым работают клиенты. Избежать этих проблем можно несколькими указанными ниже способами.
- Запустите приложение непосредственно из ZIP-пакета, не распаковывая его.
- На время развертывания остановите приложение или включите для него автономный режим. Дополнительные сведения см. в разделе Устранение проблем из-за заблокированных файлов при развертывании.
- Выполняйте развертывание в промежуточном слоте с включенной автоматической подкачкой.
Развертывание пакетов 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
В зависимости от сетевой конфигурации ваших веб-приложений прямой доступ к сайту из вашей локальной среды может быть заблокирован. Чтобы развернуть код в этом сценарии, можно опубликовать свой ZIP-файл в системе хранения, доступной из веб-приложения, и дать команду приложению извлечь ZIP-файл из хранилища вместо передачи ZIP-файла в веб-приложение. См. эту статью по развертыванию защищенных веб-приложений в сети для получения дополнительной информации.
В приведенном ниже примере используется параметр --src-url
, чтобы указать URL-адрес учетной записи хранения Azure, из которой веб-приложение должно получить ZIP-файл.
az webapp deploy --resource-group <group-name> --name <app-name> --src-url "https://storagesample.blob.core.windows.net/sample-container/myapp.war?sv=2021-10-01&sb&sig=slk22f3UrS823n4kSh8Skjpa7Naj4CG3
Команда 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
Справочник по API публикации Kudu
API publish
в Kudu дает возможность задать в команде CLI те же параметры, что и в запросе URL-адреса. Для проверки подлинности с помощью API Kudu можно использовать обычную проверку подлинности с учетными данными для развертывания приложения.
В приведенной ниже таблице показаны доступные параметры запроса, их допустимые значения и описания.
Ключ | Допустимые значения | Описание | Обязательно | Тип |
---|---|---|---|---|
type |
war |jar |ear |lib |startup |static |zip |
Тип развертываемого артефакта. Он задает целевой путь по умолчанию и сообщает веб-приложению, как следует выполнять развертывание. - type=zip : развертывание ZIP-пакета путем распаковки содержимого в /home/site/wwwroot . Параметр path указывать не обязательно. - type=war : развертывание WAR-пакета. По умолчанию WAR-пакет развертывается в папке /home/site/wwwroot/app.war . Целевой путь можно указать с помощью параметра path . - type=jar : развертывание пакета JAR в /home/site/wwwroot/app.jar . Параметр path игнорируется- type=ear : развертывание пакета EAR в /home/site/wwwroot/app.ear . Параметр path игнорируется- type=lib : развертывание файла библиотеки JAR. По умолчанию файл развертывается в папке /home/site/libs . Целевой путь можно указать с помощью параметра path . - type=static : развертывание статического файла (например, скрипта). По умолчанию файл развертывается в папке /home/site/wwwroot . - type=startup : развертывание скрипта, который Служба приложений автоматически использует для запуска приложения. По умолчанию скрипт развертывается в папке D:\home\site\scripts\<name-of-source> (в Windows) или home/site/wwwroot/startup.sh (в Linux). Целевой путь можно указать с помощью параметра path . |
Да | Строка |
restart |
true |false |
По умолчанию API перезапускает приложение после операции развертывания (restart=true ). Чтобы развернуть несколько артефактов, предотвратите перезапуск во всех развертываниях, кроме последнего, задав параметр restart=false . |
Нет | Логическое |
clean |
true |false |
Указывает, следует ли очистить (удалить) целевое развертывание, прежде чем развертывать артефакт в этом расположении. | Нет | Логическое |
ignorestack |
true |false |
API публикации использует переменную среды WEBSITE_STACK , чтобы выбрать безопасные значения по умолчанию в зависимости от языкового стека сайта. Задав для этого параметра значение false , можно отключить параметры по умолчанию, связанные с языком. |
Нет | Логическое |
path |
"<absolute-path>" |
Абсолютный путь для развертывания артефакта. Например, "/home/site/deployments/tools/driver.jar" , "/home/site/scripts/helper.sh" . |
нет | Строка |
Дальнейшие действия
Чтобы изучить более сложные сценарии развертывания, ознакомьтесь с развертыванием в Azure с помощью Git. Развертывание в Azure на основе Git обеспечивает систему управления версиями, восстановление пакета, MSBuild и многое другое.