Rövid útmutató: Python -webalkalmazás (Django vagy Flask) üzembe helyezése Azure-alkalmazás Szolgáltatásban

Ebben a rövid útmutatóban egy Python-webalkalmazást (Django vagy Flask) fog üzembe helyezni 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:

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.

1 – Mintaalkalmazás

Ez a rövid útmutató a Flask vagy a Django 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:

  1. Nyissa meg az alkalmazásmappát:

    cd msdocs-python-flask-webapp-quickstart
    
  2. Hozzon létre egy virtuális környezetet az alkalmazáshoz:

    py -m venv .venv
    .venv\scripts\activate
    
  3. Telepítse a függőségeket:

    pip install -r requirements.txt
    
  4. Futtassa az alkalmazást:

    flask run
    
  5. Tallózással keresse meg a mintaalkalmazást http://localhost:5000 egy webböngészőben.

    Screenshot of the Flask app running locally in a browser

Problémákat tapasztal? Tudassa velünk.

2 – Webalkalmazás létrehozása az Azure-ban

Az alkalmazás Azure-ban való üzemeltetéséhez létre kell hoznia 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 parancsot az 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óinak az account 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 parancsokkal az 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.

3 – 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 Actions és az összes fő CI/CD-eszköz támogatását. Ez a cikk azt ismerteti, hogyan helyezheti üzembe a kódot a helyi munkaállomásról az Azure-ban.

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 4. lépésre – Tallózás az alkalmazáshoz.


Problémákat tapasztal? Tekintse meg először a hibaelhárítási útmutatót, különben tudassa velünk.

4 – Tallózás az alkalmazáshoz

Keresse meg az üzembe helyezett alkalmazást a webböngészőben az URL-címen http://<app-name>.azurewebsites.net. 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.

Screenshot of the app running in Azure

Gratulálunk! Üzembe helyezte a Python-alkalmazást az App Service-ben.

Problémákat tapasztal? Tekintse meg először a hibaelhárítási útmutatót, különben tudassa velünk.

5 – 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 = Flask(__name__)


@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')

Az App Service diagnosztikai naplóinak tartalma áttekinthető az Azure CLI, a VS Code vagy az Azure Portal használatával.

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? Tekintse meg először a hibaelhárítási útmutatót, különben 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. Ez nem jár többletköltséggel, és az Azure-előfizetése nem lesz 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.

Következő lépések