Sdílet prostřednictvím


Rychlý start: Nasazení webové aplikace Pythonu (Django, Flask nebo FastAPI) do služby Aplikace Azure Service

Poznámka:

Od 1. června 2024 budou mít všechny nově vytvořené aplikace App Service možnost vygenerovat jedinečný výchozí název hostitele pomocí zásad <app-name>-<random-hash>.<region>.azurewebsites.netvytváření názvů . Stávající názvy aplikací zůstanou beze změny.

Příklad: myapp-ds27dh7271aah175.westus-01.azurewebsites.net

Další podrobnosti najdete v tématu Jedinečný výchozí název hostitele pro prostředek služby App Service.

V tomto rychlém startu nasadíte webovou aplikaci v Pythonu (Django, Flask nebo FastAPI) do služby Aplikace Azure Service. Aplikace Azure Service je plně spravovaná služba hostování webů, která podporuje aplikace Python hostované v prostředí serveru s Linuxem.

K dokončení tohoto rychlého startu je potřeba:

Poznámka:

Tento článek obsahuje aktuální pokyny k nasazení webové aplikace v Pythonu pomocí služby Aplikace Azure Service. Python ve Windows se už nepodporuje.

Ukázková aplikace

Tento rychlý start je možné dokončit pomocí Flask, Django nebo FastAPI. K dispozici je ukázková aplikace v jednotlivých architekturách, která vám pomůže postupovat podle tohoto rychlého startu. Stáhněte nebo naklonujte ukázkovou aplikaci do místní pracovní stanice.

git clone https://github.com/Azure-Samples/msdocs-python-flask-webapp-quickstart

Místní spuštění aplikace:

  1. Přejděte do složky aplikace:

    cd msdocs-python-flask-webapp-quickstart
    
  2. Vytvořte pro aplikaci virtuální prostředí:

    py -m venv .venv
    .venv\scripts\activate
    
  3. Nainstalujte závislosti:

    pip install -r requirements.txt
    
  4. Spuštění aplikace:

    flask run
    
  5. Ve webovém prohlížeči přejděte k ukázkové aplikaci http://localhost:5000 .

    Snímek obrazovky s aplikací Flask spuštěnou místně v prohlížeči

Máte problémy? Dejte nám vědět.

Vytvoření webové aplikace v Azure

Pokud chcete hostovat aplikaci v Azure, musíte v Azure vytvořit webovou aplikaci Aplikace Azure Service. Webovou aplikaci můžete vytvořit pomocí Azure CLI, VS Code, balíčku rozšíření Azure Tools nebo webu Azure Portal.

Příkazy Azure CLI je možné spouštět na počítači s nainstalovaným Azure CLI.

Azure CLI obsahuje příkaz az webapp up , který vytvoří potřebné prostředky a nasadí vaši aplikaci v jednom kroku.

V případě potřeby se přihlaste k Azure pomocí příkazu az login.

az login

Vytvořte webovou aplikaci a další prostředky a pak nasaďte kód do Azure pomocí příkazu az webapp up.

az webapp up --runtime PYTHON:3.9 --sku B1 --logs
  • Parametr --runtime určuje, jakou verzi Pythonu vaše aplikace běží. Tento příklad používá Python 3.9. Chcete-li zobrazit seznam všech dostupných modulů runtime, použijte příkaz az webapp list-runtimes --os linux --output table.
  • Parametr --sku definuje velikost (procesor, paměť) a náklady na plán služby App Service. V tomto příkladu se používá plán služby B1 (Basic), který bude mít v předplatném Azure malé náklady. Úplný seznam plánů služby App Service najdete na stránce s cenami služby App Service.
  • Příznak --logs konfiguruje výchozí protokolování potřebné k povolení zobrazení streamu protokolu ihned po spuštění webové aplikace.
  • Volitelně můžete zadat název s argumentem --name <app-name>. Pokud ho nezadáte, automaticky se vygeneruje název.
  • Volitelně můžete zahrnout argument --location <location-name> , ve kterém <location_name> je dostupná oblast Azure. Spuštěním az appservice list-locations příkazu můžete načíst seznam povolených oblastí pro váš účet Azure.

Dokončení příkazu může trvat několik minut. Během spuštění příkazu poskytuje zprávy o vytvoření skupiny prostředků, plánu služby App Service a prostředku aplikace, konfiguraci protokolování a nasazení souboru ZIP. Zobrazí se zpráva "Aplikaci můžete spustit na http://< app-name.azurewebsites.net>", což je adresa URL aplikace v Azure.

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>"
}

Poznámka:

