Rychlý start: Nasazení webové aplikace v Pythonu (Django nebo Flask) do Azure App Service

V tomto rychlém startu nasadíte webovou aplikaci v Pythonu (Django nebo Flask) do Azure App Service. Azure App Service je plně spravovaná služba hostování webů, která podporuje aplikace Python 3.7 a vyšší hostované v linuxovém serverovém prostředí.

Co budete potřebovat k dokončení tohoto rychlého startu:

  1. Účet Azure s aktivním předplatným. Vytvořte si účet zdarma.
  2. Python 3.9 nebo novější nainstalovaný místně.

Poznámka: Tento článek obsahuje aktuální pokyny k nasazení webové aplikace v Pythonu pomocí Azure App Service. Python ve Windows už není podporovaný.

1. Ukázková aplikace

Tento rychlý start můžete dokončit pomocí Flasku nebo Django. V každé architektuře je k dispozici ukázková aplikace, která vám pomůže postupovat podle tohoto rychlého startu. Stáhněte nebo naklonujte ukázkovou aplikaci na místní pracovní stanici.

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 na ukázkovou aplikaci na adrese http://localhost:5000 .

    Snímek obrazovky aplikace Flask spuštěné místně v prohlížeči

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

2. Vytvoření webové aplikace v Azure

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

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

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

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 používá. Tento příklad používá Python 3.9. Pokud chcete 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 ve vašem předplatném Azure malé náklady. Úplný seznam App Service plánů najdete na stránce s cenami App Service.
  • Příznak --logs konfiguruje výchozí protokolování potřebné k tomu, aby bylo možné zobrazit stream protokolu ihned po spuštění webové aplikace.
  • Volitelně můžete zadat název pomocí argumentu --name <app-name>. Pokud ho nezadáte, vygeneruje se automaticky název.
  • Volitelně můžete zahrnout argument --location <location-name> , ve kterém <location_name> je dostupná oblast Azure. Seznam povolených oblastí pro váš účet Azure můžete načíst spuštěním az account list-locations příkazu .

Dokončení příkazu může trvat několik minut. Když je příkaz spuštěný, poskytuje zprávy o vytvoření skupiny prostředků, plánu App Service a prostředku aplikace, konfiguraci protokolování a nasazení ZIP. Zobrazí se zpráva "Aplikaci můžete spustit na adrese 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 App Service.

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

  • Zip nasaďte 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 znovu zadávat při pozdějším nasazení pomocí az webapp up nebo jiných az webapp příkazů ze složky projektu. 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.

3. Nasazení kódu aplikace do Azure

Aplikace Azure služba podporuje několik metod nasazení kódu aplikace do Azure, včetně podpory pro 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 předchozí krok vytvořil potřebné prostředky a nasadil aplikaci v jediném kroku, můžete přejít na 4 – Přejděte na aplikaci.


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

4 – Přejděte do aplikace.

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

Ukázkový kód Pythonu spouští kontejner Linuxu v App Service pomocí integrované image.

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

Gratulujeme! Nasadili jste aplikaci v Pythonu do App Service.

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

5. Streamování protokolů

Azure App Service zachytává všechny výstupy zpráv do konzoly, aby vám pomohl diagnostikovat problémy s aplikací. Ukázkové aplikace obsahují print() příkazy, které tuto schopnost předvádějí.

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

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

Nejprve je potřeba nakonfigurovat Azure App Service tak, aby pomocí příkazu az webapp log config vystavily protokoly do App Service systému souborů.

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

Pokud chcete streamovat protokoly, 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 se pokuste o vygenerování některých zpráv protokolu jinými požadavky. Výstup by měl vypadat nějak takto.

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íží, jinak nám dejte vědět.

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

Až ukázkovou aplikaci dokončíte, můžete z Azure odebrat všechny prostředky aplikace. Nebudou se vám účtovat další poplatky a vaše předplatné Azure zůstane přehledné. Odebráním skupiny prostředků se také odeberou všechny prostředky ve skupině prostředků a je to 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 příkazu vrátit se před dokončením operace.

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

Další kroky