Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Ebben a cikkben megtudhatja, hogy mikor és hogyan konfigurálhat egyéni indítási fájlt egy Azure App Service-ben üzemeltetett Python-webalkalmazáshoz. Bár a helyi fejlesztéshez nincs szükség indítási fájlra, Azure App Service futtatja az üzembe helyezett webalkalmazást egy Docker-tárolón belül, amely indítási parancsokat használhat, ha megadja őket.
Az alábbi helyzetekben egyéni indítási fájlra van szükség:
Egyéni Gunicorn-argumentumok: Az alapértelmezett Gunicorn-webkiszolgálót az alapértelmezett értéken túli további argumentumokkal szeretné elindítani, amelyek a következők
--bind=0.0.0.0 --timeout 600.Alternatív keretrendszerek vagy kiszolgálók: Az alkalmazás a Flasktól vagy a Djangotól eltérő keretrendszerrel készült, vagy a Gunicorn helyett egy másik webkiszolgálót szeretne használni.
Nem szabványos Flask-alkalmazásstruktúra: Olyan Flask-alkalmazása van, amelynek fő kódfájlja valami más, mint a app.py vagy az application.py, vagy az alkalmazásobjektum neve valami más, mint a
app.
Más szóval egyéni indítási parancsra van szüksége, hacsak a projekt nem rendelkezik egy app.py vagy application.py fájllal a gyökérmappában egy Flask-alkalmazásobjektumtal.app
További információ: Python Apps konfigurálása – Tárolóindítási folyamat.
Előfeltételek
Egyéni indítási fájl konfigurálása előtt szüksége van egy meglévő, Pythont futtató App Service on Linux szolgáltatásra. Egy App Service létrehozásához kövesse a Python gyorsútmutató App Service-hez című útmutatót. Az Azure CLI használatával App Service-t is létrehozhat:
az webapp create --resource-group <group> --plan <plan> --name <app-name> --runtime "PYTHON:3.12"
Indítási fájl létrehozása
Ha egyéni indítási fájlra van szüksége, kövesse az alábbi lépéseket:
Hozzon létre egy fájlt a projektben startup.txt, startup.sh vagy egy másik, az indítási parancsokat tartalmazó névvel. A Django, a Flask és más keretrendszerek jellemzőiről a cikk későbbi szakaszaiban olvashat.
Az indítási fájlok szükség esetén több parancsot is tartalmazhatnak.
Véglegesítse a fájlt a kódtárban, hogy az az alkalmazás többi részével együtt üzembe helyezhető legyen.
A Visual Studio Code-ban válassza az Azure ikont a tevékenységsávon, bontsa ki az ERŐFORRÁSOK elemet, keresse meg és bontsa ki előfizetését, bontsa ki az App Servicest, kattintson a jobb gombbal az App Service-ra, és válassza a Megnyitás a portálon lehetőséget.
Az Azure Portal bal oldali szolgáltatásmenüjében válassza a Beállítások konfigurációja lehetőséget>. Az App Service Konfiguráció lapján válassza az Általános beállítások lehetőséget, adja meg az indítási fájl nevét (például startup.txt vagy startup.sh) a Stack settings>Startup Command (Indítási parancs) területen, majd válassza a Mentés lehetőséget.
Másik lehetőségként a Azure CLI is beállíthatja az indítási parancsot:
az webapp config set --resource-group <group> --name <app-name> --startup-file "<startup-command>"Megjegyzés:
Indítási parancsfájl használata helyett az indítási parancsot közvetlenül az Azure Portal Indítási parancs mezőjébe helyezheti. Indítási parancsfájl használata ajánlott, mert a konfigurációt az adattárban tárolja. Ez lehetővé teszi, hogy a verziókövetés nyomon kövesse a módosításokat, és leegyszerűsítse a más Azure App Service-példányokra való ismételt üzembe helyezést.
Válassza a Folytatás lehetőséget, amikor a rendszer az App Service újraindítását kéri.
Ha az alkalmazáskód üzembe helyezése előtt hozzáfér az Azure App Service-webhelyhez, "Alkalmazáshiba" jelenik meg, mert nem áll rendelkezésre kód a kérés feldolgozásához.
Django indítási parancsok
Az Azure App Service alapértelmezés szerint megkeresi a wsgi.py fájlt tartalmazó mappát, és elindítja a Gunicorn parancsot a következő paranccsal:
# <module> is the folder that contains wsgi.py. If you need to use a subfolder,
# specify the parent of <module> using --chdir.
gunicorn --bind=0.0.0.0 --timeout 600 <module>.wsgi
Ha módosítani szeretné a Gunicorn argumentumokat, például 1200 másodpercre szeretné növelni az időtúllépési értéket,--timeout 1200 hozzon létre egy egyéni indítási parancsfájlt. Ez a módszer felülírja az alapértelmezett beállításokat a megadott követelményekkel. További információ: Tárolóindítási folyamat – Django alkalmazás.
Flask indítási parancsok
Alapértelmezés szerint App Service on Linux feltételezi, hogy a Flask-alkalmazás megfelel a következő feltételeknek:
- A WSGI hívható neve
app. - Az alkalmazáskód egy application.py vagy app.py nevű fájlban található.
- Az alkalmazásfájl az alkalmazás gyökérmappájában található.
Ha a projekt eltér ettől a struktúrától, az egyéni indítási parancsnak azonosítania kell az alkalmazásobjektum helyét a formátumfájlban:app_object:
Eltérő fájlnév és/vagy alkalmazásobjektum neve: Ha az alkalmazás fő kódfájlja hello.py , és az alkalmazásobjektum neve el van nevezve
myapp, az indítási parancs a következő:gunicorn --bind=0.0.0.0 --timeout 600 hello:myappAz indítási fájl egy almappában található: Ha az indítási fájl a myapp/website.py és az alkalmazásobjektum
app, a Gunicorn argumentumával--chdiradja meg a mappát, majd adja meg az indítási fájlt és az alkalmazásobjektumot a szokásos módon:gunicorn --bind=0.0.0.0 --timeout 600 --chdir myapp website:appAz indítási fájl egy modulon belül van: A python-sample-vscode-flask-tutorial kódban a webapp.py indítási fájl a hello_app mappában található, amely maga egy __init__.py fájllal rendelkező modul. Az alkalmazásobjektum neve
app, és a __init__.py fájlban van definiálva. A webapp.py relatív importot használ.A Gunicorn erre
webapp:appvaló mutatása miatt megjelenik a "Relatív importálás kísérlet nem csomagban" hibaüzenet, és az alkalmazás nem indul el.Ebben az esetben hozzon létre egy shim-fájlt, amely importálja az alkalmazásobjektumot a modulból, majd a Gunicorn indítsa el az alkalmazást a shim használatával. A python-sample-vscode-flask-tutorial kód például startup.py tartalmaz a következő tartalommal:
from hello_app.webapp import appAz indítási parancs ezután a következő:
gunicorn --bind=0.0.0.0 --workers=4 startup:app
További információ: Tárolóindítási folyamat – Flask-alkalmazás.
Egyéb keretrendszerek és webkiszolgálók
A Python-alkalmazásokat futtató App Service-tárolóban alapértelmezés szerint telepítve van a Django és a Flask, valamint a Gunicorn webkiszolgáló.
A Django vagy Flasktól eltérő keretrendszer (például Falcon, FastAPI és egyéb) használata, vagy másik webkiszolgáló használata:
Vegye fel a keretrendszert és a webkiszolgálót a requirements.txt fájlba.
Az indítási parancsban azonosítsa a Flask előző szakaszában leírtak szerint hívható WSGI-t.
A Gunicorntól eltérő webkiszolgáló indításához használjon parancsot
python -ma kiszolgáló közvetlen meghívása helyett. A következő parancs például elindítja az uvicorn-kiszolgálót , feltéve, hogy a WSGI hívható neve el van nevezveapp, és application.py található:python -m uvicorn application:app --host 0.0.0.0A
python -mazért használja, mert a requirements.txt keresztül telepített webkiszolgálók nem lesznek hozzáadva a Python globális környezethez, ezért közvetlenül nem hívhatók meg. Apython -mparancs meghívja a kiszolgálót az aktuális virtuális környezetből.
Az alkalmazás üzembe helyezése
Az indítási fájl konfigurálása után telepítenie kell az alkalmazáskódot az App Service-ben. Használja a választott Azure CLI vagy üzembe helyezési módszert:
az webapp up --name <app-name>
További üzembehelyezési lehetőségekért tekintse meg az üzembe helyezés ajánlott eljárásait.