Publikování webových aplikací v Pythonu do služby Aplikace Azure Service v Linuxu

Visual Studio poskytuje možnost publikovat webovou aplikaci v Pythonu přímo do služby Aplikace Azure Service v Linuxu. Publikování do služby Aplikace Azure Service v Linuxu zahrnuje zkopírování potřebných souborů na server a nastavení příslušného web.config souboru, který dává webovému serveru pokyn, jak spustit aplikaci.

Poznámka:

Linux je jedinou možností operačního systému pro spouštění aplikací v Pythonu ve službě App Service. Python ve Windows se už nepodporuje, jak je popsáno v dokumentaci k App Service pro Linux – podpora Pythonu. Pro Windows můžete vytvořit vlastní image kontejneru Windows a spustit ji ve službě App Service. Další informace najdete v tématu Použití vlastní image Dockeru.

Požadavky

  • Visual Studio. Pokud chcete nainstalovat produkt, postupujte podle kroků v části Instalace sady Visual Studio.

  • Projekt webové aplikace v Pythonu založený na rozhraní Bottle, Flask nebo Django. Můžete vytvořit testovací projekt a vyzkoušet proces publikování.

  • K publikování do Azure potřebujete cílovou službu Aplikace Azure pro vaše předplatné Azure.

    Pokud ještě nemáte předplatné Azure, začněte bezplatným úplným účtem Azure. Zvažte také registraci k sadě Visual Studio Dev Essentials.

Verze sady Visual Studio

Proces publikování se liší mezi sadou Visual Studio 2017 a novějšími a sadou Visual Studio 2015. Oba přístupy jsou popsány v tomto článku.

  • Visual Studio 2015 automatizuje některé kroky instalace, včetně vytvoření web.config souboru, ale tato automatizace omezuje dlouhodobou flexibilitu a kontrolu.

  • Visual Studio 2017 a novější vyžaduje více ručních kroků instalace, ale poskytuje přesnější kontrolu nad prostředím Pythonu.

Další informace o změnách mezi sadou Visual Studio 2015 a sadou Visual Studio 2017 a novějšími najdete v blogovém příspěvku o publikování do Azure v sadě Visual Studio 2017.

Vytvoření testovacího projektu

Pokud nemáte existující projekt k publikování, můžete vytvořit testovací projekt a vyzkoušet proces.

  1. V sadě Visual Studio vyberte Soubor > nový > projekt z nabídky panelu nástrojů a otevřete dialogové okno Vytvořit nový projekt .

  2. V dialogovém okně zadejte do vyhledávacíhopole láhev, vyberte šablonu Bottle Web Project a pak vyberte Další.

    Šablona webového projektu Bottle je součástí vývojové úlohy Pythonu. Další informace najdete v tématu Šablony projektů webových aplikací v Pythonu.

  3. Zadejte název a umístění cesty pro projekt a pak vyberte Vytvořit.

  4. Postupujte podle pokynů k instalaci externích balíčků, vyberte Nainstalovat do virtuálního prostředí a zvolte preferovaný základní interpret pro virtuální prostředí.

    Virtuální prostředí obvykle odpovídá verzi Pythonu nainstalované ve službě App Service.

Až budete připraveni, můžete projekt otestovat místně tak, že vyberete Spustit ladění ladění > nebo použijete klávesovou zkratku F5.

Vytvoření cílové služby Aplikace Azure

Publikování do Azure vyžaduje cílovou službu Aplikace Azure Service pro předplatné Azure.

Vytvořte službu App Service s prázdnou webovou aplikací následujícím způsobem:

  1. Přihlaste se k webu Azure Portal.

  2. Přejděte na stránku App Services .

  3. V rozevírací nabídce vyberte Vytvořit a zvolte Web App . Otevře se stránka Vytvořit webovou aplikaci .

  4. Na kartě Základy nakonfigurujte následující nastavení:

    Nastavení Popis
    Skupina prostředků Toto pole ignorujte. Systém tuto hodnotu aktualizuje po výběru nastavení modulu runtime.
    Název Zadejte název webové aplikace.
    Publikovat Vyberte Kód.
    Zásobník modulu runtime V rozevírací nabídce zvolte příslušný modul runtime Pythonu. Po výběru položky systém aktualizuje pole Skupina prostředků.
    Oblast Vyberte libovolnou oblast Azure, která je blízko vás.
    Cenový plán Vyberte plán Free F1.

    V příkladech v tomto článku můžete nastavení na dalších kartách ignorovat.

  5. Vyberte Zkontrolovat a vytvořit. Zkontrolujte výběry a pak vyberte Vytvořit.

  6. (Volitelné) Jakmile bude služba App Service připravená, můžete přejít na prostředek, vybrat Stáhnout profil publikování a uložit soubor místně.

