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.net
vytvář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:
- Účet Azure s aktivním předplatným. Vytvoření účtu zdarma
- Python 3.9 nebo vyšší je nainstalovaný místně.
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:
Přejděte do složky aplikace:
cd msdocs-python-flask-webapp-quickstart
Vytvořte pro aplikaci virtuální prostředí:
py -m venv .venv .venv\scripts\activate
Nainstalujte závislosti:
pip install -r requirements.txt
Spuštění aplikace:
flask run
Ve webovém prohlížeči přejděte k ukázkové aplikaci
http://localhost:5000
.
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říkazaz 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ímaz 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.net
př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.
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.