Az alkalmazás futtatása közvetlenül egy ZIP-csomagból Azure-alkalmazás Service-ben
Feljegyzés
A csomagból való futtatás a Python-alkalmazások esetében nem támogatott. A Python-kód ZIP-fájljának üzembe helyezésekor be kell állítania egy jelzőt az Azure buildautomatizálásának engedélyezéséhez. A buildautomatizálás létrehozza az alkalmazáshoz tartozó Python virtuális környezetet, és telepíti a szükséges követelményeket és csomagokat. További részletekért tekintse meg a buildautomatizálást .
A Azure-alkalmazás Szolgáltatásban az alkalmazásokat közvetlenül egy üzembehelyezési ZIP-csomagfájlból futtathatja. Ez a cikk bemutatja, hogyan engedélyezheti ezt a funkciót az alkalmazásban.
Az App Service minden más üzembehelyezési módszerében van valami közös: a fájlok az alkalmazásban (vagy a /home/site/wwwroot for Linux-alkalmazások esetén) a D:\home\site\wwwroot helyen vannak üzembe helyezve. Mivel az alkalmazás futásidőben ugyanazt a könyvtárat használja, előfordulhat, hogy az üzembe helyezés meghiúsul a fájlzárolási ütközések miatt, és az alkalmazás kiszámíthatatlanul viselkedik, mert egyes fájlok még nem frissülnek.
Ezzel szemben, ha közvetlenül egy csomagból futtat, a csomag fájljai nem lesznek átmásolva a wwwroot könyvtárba. Ehelyett maga a ZIP-csomag közvetlenül az írásvédett wwwroot könyvtárként lesz csatlakoztatva. A csomagból való közvetlen futtatásnak számos előnye van:
- Kiküszöböli a fájlzárolási ütközéseket az üzembe helyezés és a futtatókörnyezet között.
- Biztosítja, hogy mindig csak a teljes körűen telepített alkalmazások fussanak.
- Éles alkalmazásban (újraindítással) üzembe helyezhető.
- Javítja az Azure Resource Manager üzemelő példányainak teljesítményét.
- Csökkentheti a hidegindítási időket, különösen nagy npm-csomagfákkal rendelkező JavaScript-függvények esetében.
Feljegyzés
Jelenleg csak a ZIP-csomagfájlok támogatottak.
Projekt ZIP-csomag létrehozása
Fontos
Amikor létrehozza a ZIP-csomagot az üzembe helyezéshez, ne tartalmazza a gyökérkönyvtárat. Csak a fájlokat és könyvtárakat vegye fel a gyökérkönyvtárba. Ha ZIP-fájlként tölt le egy GitHub-adattárat, a fájlt nem helyezheti üzembe az App Service-ben. A GitHub a legfelső szinten beágyazott könyvtárakat ad hozzá, amelyek nem működnek az App Service-ben.
Egy helyi terminálablakban keresse meg az alkalmazásprojekt gyökérkönyvtárát.
Ennek a könyvtárnak tartalmaznia kell a webalkalmazás bejegyzésfájlját, például index.html, index.php és app.js. Csomagkezelési fájlokat is tartalmazhat, például project.json, composer.json, package.json, bower.json és requirements.txt.
Ha nem szeretné, hogy az App Service üzembe helyezési automatizálást futtasson Önnek, futtassa az összes buildelési feladatot, például, npm
, bower
, gulp
composer
és pip
. Győződjön meg arról, hogy rendelkezik az alkalmazás futtatásához szükséges összes fájllal. Erre a lépésre akkor van szükség, ha közvetlenül szeretné futtatni a csomagot.
Készítsen ZIP-archívumot a projekt minden eleméről. Projektek esetén dotnet
adjon hozzá mindent a parancs kimeneti könyvtárában dotnet publish
, kivéve magát a kimeneti könyvtárat. A terminálban például a következő parancsot kell létrehoznia az aktuális könyvtár tartalmának ZIP-csomagjához:
# Bash
zip -r <file-name>.zip .
# PowerShell
Compress-Archive -Path * -DestinationPath <file-name>.zip
A csomagból való futtatás engedélyezése
Az WEBSITE_RUN_FROM_PACKAGE
alkalmazásbeállítás lehetővé teszi a csomagból való futtatásokat. A beállításhoz futtassa a következő parancsot az Azure CLI-vel.
az webapp config appsettings set --resource-group <group-name> --name <app-name> --settings WEBSITE_RUN_FROM_PACKAGE="1"
WEBSITE_RUN_FROM_PACKAGE="1"
segítségével futtathatja az alkalmazást egy helyi csomagból az alkalmazásba. Távoli csomagból is futtatható.
A csomag futtatása
A csomagok App Service-ben való futtatásának legegyszerűbb módja az Azure CLI az webapp deploy parancs. Példa:
az webapp deploy --resource-group <group-name> --name <app-name> --src-path <filename>.zip
Mivel az WEBSITE_RUN_FROM_PACKAGE
alkalmazásbeállítás be van állítva, ez a parancs nem nyeri ki a csomag tartalmát az alkalmazás D:\home\site\wwwroot könyvtárába. Ehelyett feltölti a ZIP-fájlt a D:\home\data\SitePackages fájlba, és létrehoz egy packagename.txt ugyanabban a könyvtárban, amely tartalmazza a futtatókörnyezetben betöltendő ZIP-csomag nevét. Ha más módon tölti fel a ZIP-csomagot (például FTP), manuálisan kell létrehoznia a D:\home\data\SitePackages könyvtárat és a packagename.txt fájlt.
A parancs az alkalmazást is újraindítja. Mivel WEBSITE_RUN_FROM_PACKAGE
be van állítva, az App Service a feltöltött csomagot írásvédett wwwroot könyvtárként csatlakoztatja, és közvetlenül a csatlakoztatott könyvtárból futtatja az alkalmazást.
Futtatás külső URL-címről
Futtathat csomagot egy külső URL-címről, például az Azure Blob Storage-ből is. Az Azure Storage Explorer használatával csomagfájlokat tölthet fel a Blob Storage-fiókba. Használjon egy privát tárolót közös hozzáférésű jogosultságkóddal (SAS), vagy használjon felügyelt identitást , hogy az App Service futtatókörnyezete biztonságosan elérhesse a csomagot.
Feljegyzés
Egy helyi csomagot futtató meglévő App Service-erőforrás jelenleg nem migrálható távoli csomagból való futtatáshoz. Létre kell hoznia egy új App Service-erőforrást, amely külső URL-címről való futtatásra van konfigurálva.
Miután feltöltötte a fájlt a Blob Storage-ba, és rendelkezik a fájl SAS URL-címével, állítsa be az WEBSITE_RUN_FROM_PACKAGE
alkalmazásbeállítást az URL-címre. Az alábbi példa az Azure CLI használatával történik:
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"
Ha egy azonos nevű frissített csomagot tesz közzé a Blob Storage-ben, újra kell indítania az alkalmazást, hogy a frissített csomag be legyen töltve az App Service-be.
Csomag elérése az Azure Blob Storage-ban felügyelt identitás használatával
Az Azure Blob Storage konfigurálható úgy, hogy a Microsoft Entra-azonosítóval engedélyezze a kéréseket. Ez a konfiguráció azt jelenti, hogy a lejárattal rendelkező SAS-kulcs létrehozása helyett az alkalmazás felügyelt identitására támaszkodhat. Alapértelmezés szerint a rendszer az alkalmazás rendszer által hozzárendelt identitását használja. Ha felhasználó által hozzárendelt identitást szeretne megadni, beállíthatja az WEBSITE_RUN_FROM_PACKAGE_BLOB_MI_RESOURCE_ID
alkalmazásbeállítást az identitás erőforrás-azonosítójára. A beállítás értékként is elfogadható SystemAssigned
, ami egyenértékű a beállítás kihagyásával.
A csomag lekérésének engedélyezése az identitással:
Győződjön meg arról, hogy a blob privát hozzáférésre van konfigurálva.
Adja meg az identitásnak a Storage Blob Adatolvasó szerepkört a csomagblob hatókörével. A szerepkör-hozzárendelés létrehozásával kapcsolatos részletekért lásd : Azure-szerepkör hozzárendelése a blobadatokhoz való hozzáféréshez.
Állítsa be az
WEBSITE_RUN_FROM_PACKAGE
alkalmazásbeállítást a csomag blob URL-címére. Ez az URL-cím általában űrlap vagyhttps://{storage-account-name}.blob.core.windows.net/{container-name}/{path-to-package}
hasonló.
WebJob-fájlok üzembe helyezése csomagból való futtatáskor
A WebJob-fájlok kétféleképpen helyezhetők üzembe, ha engedélyezi az alkalmazások csomagból való futtatását:
- Üzembe helyezés ugyanabban a ZIP-csomagban
<project-root>\app_data\jobs\...
, mint az alkalmazás: vegye fel őket a szokásos módon (amely megfelel a WebJobs rövid útmutatójában megadott üzembehelyezési útvonalnak\site\wwwroot\app_data\jobs\...
). - Üzembe helyezés külön az alkalmazás ZIP-csomagjától: Mivel a szokásos üzembehelyezési útvonal
\site\wwwroot\app_data\jobs\...
írásvédett, nem helyezhet üzembe WebJob-fájlokat. Ehelyett helyezzen üzembe WebJob-fájlokat\site\jobs\...
, amelyek nem csak olvashatók. A WebJobs üzembe lett helyezve\site\wwwroot\app_data\jobs\...
, és\site\jobs\...
mindkettő fut.
Feljegyzés
Ha \site\wwwroot
írásvédetté válik, az olyan műveletek, mint a disable.job létrehozása, sikertelenek lesznek.
Hibaelhárítás
- Ha közvetlenül egy csomagból fut, az írásvédetté válik
wwwroot
. Az alkalmazás hibaüzenetet kap, ha fájlokat próbál írni ebbe a könyvtárba. - A TAR és a GZIP formátumok nem támogatottak.
- A ZIP-fájl legfeljebb 1 GB lehet
- Ez a funkció nem kompatibilis a helyi gyorsítótárral.
- A jobb hidegindítási teljesítmény érdekében használja a helyi Zip beállítást (
WEBSITE_RUN_FROM_PACKAGE
=1).