Konfigurace Pythonu ve službě Aplikace Azure

Jakmile máte službu App Service s prázdnou webovou aplikací spuštěnou ve vašem předplatném, nainstalujte požadovanou verzi Pythonu. Pro publikování ze sady Visual Studio 2017 a novějších si poznamenejte přesnou cestu k interpretu Pythonu nainstalovanému s rozšířením webu. Další informace najdete v tématu Instalace interpretů Pythonu.

V případě potřeby můžete balíček nainstalovat bottle také. Tento balíček je však nainstalován v pozdějším kroku tohoto návodu.

Publikování do služby App Service – Visual Studio 2017 a novější

Publikování do služby Aplikace Azure Service ze sady Visual Studio 2017 a novější zkopíruje jenom soubory v projektu na server. K konfiguraci serverového prostředí je potřeba vytvořit potřebné soubory.

  1. V sadě Visual Studio Průzkumník řešení klikněte pravým tlačítkem myši na projekt a vyberte Přidat > novou položku. V dialogovém okně vyberte šablonu Azure web.config (Fast CGI) a vyberte Přidat. Tento krok vytvoří web.config soubor v kořenovém adresáři projektu.

  2. PythonHandler Upravte položku v web.config souboru tak, aby cesta odpovídala instalaci Pythonu na serveru, jak je popsáno v referenčních informacích ke konfiguraci služby IIS (iis.net). Například pro Python 3.6.1 x64 by se položka měla zobrazit takto:

    <system.webServer>
      <handlers>
        <add name="PythonHandler" path="*" verb="*" modules="FastCgiModule"
            scriptProcessor="D:\home\Python361x64\python.exe|D:\home\Python361x64\wfastcgi.py"
            resourceType="Unspecified" requireAccess="Script"/>
      </handlers>
    </system.webServer>
    
  3. WSGI_HANDLER Podle potřeby nastavte položku v web.config souboru pro architekturu, kterou používáte:

    • Láhev: Přidejte za app.wsgi_app hodnotu závorky, jak je znázorněno v tomto příkladu. Závorky jsou nezbytné, protože objekt je funkce spíše než proměnná. Syntaxi můžete zobrazit v app.py souboru.

      <!-- Bottle apps only -->
      <add key="WSGI_HANDLER" value="app.wsgi_app()"/>
      
    • Flask: Změňte WSGI_HANDLER hodnotu na místo, kde <project_name>.app<project_name> odpovídá názvu projektu. Přesný identifikátor najdete tak, že se podíváte na from <project_name> import app příkaz v runserver.py souboru. Pokud má například projekt název FlaskAzurePublishExample, položka se zobrazí takto:

      <!-- Flask apps only: Change the project name to match your app -->
      <add key="WSGI_HANDLER" value="FlaskAzurePublishExample.app"/>
      
    • Django: Pro projekty Django jsou potřeba web.config dvě změny.

      • WSGI_HANDLER Změňte hodnotu na django.core.wsgi.get_wsgi_application(). Objekt je v wsgi.py souboru.

        <!-- Django apps only -->
        <add key="WSGI_HANDLER" value="django.core.wsgi.get_wsgi_application()"/>
        
      • Přidejte následující položku bezprostředně za položku pro WSGI_HANDLER klíč. Nahraďte hodnotu DjangoAzurePublishExample názvem projektu:

        <add key="DJANGO_SETTINGS_MODULE" value="django_iis_example.settings" />
        
  4. Pouze aplikace Django: Do souboru projektu settings.py Django přidejte do položky doménu adresy URL webu nebo IP adresu ALLOWED_HOSTS . Nahraďte vspython-test-02.azurewebsites.net adresou URL:

    # Change the URL to your specific site
    ALLOWED_HOSTS = ['vspython-test-02.azurewebsites.net']
    

    Pokud adresu URL nepřidáte do výsledků pole, zobrazí se následující chyba:

    DisallowedHost at / Invalid HTTP_HOST header: '\<site URL\>'. You might need to add '\<site URL\>' to ALLOWED_HOSTS.
    

    Když je pole prázdné, Django automaticky povolí 'localhost' jako hostitele. Pokud přidáte produkční adresu URL, 'localhost' není automaticky povolená jako hostitel. Z tohoto důvodu můžete chtít udržovat samostatné vývojové a produkční kopie settings.py souboru nebo pomocí proměnných prostředí řídit hodnoty modulu runtime.

  5. Výběr šablony.

    1. V Průzkumník řešení rozbalte složku projektu.
    2. Klikněte pravým tlačítkem myši na statickou složku a vyberte Přidat > novou položku.
    3. Vyberte šablonu web.config statických souborů Azure a vyberte Přidat.

    Tato akce vytvoří ve statické složce další web.config soubor, který zakáže zpracování Pythonu pro tuto složku. Tato konfigurace odesílá požadavky na statické soubory na výchozí webový server, a ne do aplikace Python.

  6. V Průzkumník řešení uložte projekt a potom klikněte pravým tlačítkem myši na projekt a vyberte Publikovat.

    Snímek obrazovky znázorňující přístup k příkazu Publikovat pro projekt v sadě Visual Studio

  7. V okně Publikovat zadejte cíl publikování:

    1. Jako cíl vyberte Azure a pak vyberte Další.

    2. Pro konkrétní cíl vyberte Aplikace Azure Service (Windows) a vyberte Další.

      • Pokud dialogové okno indikuje, že k dokončení instalace jsou nezbytné další požadované součásti , vyberte Dokončit. Otevře se Instalační program pro Visual Studio. Potvrďte možnosti a vyberte Nainstalovat.
    3. V případě služby App Service vyberte příslušnou službu App Service pro vaše předplatné a vyberte Dokončit.

      Snímek obrazovky, který ukazuje, jak připravit proces publikování do Azure v sadě Visual Studio 2017 a novějším pomocí existujícího předplatného

      Po dokončení procesu vytváření publikování vyberte Zavřít.

  8. Visual Studio zobrazuje stav v okně Aktivita publikování webu a také v okně Průběh vytváření profilu publikování. Až se u webové aplikace zobrazí zpráva Připraveno k publikování, vyberte Publikovat.

    Snímek obrazovky znázorňující, jak publikovat webovou aplikaci v sadě Visual Studio

  9. Po úspěšném publikování se na adrese URL webu otevře výchozí prohlížeč. Adresa URL webu se také zobrazí v okně Publikovat .

    Snímek obrazovky znázorňující prohlížeč otevřený na adrese URL webu publikované webové aplikace

    Pokud se adresa URL webu neotevře automaticky, vyberte Otevřít web a zobrazte webovou aplikaci v prohlížeči:

    Snímek obrazovky znázorňující, jak otevřít adresu URL webu pro publikovanou webovou aplikaci v prohlížeči

  10. Po otevření prohlížeče se může zobrazit zpráva "Stránku nelze zobrazit, protože došlo k vnitřní chybě serveru". Tato zpráva značí, že vaše prostředí Pythonu na serveru není plně nakonfigurované, v takovém případě proveďte následující kroky:

    1. Ujistěte se, že máte nainstalované odpovídající rozšíření webu Pythonu. Další informace najdete v tématu Rychlý start: Nasazení webové aplikace Python (Django nebo Flask) do služby Aplikace Azure Service.

    2. Pečlivě zkontrolujte cestu k interpretu Pythonu v web.config souboru. Cesta musí přesně odpovídat umístění instalace zvoleného rozšíření lokality.

    3. Pomocí konzoly Kudu upgradujte všechny balíčky uvedené v souboru vaší aplikace requirements.txt . Přejděte do stejné složky Pythonu web.config , která se v souboru používá, například /home/python361x64. Spusťte následující příkaz, jak je popsáno v části konzoly Kudu:

      python -m pip install --upgrade -r /home/site/wwwroot/requirements.txt
      

      Pokud se při spuštění tohoto příkazu zobrazí chyby oprávnění, ověřte, že příkaz spouštíte ve složce rozšíření webu. Nespouštět příkaz ve složce, která má jednu z výchozích instalací Pythonu služby App Service. Vzhledem k tomu, že tyto výchozí prostředí nemůžete upravit, pokus o instalaci balíčků určitě selže.

    4. Pokud chcete zobrazit podrobný výstup chyby, přidejte do web.config souboru v <system.webServer> uzlu následující řádek, který poskytuje podrobnější výstup chyby:

      <httpErrors errorMode="Detailed"></httpErrors>
      
    5. Po instalaci nových balíčků zkuste službu App Service restartovat. Při změně web.config souboru není restartování nutné, protože App Service provede automatické restartování při každé web.config změně souboru.

      Tip

      Pokud v souboru requirements.txt vaší aplikace provedete nějaké změny, nezapomeňte opět pomocí konzoly Kudu nainstalovat všechny balíčky uvedené v tomto souboru.

  11. Po úplné konfiguraci serverového prostředí aktualizujte stránku v prohlížeči, aby se zobrazila webová aplikace:

    Snímek obrazovky znázorňující výsledky publikování aplikací Bottle, Flask a Django do služby Aplikace Azure Service v sadě Visual Studio

