Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
V tomto článku se dozvíte, kdy a jak nakonfigurovat vlastní spouštěcí soubor pro webovou aplikaci v Pythonu hostované ve službě Azure App Service. I když spouštěcí soubor není nutný pro místní vývoj, Azure App Service spustí nasazenou webovou aplikaci v kontejneru Dockeru, který může používat spouštěcí příkazy, pokud je zadáte.
V následujících situacích potřebujete vlastní spouštěcí soubor:
Vlastní argumenty Gunicorn: Chcete spustit výchozí webový server Gunicorn s dodatečnými argumenty nad rámec jeho výchozích hodnot, což jsou
--bind=0.0.0.0 --timeout 600.Alternativní architektury nebo servery: Vaše aplikace je vytvořená s jinou architekturou než Flask nebo Django nebo chcete místo Gunicornu použít jiný webový server.
Nestandardní struktura aplikace Flask: Máte aplikaci Flask, jejíž hlavní soubor kódu má název něco jiného než app.py nebo application.py, nebo objekt aplikace má jiný název než
app.
Jinými slovy, potřebujete vlastní spouštěcí příkaz, pokud váš projekt nemá v kořenové složce soubor app.py nebo application.py s názvem objekt appaplikace Flask .
Další informace najdete v tématu Konfigurace aplikací Pythonu – proces spuštění kontejneru.
Předpoklady
Než nakonfigurujete vlastní spouštěcí soubor, potřebujete existující instanci App Service v Linuxu, která běží s Pythonem. Chcete-li vytvořit službu App Service, postupujte podle rychlého startu v Pythonu pro App Service. Službu App Service můžete vytvořit také pomocí Azure CLI:
az webapp create --resource-group <group> --plan <plan> --name <app-name> --runtime "PYTHON:3.12"
Vytvoření spouštěcího souboru
Pokud potřebujete vlastní spouštěcí soubor, postupujte následovně:
Ve svém projektu vytvořte soubor s názvem startup.txt, startup.sh nebo jiný název, který obsahuje spouštěcí příkazy. Podrobnosti o django, Flasku a dalších architekturách najdete v dalších částech tohoto článku.
Spouštěcí soubor může v případě potřeby obsahovat více příkazů.
Potvrďte soubor do úložiště kódu, abyste ho mohli nasadit se zbytkem aplikace.
V editoru Visual Studio Code vyberte ikonu Azure na panelu aktivit, rozbalte prostředky, vyhledejte a rozbalte své předplatné, rozbalte App Services a klikněte pravým tlačítkem na Službu App Service a vyberte Otevřít na portálu.
Na webu Azure Portal v nabídce služby na levé straně zvolte Konfigurace nastavení>. Na stránce Konfigurace služby App Service vyberte Obecné nastavení, zadejte název spouštěcího souboru (například startup.txt nebo startup.sh) v částiSpouštěcí příkaz> zásobníku a pak vyberte Uložit.
Případně můžete použít Azure CLI k nastavení spouštěcího příkazu:
az webapp config set --resource-group <group> --name <app-name> --startup-file "<startup-command>"Poznámka:
Místo použití spouštěcího souboru příkazu můžete samotný spouštěcí příkaz vložit přímo do pole Spouštěcí příkaz na webu Azure Portal. Použití spouštěcího souboru příkazu se doporučuje, protože ukládá konfiguraci do úložiště. To umožňuje správě verzí sledovat změny a zjednodušuje opětovné nasazení do jiných instancí služby Azure App Service.
Po zobrazení výzvy k restartování služby App Service vyberte Pokračovat .
Pokud před nasazením kódu aplikace přistupujete k webu služby Azure App Service, zobrazí se chyba aplikace, protože pro zpracování požadavku není k dispozici žádný kód.
Spouštěcí příkazy Django
Služba Azure App Service ve výchozím nastavení vyhledá složku obsahující váš soubor wsgi.py a spustí Gunicorn následujícím příkazem:
# <module> is the folder that contains wsgi.py. If you need to use a subfolder,
# specify the parent of <module> using --chdir.
gunicorn --bind=0.0.0.0 --timeout 600 <module>.wsgi
Pokud chcete upravit všechny argumenty Gunicornu, například zvýšit hodnotu časového limitu na 1 200 sekund (--timeout 1200), vytvořte vlastní spouštěcí soubor příkazu. Tato metoda přepíše výchozí nastavení s vašimi konkrétními požadavky. Další informace naleznete v tématu Proces spuštění kontejneru – aplikace Django.
Spouštěcí příkazy Flask
Ve výchozím nastavení App Service v Linuxu předpokládá, že vaše aplikace Flask splňuje následující kritéria:
- Volání WSGI je pojmenováno
app. - Kód aplikace je obsažen v souboru s názvem application.py nebo app.py.
- Soubor aplikace se nachází v kořenové složce aplikace.
Pokud se váš projekt liší od této struktury, musí vlastní spouštěcí příkaz identifikovat umístění objektu aplikace ve formátu file:app_object:
Jiný název souboru nebo název objektu aplikace: Pokud je hlavní soubor kódu aplikace hello.py a objekt aplikace je pojmenovaný
myapp, je spouštěcí příkaz následující:gunicorn --bind=0.0.0.0 --timeout 600 hello:myappSpouštěcí soubor je v podsložce: Pokud je spouštěcí soubor myapp/website.py a objekt aplikace je
app, zadejte pomocí argumentu--chdirGunicorn složku a pak pojmenujte spouštěcí soubor a objekt aplikace obvyklým způsobem:gunicorn --bind=0.0.0.0 --timeout 600 --chdir myapp website:appSpouštěcí soubor je v modulu: V kódu python-sample-vscode-flask-tutorial je spouštěcí soubor webapp.py obsažen v hello_app složek, což je samotný modul se souborem __init__.py . Objekt aplikace je pojmenovaný
appa je definován v __init__.py. webapp.py používá relativní import.Kvůli tomuto uspořádání ukazuje Gunicorn na
webapp:appchybu Pokus o relativní import v nebaleném balíčku a aplikace se nespustí.V této situaci vytvořte soubor shim, který naimportuje objekt aplikace z modulu, a pak pomocí shimu spusťte aplikaci Gunicorn. Kód python-sample-vscode-flask-tutorial , například obsahuje startup.py s následujícím obsahem:
from hello_app.webapp import appSpouštěcí příkaz je pak:
gunicorn --bind=0.0.0.0 --workers=4 startup:app
Další informace najdete v tématu Proces spuštění kontejneru – aplikace Flask.
Další architektury a webové servery
Kontejner služby App Service, na kterém běží aplikace Pythonu, má ve výchozím nastavení nainstalované Django a Flask společně s webovým serverem Gunicorn.
Pokud chcete použít jinou architekturu než Django nebo Flask (například Falcon, FastAPI a další), nebo použít jiný webový server:
Do souboru requirements.txt zahrňte architekturu a webový server.
Ve spouštěcím příkazu identifikujte volání WSGI, jak je popsáno v předchozí části pro Flask.
Pokud chcete spustit jiný webový server než Gunicorn, použijte
python -mmísto přímého vyvolání serveru příkaz. Například následující příkaz spustí server uvicorn za předpokladu, že je volání WSGI pojmenovanéappa nachází se v application.py:python -m uvicorn application:app --host 0.0.0.0Používáte
python -m, protože webové servery nainstalované prostřednictvím requirements.txt nejsou přidány do globálního prostředí Python, a proto je nelze vyvolat přímo. Příkazpython -mvyvolá server z aktuálního virtuálního prostředí.
Nasazení aplikace
Po nakonfigurování spouštěcího souboru je potřeba nasadit kód aplikace do služby App Service. Použijte Azure CLI nebo metodu nasazení podle vašeho výběru:
az webapp up --name <app-name>
Další možnosti nasazení najdete v tématu Osvědčené postupy nasazení.