Příkaz az webapp up provádí tyto akce:

  • Vytvořte výchozí skupinu prostředků.

  • Vytvořte výchozí plán služby App Service.

  • Vytvořte aplikaci se zadaným názvem.

  • Zip nasadí všechny soubory z aktuálního pracovního adresáře s povolenou automatizací sestavení.

  • Uložte parametry do mezipaměti místně v souboru .azure/config , abyste je nemuseli při pozdějším az webapp up az webapp nasazení s jinými příkazy ze složky projektu zadávat znovu. Hodnoty uložené v mezipaměti se ve výchozím nastavení používají automaticky.

Máte problémy? Dejte nám vědět.

Nasazení kódu aplikace do Azure

Aplikace Azure Service podporuje více metod nasazení kódu aplikace do Azure, včetně GitHub Actions a všech hlavních nástrojů CI/CD. Tento článek se zaměřuje na nasazení kódu z místní pracovní stanice do Azure.

Vzhledem k tomu, že az webapp up příkaz vytvořil potřebné prostředky a nasadil aplikaci v jednom kroku, můžete přejít k dalšímu kroku.


Máte problémy? Nejprve si projděte průvodce odstraňováním potíží. Pokud to nepomůže, dejte nám vědět.

Konfigurace spouštěcího skriptu

V závislosti na přítomnosti určitých souborů v nasazení app Service automaticky zjistí, jestli se jedná o aplikaci Django nebo Flask, a provede výchozí kroky pro spuštění aplikace. Pro aplikace založené na jiných webových architekturách, jako je FastAPI, musíte nakonfigurovat spouštěcí skript pro službu App Service ke spuštění vaší aplikace; Jinak app Service spustí výchozí aplikaci jen pro čtení umístěnou ve složce opt/defaultsite .

Další informace o tom, jak App Service spouští aplikace v Pythonu a jak můžete nakonfigurovat a přizpůsobit jeho chování pomocí aplikace, najdete v tématu Konfigurace aplikace v Pythonu pro Linux pro službu Aplikace Azure Service.

App Service automaticky rozpozná přítomnost aplikace Flask. Pro účely tohoto rychlého startu není nutná žádná další konfigurace.

Přechod do aplikace

Pomocí adresy URL http://<app-name>.azurewebsites.netpřejděte do nasazené aplikace ve webovém prohlížeči. Pokud se zobrazí výchozí stránka aplikace, počkejte minutu a aktualizujte prohlížeč.

Ukázkový kód Pythonu spouští kontejner Linuxu ve službě App Service pomocí integrované image.

Snímek obrazovky aplikace spuštěné v Azure

Blahopřejeme! Nasadili jste aplikaci v Pythonu do služby App Service.

Máte problémy? Nejprve si projděte průvodce odstraňováním potíží. Pokud to nepomůže, dejte nám vědět.

Protokoly datových proudů

Aplikace Azure Služba zachytí veškerý výstup zpráv do konzoly, aby vám pomohla při diagnostice problémů s vaší aplikací. Ukázkové aplikace obsahují print() příkazy pro předvedení této funkce.

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

Obsah diagnostických protokolů služby App Service můžete zkontrolovat pomocí Azure CLI, VS Code nebo webu Azure Portal.

Nejprve je potřeba nakonfigurovat službu Aplikace Azure Service tak, aby výstupní protokoly do systému souborů služby App Service používala příkaz az webapp log config.

az webapp log config \
    --web-server-logging filesystem \
    --name $APP_SERVICE_NAME \
    --resource-group $RESOURCE_GROUP_NAME

K streamování protokolů použijte příkaz az webapp log tail .

az webapp log tail \
    --name $APP_SERVICE_NAME \
    --resource-group $RESOURCE_GROUP_NAME

Aktualizujte domovskou stránku v aplikaci nebo zkuste jiné žádosti o vygenerování některých zpráv protokolu. Výstup by měl vypadat podobně jako v následujícím příkladu.

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"

Máte problémy? Nejprve si projděte průvodce odstraňováním potíží. Pokud to nepomůže, dejte nám vědět.

Vyčištění prostředků

Až budete s ukázkovou aplikací hotovi, můžete z Azure odebrat všechny prostředky aplikace. Odebráním skupiny prostředků se zajistí, že se vám nebudou účtovat další poplatky a zajistíte, aby vaše předplatné Azure nebylo přehledné. Odebráním skupiny prostředků se také odeberou všechny prostředky ve skupině prostředků a je nejrychlejší způsob, jak odebrat všechny prostředky Azure pro vaši aplikaci.

Odstraňte skupinu prostředků pomocí příkazu az group delete .

az group delete \
    --name msdocs-python-webapp-quickstart \
    --no-wait

Argument --no-wait umožňuje, aby se příkaz vrátil před dokončením operace.

Máte problémy? Dejte nám vědět.

Další kroky