Publikování do app Service – Visual Studio 2015

Pomocí těchto kroků publikujte webovou aplikaci v Pythonu do služby Aplikace Azure Service v sadě Visual Studio 2015.

  1. V Průzkumníku řešení klikněte pravým tlačítkem na požadovaný projekt a vyberte Publikovat.

  2. V dialogovém okně Publikovat vyberte Microsoft Aplikace Azure Service:

    Snímek obrazovky znázorňující, jak publikovat do Azure v sadě Visual Studio a vybrat službu Aplikace Azure

  3. Jako cíl publikování vyberte službu Microsoft Aplikace Azure Service. V dalším dialogovém okně vyberte existující službu App Service nebo vyberte Nový a vytvořte novou.

  4. Podrobnosti služby App Service se zobrazí na kartě Připojení dialogového okna Publikovat:

    Snímek obrazovky znázorňující, jak publikovat do Azure v sadě Visual Studio a zobrazit připojení služby App Service

  5. Podle potřeby vyberte Další a zkontrolujte další nastavení.

  6. Vyberte Publikovat. Jakmile se vaše aplikace nasadí do Azure, otevře se výchozí prohlížeč na adrese URL webu.

V rámci tohoto procesu Visual Studio také provede následující kroky:

  • web.config Vytvoří soubor na serveru, který obsahuje odpovídající ukazatele na funkci aplikace wsgi_app a na výchozí interpret Pythonu 3.4 služby App Service.
  • Vypne zpracování souborů ve statické složce projektu. (Pravidla pro tuto akci jsou v web.config souboru.)
  • Publikuje virtuální prostředí na server.
  • web.debug.config Přidá soubor a nástroje pro ladění pro povolení vzdáleného ladění. Pro Visual Studio 2019 verze 16.4 a starší jsou nástroje ladění ptvsd. Pro Visual Studio 2019 verze 16.5 a novější jsou ladicí nástroje.

Jak už jsme zmínili dříve, tyto automatické kroky zjednodušují proces publikování, ale můžou ztížit řízení prostředí Pythonu. Soubor se například web.config vytvoří jenom na serveru, ale nepřidá se do projektu. Proces publikování také trvá déle, protože kopíruje celé virtuální prostředí z vývojového počítače místo toho, aby se spoléhal na konfiguraci serveru.

Nakonec můžete chtít zachovat vlastní web.config soubor a použít ho requirements.txt k přímé údržbě balíčků na serveru. Když soubor používáte requirements.txt , zejména vám může pomoct zaručit, že se vaše vývojová a serverová prostředí vždy shodují.