Wdrażanie plików w usłudze App Service

W tym artykule pokazano, jak wdrożyć kod jako pakiet ZIP, WAR, JAR lub EAR w usłudze aplikacja systemu Azure Service. Pokazano również, jak wdrożyć poszczególne pliki w usłudze App Service, niezależnie od pakietu aplikacji.

Wymagania wstępne

Aby wykonać kroki opisane w tym artykule, utwórz aplikację usługi App Service lub użyj aplikacji utworzonej na potrzeby innego samouczka.

Jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto platformy Azure.

Tworzenie pakietu ZIP projektu

Ważne

Podczas tworzenia pakietu ZIP do wdrożenia nie dołączaj katalogu głównego, ale tylko do plików i katalogów. Jeśli pobierzesz repozytorium GitHub jako plik ZIP, nie możesz wdrożyć tego pliku, tak jak to jest w usłudze App Service. Usługa GitHub dodaje dodatkowe zagnieżdżone katalogi na najwyższym poziomie, które nie działają z usługą App Service.

W lokalnym oknie terminalu przejdź do katalogu głównego projektu aplikacji.

Ten katalog powinien zawierać plik wpisu w aplikacji internetowej, taki jak index.html, index.php i app.js. Może również zawierać pliki zarządzania pakietami, takie jak project.json, composer.json, package.json, bower.json i requirements.txt.

Jeśli nie chcesz, aby usługa App Service uruchamiała automatyzację wdrażania, uruchom wszystkie zadania kompilacji (na przykład npm, , bowergulp, composer, i pip) i upewnij się, że masz wszystkie pliki potrzebne do uruchomienia aplikacji. Ten krok jest wymagany, jeśli chcesz bezpośrednio uruchomić pakiet.

Utwórz archiwum ZIP z wszystkimi elementami w projekcie. W przypadku dotnet projektów jest to wszystko w katalogu dotnet publish wyjściowym polecenia (z wyłączeniem samego katalogu wyjściowego). Na przykład następujące polecenie w terminalu w celu utworzenia pakietu ZIP zawartości bieżącego katalogu:

# Bash
zip -r <file-name>.zip .

# PowerShell
Compress-Archive -Path * -DestinationPath <file-name>.zip

Wdrażanie pakietu ZIP

Podczas wdrażania pakietu ZIP usługa App Service rozpakuje jego zawartość w domyślnej ścieżce aplikacji (D:\home\site\wwwroot dla systemu Windows /home/site/wwwroot dla systemu Linux).

To wdrożenie pakietu ZIP korzysta z tej samej usługi Kudu, która obsługuje ciągłe wdrożenia oparte na integracji. Usługa Kudu obsługuje następujące funkcje wdrażania pakietów ZIP:

  • Usunięcie plików pozostawionych z poprzedniego wdrożenia.
  • Opcja włączenia domyślnego procesu kompilacji, który obejmuje przywracanie pakietów.
  • Dostosowywanie wdrożenia, w tym uruchamianie skryptów wdrażania.
  • Dzienniki wdrażania.
  • Limit rozmiaru pakietu wynoszący 2048 MB.

Uwaga

Pliki w pakiecie ZIP są kopiowane tylko wtedy, gdy ich znaczniki czasu nie są zgodne z tym, co zostało już wdrożone.

Za pomocą funkcji zip deploy UI w usłudze Kudu

W przeglądarce przejdź do strony https://<app_name>.scm.azurewebsites.net/ZipDeployUI.

Przekaż pakiet ZIP utworzony w sekcji Tworzenie pakietu ZIP projektu, przeciągając go do obszaru eksploratora plików na stronie internetowej.

Gdy wdrażanie jest w toku, ikona w prawym górnym rogu wskazuje wartość procentową postępu. Na stronie są też wyświetlane pełne komunikaty dotyczące operacji poniżej obszaru Eksploratora. Po zakończeniu wdrażania ostatni komunikat powinien mieć wartość Deployment successful.

