Rövid útmutató: Python -webalkalmazás (Django, Flask vagy FastAPI) üzembe helyezése a Azure-alkalmazás Szolgáltatásban
Feljegyzés
2024. június 1-től az újonnan létrehozott App Service-alkalmazások létrehozhatnak egy egyedi alapértelmezett gazdagépnevet, amely az elnevezési konvenciót <app-name>-<random-hash>.<region>.azurewebsites.net
használja. A meglévő alkalmazásnevek változatlanok maradnak. Példa:
myapp-ds27dh7271aah175.westus-01.azurewebsites.net
További információ: Az App Service-erőforrás egyedi alapértelmezett gazdagépneve.
Ebben a rövid útmutatóban egy Python-webalkalmazást (Django, Flask vagy FastAPI) helyez üzembe Azure-alkalmazás Szolgáltatásban. Azure-alkalmazás szolgáltatás egy teljes körűen felügyelt web hosting szolgáltatás, amely támogatja a Linux server környezetben üzemeltetett Python-alkalmazásokat.
A rövid útmutató elvégzéséhez a következőkre lesz szüksége:
- Egy Azure-fiók, aktív előfizetéssel. Fiók ingyenes létrehozása.
- Helyileg telepített Python 3.9 vagy újabb .
Feljegyzés
Ez a cikk a Python-webalkalmazások Azure-alkalmazás Service használatával történő üzembe helyezésére vonatkozó aktuális utasításokat tartalmazza. A Python windowsos használata már nem támogatott.
Mintaalkalmazás
Ez a rövid útmutató a Flask, a Django vagy a FastAPI használatával is elvégezhető. Az egyes keretrendszerekben található mintaalkalmazások segítenek a rövid útmutató követésében. Töltse le vagy klónozza a mintaalkalmazást a helyi munkaállomásra.
git clone https://github.com/Azure-Samples/msdocs-python-flask-webapp-quickstart
Az alkalmazás helyi futtatása:
Nyissa meg az alkalmazásmappát:
cd msdocs-python-flask-webapp-quickstart
Hozzon létre egy virtuális környezetet az alkalmazáshoz:
py -m venv .venv .venv\scripts\activate
Telepítse a függőségeket:
pip install -r requirements.txt
Futtassa az alkalmazást:
flask run
Tallózással keresse meg a mintaalkalmazást
http://localhost:5000
egy webböngészőben.
Problémákat tapasztal? Tudassa velünk.
Webalkalmazás létrehozása az Azure-ban
Az alkalmazás Azure-ban való üzemeltetéséhez létre kell hoznia egy Azure-alkalmazás Service-webalkalmazást az Azure-ban. Webalkalmazást az Azure CLI, a VS Code, az Azure Tools bővítménycsomag vagy az Azure Portal használatával hozhat létre.
Az Azure CLI-parancsok futtathatók olyan számítógépen, amelyen telepítve van az Azure CLI.
Az Azure CLI rendelkezik egy paranccsal az webapp up
, amely létrehozza a szükséges erőforrásokat, és egyetlen lépésben üzembe helyezi az alkalmazást.
Ha szükséges, jelentkezzen be az Azure-ba az login használatával.
az login
Hozza létre a webalkalmazást és más erőforrásokat, majd helyezze üzembe a kódot az Azure-ban az az webapp up használatával.
az webapp up --runtime PYTHON:3.9 --sku B1 --logs
- A
--runtime
paraméter megadja, hogy az alkalmazás melyik Python-verziót használja. Ez a példa a Python 3.9-et használja. Az összes elérhető futtatókörnyezet listázásához használja a parancsotaz webapp list-runtimes --os linux --output table
. - A
--sku
paraméter határozza meg az App Service-csomag méretét (CPU, memória) és költségét. Ez a példa a B1 (Alapszintű) szolgáltatáscsomagot használja, amely kis költséggel jár az Azure-előfizetésben. Az App Service-csomagok teljes listájáért tekintse meg az App Service díjszabási oldalát. - A
--logs
jelölő az alapértelmezett naplózást konfigurálja, amely lehetővé teszi a naplóstream megtekintését közvetlenül a webalkalmazás elindítása után. - Igény szerint megadhat egy nevet az argumentummal
--name <app-name>
. Ha nem ad meg egyet, a rendszer automatikusan létrehoz egy nevet. - Opcionálisan megadhatja azt az argumentumot
--location <location-name>
, amely<location_name>
egy elérhető Azure-régiót tartalmaz. A parancs futtatásával lekérheti az Azure-fiók engedélyezett régióinakaz appservice list-locations
listáját.
A parancs végrehajtása eltarthat néhány percig. Miközben a parancs fut, üzeneteket küld az erőforráscsoport, az App Service-csomag és az alkalmazáserőforrás létrehozásáról, a naplózás konfigurálásáról és a ZIP-telepítés elvégzéséről. Ekkor megjelenik a következő üzenet: "Elindíthatja az alkalmazást http://< app-name.azurewebsites.net>", amely az alkalmazás URL-címe az Azure-ban.
The webapp '<app-name>' doesn't exist Creating Resource group '<group-name>' ... Resource group creation complete Creating AppServicePlan '<app-service-plan-name>' ... Creating webapp '<app-name>' ... Configuring default logging for the app, if not already enabled Creating zip with contents of dir /home/cephas/myExpressApp ... Getting scm site credentials for zip deployment Starting zip deployment. This operation can take a while to complete ... Deployment endpoint responded with status code 202 You can launch the app at http://<app-name>.azurewebsites.net { "URL": "http://<app-name>.azurewebsites.net", "appserviceplan": "<app-service-plan-name>", "location": "centralus", "name": "<app-name>", "os": "<os-type>", "resourcegroup": "<group-name>", "runtime_version": "python|3.9", "runtime_version_detected": "0.0", "sku": "FREE", "src_path": "<your-folder-location>" }
Feljegyzés
Az az webapp up
parancs a következő műveleteket hajtja végre:
Hozzon létre egy alapértelmezett erőforráscsoportot.
Hozzon létre egy alapértelmezett App Service-csomagot.
Hozzon létre egy alkalmazást a megadott névvel.
A Zip üzembe helyezi az összes fájlt az aktuális munkakönyvtárból, és engedélyezve van a buildautomatizálás.
Gyorsítótárazza a paramétereket helyileg az .azure/config fájlban, hogy ne kelljen újból megadnia őket, amikor később a projektmappából vagy más
az webapp
parancsokkalaz webapp up
telepíti őket. A gyorsítótárazott értékek alapértelmezés szerint automatikusan használatosak.
Problémákat tapasztal? Tudassa velünk.
Alkalmazáskód üzembe helyezése az Azure-ban
Azure-alkalmazás szolgáltatás több módszert is támogat az alkalmazáskód Azure-ban való üzembe helyezéséhez, beleértve a GitHub Actionst és az összes fő CI/CD-eszközt. Ez a cikk azt ismerteti, hogyan helyezheti üzembe a kódot a helyi munkaállomásról az Azure-ban.
- Üzembe helyezés az Azure CLI használatával
- Üzembe helyezés VS Code használatával
- Üzembe helyezés ZIP-fájl használatával
Mivel a az webapp up
parancs létrehozta a szükséges erőforrásokat, és egyetlen lépésben telepítette az alkalmazást, továbbléphet a következő lépésre.
Problémákat tapasztal? Először tekintse meg a hibaelhárítási útmutatót. Ha ez nem segít, tudassa velünk.
Indítási szkript konfigurálása
Bizonyos fájlok jelenléte alapján az App Service automatikusan észleli, hogy egy alkalmazás Django- vagy Flask-alkalmazás-e, és végrehajtja az alkalmazás futtatásának alapértelmezett lépéseit. Más webes keretrendszereken (például a FastAPI-n) alapuló alkalmazások esetében konfigurálnia kell egy indítási szkriptet az App Service-hez az alkalmazás futtatásához; ellenkező esetben az App Service egy alapértelmezett írásvédett alkalmazást futtat az opt/defaultsite mappában.
Ha többet szeretne megtudni arról, hogyan futtatja az App Service a Python-alkalmazásokat, és hogyan konfigurálhatja és szabhatja testre a viselkedését az alkalmazással, olvassa el a Linux Python-alkalmazás konfigurálása Azure-alkalmazás Szolgáltatáshoz című témakört.
Az App Service automatikusan észleli egy Flask-alkalmazás jelenlétét. Ehhez a rövid útmutatóhoz nincs szükség további konfigurációra.
Az alkalmazás megkeresése tallózással
Keresse meg az üzembe helyezett alkalmazást a webböngészőben az URL-cím http://<app-name>.azurewebsites.net
használatával. Ha megjelenik egy alapértelmezett alkalmazáslap, várjon egy percet, és frissítse a böngészőt.
A Python-mintakód egy Linux-tárolót futtat az App Service-ben egy beépített rendszerkép használatával.
Gratulálunk! Üzembe helyezte a Python-alkalmazást az App Service-ben.
Problémákat tapasztal? Először tekintse meg a hibaelhárítási útmutatót. Ha ez nem segít, tudassa velünk.
Naplók streamelése
Azure-alkalmazás szolgáltatás rögzíti a konzol összes üzenetkimenetét, hogy segítsen az alkalmazással kapcsolatos problémák diagnosztizálásában. A mintaalkalmazások olyan utasításokat tartalmaznak print()
, amelyek bemutatják ezt a képességet.
@app.route('/')
def index():
print('Request for index page received')
return render_template('index.html')
@app.route('/favicon.ico')
def favicon():
return send_from_directory(os.path.join(app.root_path, 'static'),
'favicon.ico', mimetype='image/vnd.microsoft.icon')
@app.route('/hello', methods=['POST'])
def hello():
name = request.form.get('name')
if name:
print('Request for hello page received with name=%s' % name)
return render_template('hello.html', name = name)
else:
print('Request for hello page received with no name or blank name -- redirecting')
return redirect(url_for('index'))
Az App Service diagnosztikai naplóinak tartalmát az Azure CLI, a VS Code vagy az Azure Portal használatával tekintheti át.
Először konfigurálnia kell Azure-alkalmazás szolgáltatást, hogy naplókat adjon ki az App Service fájlrendszerbe az az webappnapló konfigurációs parancsával.
az webapp log config \
--web-server-logging filesystem \
--name $APP_SERVICE_NAME \
--resource-group $RESOURCE_GROUP_NAME
A naplók streameléséhez használja az az webapp log tail parancsot.
az webapp log tail \
--name $APP_SERVICE_NAME \
--resource-group $RESOURCE_GROUP_NAME
Frissítse a kezdőlapot az alkalmazásban, vagy próbáljon meg más kéréseket létrehozni néhány naplóüzenetet. A kimenetnek az alábbiakhoz hasonlóan kell kinéznie.
Starting Live Log Stream ---
2021-12-23T02:15:52.740703322Z Request for index page received
2021-12-23T02:15:52.740740222Z 169.254.130.1 - - [23/Dec/2021:02:15:52 +0000] "GET / HTTP/1.1" 200 1360 "https://msdocs-python-webapp-quickstart-123.azurewebsites.net/hello" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:95.0) Gecko/20100101 Firefox/95.0"
2021-12-23T02:15:52.841043070Z 169.254.130.1 - - [23/Dec/2021:02:15:52 +0000] "GET /static/bootstrap/css/bootstrap.min.css HTTP/1.1" 200 0 "https://msdocs-python-webapp-quickstart-123.azurewebsites.net/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:95.0) Gecko/20100101 Firefox/95.0"
2021-12-23T02:15:52.884541951Z 169.254.130.1 - - [23/Dec/2021:02:15:52 +0000] "GET /static/images/azure-icon.svg HTTP/1.1" 200 0 "https://msdocs-python-webapp-quickstart-123.azurewebsites.net/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:95.0) Gecko/20100101 Firefox/95.0"
2021-12-23T02:15:53.043211176Z 169.254.130.1 - - [23/Dec/2021:02:15:53 +0000] "GET /favicon.ico HTTP/1.1" 404 232 "https://msdocs-python-webapp-quickstart-123.azurewebsites.net/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:95.0) Gecko/20100101 Firefox/95.0"
2021-12-23T02:16:01.304306845Z Request for hello page received with name=David
2021-12-23T02:16:01.304335945Z 169.254.130.1 - - [23/Dec/2021:02:16:01 +0000] "POST /hello HTTP/1.1" 200 695 "https://msdocs-python-webapp-quickstart-123.azurewebsites.net/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:95.0) Gecko/20100101 Firefox/95.0"
2021-12-23T02:16:01.398399251Z 169.254.130.1 - - [23/Dec/2021:02:16:01 +0000] "GET /static/bootstrap/css/bootstrap.min.css HTTP/1.1" 304 0 "https://msdocs-python-webapp-quickstart-123.azurewebsites.net/hello" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:95.0) Gecko/20100101 Firefox/95.0"
2021-12-23T02:16:01.430740060Z 169.254.130.1 - - [23/Dec/2021:02:16:01 +0000] "GET /static/images/azure-icon.svg HTTP/1.1" 304 0 "https://msdocs-python-webapp-quickstart-123.azurewebsites.net/hello" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:95.0) Gecko/20100101 Firefox/95.0"
Problémákat tapasztal? Először tekintse meg a hibaelhárítási útmutatót. Ha ez nem segít, tudassa velünk.
Az erőforrások eltávolítása
Ha végzett a mintaalkalmazással, eltávolíthatja az alkalmazás összes erőforrását az Azure-ból. Az erőforráscsoport eltávolítása biztosítja, hogy ne járjon többletköltséggel, és hogy az Azure-előfizetés ne legyen zsúfolt. Az erőforráscsoport eltávolítása az erőforráscsoport összes erőforrását is eltávolítja, és ez a leggyorsabb módja az alkalmazás összes Azure-erőforrásának eltávolításának.
Törölje az erőforráscsoportot az az group delete paranccsal.
az group delete \
--name msdocs-python-webapp-quickstart \
--no-wait
Az --no-wait
argumentum lehetővé teszi a parancs visszatérését a művelet befejezése előtt.
Problémákat tapasztal? Tudassa velünk.