Wdrażanie plików w usłudze App Service
Uwaga
Od 1 czerwca 2024 r. wszystkie nowo utworzone aplikacje usługi App Service będą miały możliwość wygenerowania unikatowej domyślnej nazwy hosta przy użyciu konwencji <app-name>-<random-hash>.<region>.azurewebsites.net
nazewnictwa . Istniejące nazwy aplikacji pozostaną niezmienione.
Przykład: myapp-ds27dh7271aah175.westus-01.azurewebsites.net
Aby uzyskać więcej informacji, zapoznaj się z unikatową domyślną nazwą hosta zasobu usługi 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
, , bower
gulp
, 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 https://<app_name>.scm.azurewebsites.net/ZipDeployUI
adresu (zobacz notatkę u góry).
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.
Klucz | 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-path polecenia . - 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-path polecenia . - 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-path polecenia . |
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.