Powyższy punkt końcowy nie działa obecnie w przypadku usługi App Services systemu Linux. Rozważ użycie protokołu FTP lub interfejsu API wdrażania pliku ZIP.

Bez funkcji zip deploy UI w usłudze Kudu

Wdróż pakiet ZIP w aplikacji internetowej przy użyciu polecenia az webapp deploy . Polecenie interfejsu wiersza polecenia używa interfejsu API publikowania Kudu do wdrożenia plików i może być w pełni dostosowane.

Poniższy przykład wypycha pakiet ZIP do witryny. Określ ścieżkę do lokalnego pakietu ZIP dla .--src-path

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

To polecenie uruchamia ponownie aplikację po wdrożeniu pakietu ZIP.

Włączanie automatyzacji kompilacji dla wdrożenia zip

Domyślnie aparat wdrażania zakłada, że pakiet ZIP jest gotowy do uruchomienia jako i nie uruchamia żadnej automatyzacji kompilacji. Aby włączyć tę samą automatyzację kompilacji co we wdrożeniu usługi Git, ustaw SCM_DO_BUILD_DURING_DEPLOYMENT ustawienie aplikacji, uruchamiając następujące polecenie w usłudze Cloud Shell:

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

Więcej informacji zawiera dokumentacja aparatu Kudu.

Wdrażanie pakietów WAR/JAR/EAR

Pakiet WAR, JAR lub EAR można wdrożyć w usłudze App Service, aby uruchomić aplikację internetową Java przy użyciu interfejsu wiersza polecenia platformy Azure, programu PowerShell lub interfejsu API publikowania Kudu.

Przedstawiony tutaj proces wdrażania umieszcza pakiet w udziale zawartości aplikacji z odpowiednią konwencją nazewnictwa i strukturą katalogów (zobacz dokumentację interfejsu API publikowania Kudu) i jest to zalecane podejście. W przypadku wdrażania pakietów WAR/JAR/EAR przy użyciu protokołu FTP lub WebDeploy mogą wystąpić nieznane błędy z powodu błędów w nazewnictwie lub strukturze.

Wdróż pakiet WAR w usłudze Tomcat lub JBoss EAP przy użyciu polecenia az webapp deploy . Określ ścieżkę do lokalnego pakietu Java dla elementu --src-path.

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

Polecenie interfejsu wiersza polecenia używa interfejsu API publikowania Kudu do wdrożenia pakietu i można go w pełni dostosować.

Wdrażanie pojedynczych plików

Wdróż skrypt uruchamiania, bibliotekę i plik statyczny w aplikacji internetowej przy użyciu polecenia az webapp deploy z parametrem --type .

W przypadku wdrażania skryptu uruchamiania w ten sposób usługa App Service automatycznie używa skryptu do uruchamiania aplikacji.

Polecenie interfejsu wiersza polecenia używa interfejsu API publikowania Kudu do wdrożenia plików i może być w pełni dostosowane.

Wdrażanie skryptu uruchamiania

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

Wdrażanie pliku biblioteki

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

Wdrażanie pliku statycznego

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

Wdrażanie w aplikacjach zabezpieczonych przez sieć

W zależności od konfiguracji sieci aplikacji internetowej bezpośredni dostęp do aplikacji ze środowiska deweloperskiego może zostać zablokowany (zobacz Wdrażanie w witrynach zabezpieczonych siecią i Wdrażanie w witrynach zabezpieczonych siecią, część 2). Zamiast wypychać pakiet lub plik bezpośrednio do aplikacji internetowej, możesz opublikować go w systemie magazynu dostępnym z poziomu aplikacji internetowej i wyzwolić aplikację w celu ściągnięcia pliku ZIP z lokalizacji przechowywania.

