Rychlý start: Nasazení webové aplikace v Pythonu (Django nebo Flask) do služby Aplikace Azure Service
V tomto rychlém startu nasadíte webovou aplikaci v Pythonu (Django nebo Flask) 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.
1. Ukázková aplikace
Tento rychlý start je možné dokončit pomocí Flasku nebo Django. 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.
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.
2. Vytvoření webové aplikace v Azure
Pokud chcete hostovat aplikaci v Azure, musíte vytvořit webovou aplikaci Aplikace Azure Service v Azure. 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 account 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.
3. Nasazení kódu aplikace do Azure
Aplikace Azure služba podporuje více metod nasazení kódu aplikace do Azure, včetně podpory 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.
- Nasazení pomocí Azure CLI
- Nasazení pomocí VS Code
- Nasazení pomocí místního Gitu
- Nasazení pomocí souboru ZIP
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 na 4 – přejít 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, počkejte minutu a aktualizujte prohlížeč.
Ukázkový kód Pythonu spouští kontejner Linuxu ve službě App Service pomocí integrované image.
Gratulujeme! 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íží, jinak nám dejte vědět.
5. Streamování protokolů
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 je možné 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íží, jinak nám dejte 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. Nebudou se vám účtovat další poplatky a nezachovají se vaše předplatné Azure bez přehledu. 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.