Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Poznámka:
Spuštění z balíčku není podporováno pro Pythonové aplikace. Při nasazování ZIP souboru vašeho kódu Pythonu je potřeba nastavit příznak k povolení automatizace sestavení pro Azure. Automatizace sestavení vytvoří Python virtuální prostředí pro vaši aplikaci a nainstaluje potřebné požadavky a balíček. Další informace najdete v tématu Automatizace sestavení.
Spuštění z balíčku se také nepodporuje pro Java aplikace na Azure App Service. Integrované moduly runtime Java (Java SE, Tomcat a JBoss EAP) vyžadují při spuštění přístup k zápisu do adresáře aplikace, zatímco Spuštění z balíčku připojí obsah aplikace jako systém souborů jen pro čtení.
V Azure App Service můžete aplikace spouštět přímo ze souboru balíčku ZIP pro nasazení. Tento článek ukazuje, jak povolit tuto funkci ve vaší aplikaci.
Všechny ostatní metody nasazení ve službě App Service mají něco společného, což jsou vaše rozbalené soubory nasazené do D:\home\site\wwwroot v aplikaci (nebo /home/site/wwwroot pro linuxové aplikace). Vzhledem k tomu, že vaše aplikace používá stejný adresář za běhu, může nasazení selhat kvůli konfliktům uzamčení souborů a aplikace se může chovat nepředvídatelně, protože některé soubory nejsou dosud aktualizovány. Pokud chcete toto nastavení povolit, nemusíte k proměnné přiřazovat žádnou hodnotu WEBSITE_RUN_FROM_PACKAGE ani ji úplně odebrat.
Naproti tomu při spuštění přímo z balíčku ZIP se soubory v balíčku nekopírují do adresáře wwwroot . Místo toho se samotný balíček ZIP připojí přímo jako adresář wwwroot jen pro čtení. Pokud chcete toto nastavení povolit, nastavte WEBSITE_RUN_FROM_PACKAGE=1 nebo zadejte adresu URL souboru ZIP. Spuštění přímo z balíčku má několik výhod:
- Eliminuje konflikty zámků souborů mezi nasazením a běhovým prostředím.
- Zajišťuje, že jsou kdykoli spuštěné jenom plně nasazené aplikace.
- Dá se nasadit do produkční aplikace (s restartováním).
- Zlepšuje výkon nasazení Azure Resource Manager.
- Může zkrátit dobu studeného spuštění, zejména pro funkce JavaScriptu s velkými strukturami balíčků npm.
Poznámka:
V současné době jsou podporovány pouze soubory balíčku ZIP.
Vytvoření balíčku ZIP projektu
Důležité
Při vytváření balíčku ZIP pro nasazení nezahrnujte kořenový adresář. Do kořenového adresáře zahrňte pouze soubory a adresáře. Pokud si stáhnete úložiště GitHub jako soubor ZIP, nemůžete tento soubor nasadit as-is do služby App Service. GitHub přidá vnořené adresáře na nejvyšší úrovni, což nefunguje se službou App Service.
V okně místního terminálu přejděte do kořenového adresáře projektu aplikace.
Tento adresář by měl obsahovat vstupní soubor vaší webové aplikace, například index.html, index.phpa app.js. Může také obsahovat soubory správy balíčků, jako jsou project.json, composer.json, package.json, bower.jsona requirements.txt.
Pokud nechcete, aby služba App Service spouštěla automatizaci nasazení za vás, spusťte všechny úlohy sestavení. Například: npm, , bowergulp, composera pip. Ujistěte se, že máte všechny soubory, které potřebujete ke spuštění aplikace. Tento krok se vyžaduje, pokud chcete balíček spustit přímo.
Vytvořte archiv ZIP se všemi položkami ve vašem projektu. Pro dotnet projekty přidejte vše v adresáři výstupu příkazu dotnet publish, s výjimkou samotného adresáře výstupu. Zadáním následujícího příkazu v terminálu vytvořte například balíček ZIP, který obsahuje obsah aktuálního adresáře:
# Bash
zip -r <file-name>.zip .
# PowerShell
Compress-Archive -Path * -DestinationPath <file-name>.zip
Povolení spuštění z balíčku ZIP
Nastavení WEBSITE_RUN_FROM_PACKAGE aplikace umožňuje spuštění z balíčku ZIP. Pokud ho chcete nastavit, spusťte následující příkaz s Azure CLI.
az webapp config appsettings set --resource-group <group-name> --name <app-name> --settings WEBSITE_RUN_FROM_PACKAGE="1"
WEBSITE_RUN_FROM_PACKAGE="1" umožňuje spustit aplikaci z místního balíčku ZIP do vaší aplikace. Můžete také spustit ze vzdáleného balíčku.
Spusťte balíček ZIP
Nejjednodušší způsob, jak spustit balíček ZIP ve službě App Service, je příkaz Azure CLI az webapp deployment source config-zip. Příklad:
az webapp deploy --resource-group <group-name> --name <app-name> --src-path <filename>.zip
WEBSITE_RUN_FROM_PACKAGE Vzhledem k tomu, že je nastavení aplikace nastavené, tento příkaz neextrahuje obsah balíčku ZIP do adresáře D:\home\site\wwwroot vaší aplikace. Místo toho nahraje soubor ZIP as-is do D:\home\data\SitePackages a vytvoří packagename.txt ve stejném adresáři, který obsahuje název balíčku ZIP, který se má načíst za běhu. Pokud balíček ZIP nahrajete jiným způsobem (například FTP), musíte vytvořit adresář D:\home\data\SitePackages a soubor packagename.txt ručně.
Příkaz také restartuje aplikaci. Protože je WEBSITE_RUN_FROM_PACKAGE nastaven, App Service připojí nahraný balíček jako adresář wwwroot jen pro čtení a spustí aplikaci přímo z tohoto připojeného adresáře.
Místo toho spusťte z externí adresy URL.
Balíček ZIP můžete spustit také z externí adresy URL, například z Azure Blob Storage. Soubory balíčku ZIP můžete nahrát do účtu úložiště objektů blob pomocí Průzkumník služby Azure Storage. Kontejner privátního úložiště se sdíleným přístupovým podpisem (SAS) byste měli použít nebo použít spravovanou identitu , která umožní modulu runtime služby App Service zabezpečený přístup k balíčku ZIP.
Poznámka:
V současné době nejde migrovat existující prostředek služby App Service, který spouští místní balíček ZIP, aby se spustil ze vzdáleného balíčku ZIP. Budete muset vytvořit nový prostředek služby App Service nakonfigurovaný tak, aby běžel z externí adresy URL.
Jakmile soubor nahrajete do úložiště Blob a budete mít adresu URL SAS pro soubor, nastavte nastavení aplikace WEBSITE_RUN_FROM_PACKAGE na adresu URL. Ujistěte se, že adresa URL končí ..zip Následující příklad to provede pomocí Azure CLI:
az webapp config appsettings set --name <app-name> --resource-group <resource-group-name> --settings WEBSITE_RUN_FROM_PACKAGE="https://myblobstorage.blob.core.windows.net/content/SampleCoreMVCApp.zip?st=2018-02-13T09%3A48%3A00Z&se=2044-06-14T09%3A48%3A00Z&sp=rl&sv=2017-04-17&sr=b&sig=bNrVrEFzRHQB17GFJ7boEanetyJ9DGwBSV8OM3Mdh%2FM%3D"
Pokud publikujete aktualizovaný balíček se stejným názvem do úložiště objektů blob, musíte aplikaci restartovat, aby se aktualizovaný balíček načetl do služby App Service.
Přístup k balíčku v Azure Blob Storage pomocí spravované identity
Azure Blob Storage můžete nakonfigurovat tak, aby ověřoval požadavky pomocí Microsoft Entra ID. Tato konfigurace znamená, že místo generování klíče SAS s vypršením platnosti můžete místo toho spoléhat na spravovanou identitu aplikace.
Ve výchozím nastavení se používá identita přiřazená systémem aplikace. Pokud chcete zadat uživatelsky přiřazenou identitu, můžete nastavit WEBSITE_RUN_FROM_PACKAGE_BLOB_MI_RESOURCE_ID nastavení aplikace na ID prostředku této identity. Nastavení může také přijmout SystemAssigned jako hodnotu, která odpovídá vynechání nastavení.
Chcete-li povolit načtení balíčku pomocí identity:
Ujistěte se, že je objekt blob nakonfigurovaný pro privátní přístup.
Udělte identitě roli Storage Blob Data Reader s působností nad blobem balíčku. Podrobnosti o vytvoření přiřazení role najdete v tématu Assign an Azure role for access to blob data.
Nastavte nastavení aplikace
WEBSITE_RUN_FROM_PACKAGEna adresu URL objektu blob balíčku. Tato adresa URL je obvykle ve forměhttps://<storage-account-name>.blob.core.windows.net/<container-name>/<path-to-package>nebo podobná.Pokud chcete zadat uživatelsky přiřazenou identitu, můžete nastavit
WEBSITE_RUN_FROM_PACKAGE_BLOB_MI_RESOURCE_IDnastavení aplikace na ID prostředku této identity. Nastavení může také přijmout SystemAssigned jako hodnotu, i když je to stejné jako vynechání nastavení úplně. ID prostředku je standardní reprezentace prostředku v Azure. U spravované identity přiřazené uživatelem bude/subscriptions/subid/resourcegroups/rg-name/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity-name. ID prostředku pro spravovanou identitu přiřazenou uživatelem lze získat v Nastavení>Vlastnosti>ID pro spravovanou identitu přiřazenou uživatelem.
Nasazení souborů webové úlohy při spuštění z aplikačního balíčku
Existují dva způsoby, jak nasadit soubory WebJob, když povolíte spuštění aplikace z balíčku:
Nasazení ve stejném ZIP balíčku jako vaše aplikace : Zahrňte je tak, jak to běžně děláte v(která mapuje na cestu nasazení , jak je specifikováno v úvodu WebJobs ). -
Nasazení odděleně od balíčku ZIP vaší aplikace: Vzhledem k tomu, že obvyklá cesta nasazení je nyní jen pro čtení, nemůžete tam distribuovat soubory WebJob. Místo toho nasaďte soubory webové úlohy do
\site\jobs\..., který není jen pro čtení. WebJobs nasazené do\site\wwwroot\app_data\jobs\...a\site\jobs\...se spouštějí.
Poznámka:
Když se \site\wwwroot stane jen k čtení, operace jako vytvoření disable.job selžou.
Řešení problému
- Spuštění přímo z balíčku způsobí, že
wwwrootbude jen pro čtení. Pokud se aplikace pokusí zapisovat soubory do tohoto adresáře, zobrazí se chyba. - Formáty TAR a GZIP nejsou podporovány.
- Soubor ZIP může mít maximálně 1 GB.
- Tato funkce není kompatibilní s místní mezipamětí.
- Pokud chcete zvýšit výkon studeného startu, použijte místní možnost Zip (
WEBSITE_RUN_FROM_PACKAGE=1).