Zdalny adres URL może być dowolną publicznie dostępną lokalizacją, ale najlepiej użyć kontenera magazynu obiektów blob z kluczem SAS, aby go chronić.

Użyj polecenia , az webapp deploy jak w innych sekcjach, ale użyj polecenia --src-url zamiast --src-path. W poniższym przykładzie użyto parametru --src-url , aby określić adres URL pliku ZIP hostowanego na koncie usługi Azure Storage.

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

Dokumentacja interfejsu API publikowania w usłudze Kudu

Interfejs publish API Kudu umożliwia określenie tych samych parametrów z polecenia interfejsu wiersza polecenia jako parametrów zapytania adresu URL. Aby uwierzytelnić się za pomocą interfejsu API REST kudu, najlepiej użyć uwierzytelniania tokenu, ale możesz również użyć uwierzytelniania podstawowego przy użyciu poświadczeń wdrożenia aplikacji.

W poniższej tabeli przedstawiono dostępne parametry zapytania, dozwolone wartości i opisy.

Key Dozwolone wartości opis Wymagania Typ
type war|jar|ear|lib|startup|static|zip Typ wdrażanego artefaktu ustawia domyślną ścieżkę docelową i informuje aplikację internetową o sposobie obsługi wdrożenia.
- type=zip: Wdróż pakiet ZIP, rozpakując zawartość na ./home/site/wwwroot target-path parametr jest opcjonalny.
- type=war: Wdróż pakiet WAR. Domyślnie pakiet WAR jest wdrażany w programie /home/site/wwwroot/app.war. Ścieżkę docelową można określić za pomocą target-pathpolecenia .
- type=jar: Wdróż pakiet JAR w programie /home/site/wwwroot/app.jar. Parametr target-path jest ignorowany
- type=ear: Wdróż pakiet EAR na ./home/site/wwwroot/app.ear Parametr target-path jest ignorowany
- type=lib: Wdróż plik biblioteki JAR. Domyślnie plik jest wdrażany w programie /home/site/libs. Ścieżkę docelową można określić za pomocą target-pathpolecenia .
- type=static: Wdróż plik statyczny (na przykład skrypt). Domyślnie plik jest wdrażany w programie /home/site/wwwroot.
- type=startup: Wdróż skrypt, który usługa App Service automatycznie używa jako skryptu uruchamiania aplikacji. Domyślnie skrypt jest wdrażany D:\home\site\scripts\<name-of-source> dla systemów Windows i home/site/wwwroot/startup.sh Linux. Ścieżkę docelową można określić za pomocą target-pathpolecenia .
Tak String
restart true|false Domyślnie interfejs API uruchamia ponownie aplikację po operacji wdrażania (restart=true). Aby wdrożyć wiele artefaktów, zapobiegaj ponownym uruchomieniom we wszystkich, ale ostatecznym wdrożeniu, ustawiając wartość restart=false. Nie. Wartość logiczna
clean true|false Określa, czy przed wdrożeniem artefaktu należy wyczyścić (usunąć) wdrożenie docelowe. Nie. Wartość logiczna
ignorestack true|false Interfejs API publikowania używa zmiennej środowiskowej WEBSITE_STACK do wybierania bezpiecznych wartości domyślnych w zależności od stosu języka witryny. Ustawienie tego parametru w celu false wyłączenia wszystkich domyślnych ustawień specyficznych dla języka. Nie. Wartość logiczna
target-path Ścieżka bezwzględna Ścieżka bezwzględna do wdrożenia artefaktu. Na przykład , "/home/site/deployments/tools/driver.jar". "/home/site/scripts/helper.sh" Nie. String

Następne kroki

Aby uzyskać bardziej zaawansowane scenariusze wdrażania, spróbuj wdrożyć na platformie Azure przy użyciu usługi Git. Wdrożenie oparte na usłudze Git na platformie Azure umożliwia kontrolę wersji, przywracanie pakietów, program MSBuild i nie tylko.

Więcej zasobów