Kurz: Vytvoření webové aplikace Tomcat se službou Aplikace Azure Service v Linuxu a MySQL

V tomto kurzu se dozvíte, jak sestavit, nakonfigurovat a nasadit zabezpečenou aplikaci Tomcat ve službě Azure App Service, která se připojuje k databázi MySQL (pomocí Azure Database for MySQL). Azure App Service je vysoce škálovatelná služba pro hostování webových aplikací, která se sama aktualizuje a umožňuje snadné nasazení aplikací v systému Windows nebo Linux. Až budete hotovi, máte aplikaci Tomcat spuštěnou ve službě Azure App Service v Linuxu.

Snímek obrazovky aplikace Tomcat, která ukládá data do MySQL

V tomto kurzu se naučíte:

  • Vytvořte zabezpečenou výchozí architekturu pro službu Aplikace Azure Service a Azure Database for MySQL.
  • Zabezpečení tajných kódů připojení pomocí spravované identity a odkazů na Key Vault
  • Nasaďte ukázkovou aplikaci Tomcat do služby App Service z úložiště GitHub.
  • Přístup k nastavení aplikace App Service v kódu aplikace
  • Proveďte aktualizace a znovu nasaďte kód aplikace.
  • Streamování diagnostických protokolů ze služby App Service
  • Správa aplikace na webu Azure Portal
  • Zřiďte stejnou architekturu a nasaďte ji pomocí Azure Developer CLI.
  • Optimalizujte svůj vývojový pracovní postup pomocí GitHub Codespaces a GitHub Copilotu.

Požadavky

Přeskočit na konec

Ukázkovou aplikaci můžete rychle nasadit v tomto kurzu a zobrazit ji spuštěnou v Azure. V Azure Cloud Shellu stačí spustit následující příkazy a postupovat podle pokynů:

mkdir msdocs-tomcat-mysql-sample-app
cd msdocs-tomcat-mysql-sample-app
azd init --template msdocs-tomcat-mysql-sample-app .
azd up

1. Spustit ukázku

Nejprve nastavíte ukázkovou aplikaci řízenou daty jako výchozí bod. Ukázkové úložiště zahrnuje konfiguraci vývojového kontejneru. Vývojový kontejner má vše, co potřebujete k vývoji aplikace, včetně databáze, mezipaměti a všech proměnných prostředí potřebných ukázkovou aplikací. Vývojový kontejner se může spouštět v kódu GitHubu, což znamená, že ukázku můžete spustit na libovolném počítači s webovým prohlížečem.

Krok 1: V novém okně prohlížeče:

  1. Přihlaste se k účtu GitHub.
  2. Přejděte na https://github.com/Azure-Samples/msdocs-tomcat-mysql-sample-app/fork.
  3. Zrušte zaškrtnutí možnosti Kopírovat pouze hlavní větev. Chcete všechny větve.
  4. Vyberte Vytvořit fork.

Krok 2: Ve fork GitHubu:

  1. Vyberte pro větev main>starter-no-infra. Tato větev obsahuje pouze ukázkový projekt a žádné soubory ani konfiguraci související s Azure.
  2. Vyberte Code>Create codespace on starter-no-infra. Nastavení codespace trvá několik minut.

Krok 3: V terminálu codespace:

  1. Spusťte mvn jetty:run.
  2. Až se zobrazí oznámení Your application running on port 80 is available., vyberte Otevřít v prohlížeči. Ukázkovou aplikaci byste měli vidět na nové kartě prohlížeče. Chcete-li zastavit server Jetty, zadejte Ctrl+C.

Návod

Na toto úložiště se můžete zeptat GitHub Copilot. Příklad:

  • @workspace Co tento projekt dělá?
  • @workspace Co dělá složka .devcontainer?

Máte problémy? Projděte si část Řešení potíží.

2. Vytvoření služby App Service a MySQL

Nejprve vytvoříte prostředky Azure. Kroky použité v tomto kurzu vytvoří sadu prostředků zabezpečení ve výchozím nastavení, které zahrnují App Service a Azure Database for MySQL. Pro proces vytváření zadáte:

  • Název webové aplikace. Používá se jako součást názvu DNS.
  • Oblast, ve které se má aplikace spouštět fyzicky v rámci světa. Používá se také jako součást názvu DNS pro vaši aplikaci.
  • Zásobník běhového prostředí pro aplikaci. Tady vyberete verzi Javy, kterou chcete použít pro svou aplikaci.
  • Plán hostování aplikace. Je to cenová úroveň, která zahrnuje sadu funkcí a kapacitu škálování vaší aplikace.
  • Skupina prostředků pro aplikaci. Skupina prostředků umožňuje seskupovat (v logickém kontejneru) všechny prostředky Azure potřebné pro aplikaci.

Přihlaste se k webu Azure Portal a podle těchto kroků vytvořte prostředky služby Azure App Service.

  1. Na portálu Azure:

    • Na panelu hledání v horní části zadejte app service.
    • V části Služby vyberte App Service.
    • Vyberte Vytvořit>webovou aplikaci.

    Můžete také přejít přímo do průvodce vytvořením.

  2. Na stránce Vytvořit webovou aplikaci na kartě Základy vyplňte formulář následujícím způsobem:

    • Skupina prostředků: Vyberte Vytvořit novou a použijte název msdocs-tomcat-mysql-tutorial.
    • Název: msdocs-tomcat-mysql-XYZ, kde XYZ je jakékoli tři náhodné znaky.
    • Běhové prostředí: Java 25.
    • Sada webového serveru Java: Apache Tomcat 11.0.
    • Operační systém: Linux.
    • Oblast: Libovolná oblast Azure, která je blízko vás.
    • Cenový plán: Basic. Až budete připraveni, můžete zvýšit kapacitu na produkční cenovou úroveň.
  3. Vyberte kartu Databáze a nakonfigurujte databázi:

    • Vyberte Vytvořit databázi.
    • V Engin vyberte MySQL - Flexibilní server. Flexibilní server Azure Database for MySQL je plně spravovaná databáze MySQL jako služba v Azure, která je kompatibilní s nejnovějšími edicemi komunity.
    • Nevybírejte možnost Vytvořit Azure Cache for Redis.
  4. Vyberte Zkontrolovat a vytvořit. Po dokončení ověření vyberte Vytvořit.

  5. Po dokončení nasazení vyberte tlačítko Přejít k prostředku. Přejdete přímo do aplikace App Service.

Vytvoří se následující prostředky:

  • Skupina prostředků: Kontejner pro všechny vytvořené prostředky.
  • Plán služby App Service: Definuje výpočetní prostředky pro Službu App Service. Vytvoří se plán Linuxu na úrovni Basic .
  • App Service: Představuje vaši aplikaci a spouští se v plánu služby App Service.
  • Virtuální síť: Integrovaná s aplikací App Service a izoluje provoz back-endové sítě.
  • Flexibilní server Azure Database for MySQL: Přístupný pouze z virtuální sítě. Databáze a uživatel se pro vás vytvoří na serveru.
  • Privátní zóny DNS: Povolte rozlišení DNS serveru databáze ve virtuální síti.

Máte problémy? Projděte si část Řešení potíží.

3. Zabezpečení tajných kódů připojení

Průvodce vytvořením pro vás již vygeneroval řetězec připojení k databázi jako nastavení aplikace. Osvědčeným postupem zabezpečení je ale úplné zachování tajných kódů mimo službu App Service. Tajné kódy přesunete do trezoru klíčů a změníte nastavení aplikace na referenční informace ke službě Key Vault pomocí konektorů služeb.

Krok 1: Načtení existujícího připojovacího řetězce

  1. V levém menu na stránce App Service vyberte Nastavení Proměnné prostředí>.
  2. Vyberte AZURE_MYSQL_CONNECTIONSTRING. Obsahuje připojovací řetězec JDBC. Pokud přidáte nastavení aplikace, které obsahuje platný připojovací řetězec Oracle, SQL Server, PostgreSQL nebo MySQL, služba App Service ho vloží jako zdroj dat JNDI (Java Naming and Directory Interface) do souboru context.xml serveru Tomcat.
  3. V přidání/úprava nastavení aplikace, v poli Hodnota najděte heslo= část na konci řetězce.
  4. Zkopírujte řetězec hesla za heslem = pro pozdější použití. Toto nastavení aplikace umožňuje připojit se k databázi MySQL zabezpečenou za privátním koncovým bodem. Tajný kód se ale uloží přímo v aplikaci App Service, což není nejlepší. Změníte to.

Krok 2: Vytvoření trezoru klíčů pro zabezpečenou správu tajných kódů

  1. Na horním panelu hledání zadejte "key vault" a pak vyberte Marketplace>Key Vault.
  2. Ve skupině prostředků vyberte msdocs-tomcat-mysql-tutorial.
  3. Do názvu trezoru klíčů zadejte název, který se skládá jenom z písmen a číslic.
  4. V oblasti ji nastavte na stejné umístění jako skupina prostředků.

Krok 3: Zabezpečení trezoru klíčů pomocí privátního koncového bodu

  1. Vyberte kartu Sítě .
  2. Zrušte výběr možnosti Povolit veřejný přístup.
  3. Vyberte Vytvořit privátní koncový bod.
  4. Ve skupině prostředků vyberte msdocs-tomcat-mysql-tutorial.
  5. Do pole Název zadejte název privátního koncového bodu, který se skládá jenom z písmen a číslic.
  6. V oblasti ji nastavte na stejné umístění jako skupina prostředků.
  7. V dialogovém okně v umístění vyberte stejné umístění jako vaše aplikace App Service.
  8. Ve skupině prostředků vyberte msdocs-tomcat-mysql-tutorial.
  9. Do pole Název zadejte msdocs-tomcat-mysql-XYZVaultEndpoint.
  10. Ve virtuální síti vyberte msdocs-tomcat-mysql-XYZVnet.
  11. V podsítimsdocs-tomcat-mysql-XYZSubnet.
  12. Vyberte OK.
  13. Vyberte Zkontrolovat a vytvořit a pak vyberte Vytvořit. Počkejte na dokončení nasazení trezoru klíčů. Měla by se zobrazit informace o tom, že vaše nasazení je dokončené.

Krok 4: Konfigurace konektoru služby

  1. Na horním panelu hledání zadejte msdocs-tomcat-mysql a pak prostředek služby App Service s názvem msdocs-tomcat-mysql-XYZ.
  2. Na stránce služby App Service v nabídce vlevo vyberte Nastavení > Konektor služby. Konektor, který pro vás vytvořil průvodce vytvořením aplikace, už existuje.
  3. Zaškrtněte políčko vedle spojnice a pak vyberte Upravit.
  4. Na kartě Základy nastavte typ klienta na Javu.
  5. Vyberte kartu Ověřování .
  6. Do pole Heslo vložte dříve zkopírované heslo.
  7. Vyberte Uložit tajný klíč ve službě Key Vault.
  8. V části Připojení ke službě Key Vault vyberte Vytvořit nový. V horní části dialogového okna pro úpravy se otevře dialogové okno Vytvořit připojení .

Krok 5: Vytvoření připojení ke službě Key Vault

  1. V dialogovém okně Vytvořit připojení pro připojení ke službě Key Vault vyberte ve službě Key Vault trezor klíčů, který jste vytvořili dříve.
  2. Vyberte Recenze + Vytvořit. Měli byste vidět, že spravovaná identita přiřazená systémem je nastavená na Vybraná.
  3. Po dokončení ověření vyberte Vytvořit.

Krok 6: Dokončení konfigurace konektoru služby

  1. Jste zpátky v dialogovém okně pro úpravy pro defaultConnector. Na kartě Ověřování počkejte na vytvoření konektoru trezoru klíčů. Po dokončení rozevírací seznam Připojení ke službě Key Vault automaticky vybere tuto možnost.
  2. Vyberte Další: Sítě.
  3. Vyberte Uložit. Počkejte, až se zobrazí oznámení o úspěšném dokončení aktualizace .

Snímek obrazovky znázorňující připojení trezoru klíčů vybrané ve výchozím connectoru

Krok 7: Ověření integrace služby Key Vault

  1. V nabídce vlevo znovu vyberte Nastavení > Proměnné prostředí.
  2. Vedle AZURE_MYSQL_CONNECTIONSTRING vyberte Zobrazit hodnotu. Hodnota by měla být @Microsoft.KeyVault(...), což znamená, že se jedná o odkaz na trezor klíčů , protože tajný klíč je teď spravovaný v trezoru klíčů.

Tento proces zahrnoval načtení připojovací řetězec MySQL z proměnných prostředí služby App Service, vytvoření služby Azure Key Vault pro zabezpečenou správu tajných kódů s privátním přístupem a aktualizaci konektoru služby tak, aby ukládaly heslo do trezoru klíčů. Zabezpečené připojení mezi aplikací služby App Service a trezorem klíčů bylo vytvořeno pomocí spravované identity přiřazené systémem a nastavení bylo ověřeno potvrzením, že připojovací řetězec používá referenci ke službě Key Vault.

Máte problémy? Projděte si část Řešení potíží.

4. Potvrďte zdroj dat JNDI.

Pokud nastavení vaší aplikace obsahuje platný připojovací řetězec JDBC pro Oracle, SQL Server, PostgreSQL nebo MySQL a nastavení aplikace WEBSITE_AUTOCONFIGURE_DATABASE je nastavené na true, App Service pro něj přidá zdroj dat rozhraní Java Naming and Directory Interface (JNDI) do souboru context.xml serveru Tomcat. V tomto kroku přidáte toto nastavení aplikace a pak pomocí připojení SSH ke kontejneru aplikace ověříte zdroj dat JNDI. V procesu se dozvíte, jak získat přístup k prostředí SSH pro kontejner Tomcat.

Krok 1: Stále jste na stránce Proměnné prostředí z předchozí části. Přidejte nastavení aplikace pro povolení automatické konfigurace zdroje dat:

  1. Vyberte Přidat.
  2. Nastavte Název na WEBSITE_AUTOCONFIGURE_DATABASE a Hodnotu na true.
  3. Vyberte Použít a pak znovu použít , abyste aplikaci uložili a znovu spustili.

Krok 2: Zpět na stránce služby App Service:

  1. V nabídce vlevo vyberte SSH.
  2. Vyberte Přejít.

Krok 3: V terminálu SSH spusťte cat /usr/local/tomcat/conf/context.xmlpříkaz . Měli byste vidět, že byl přidán prostředek JNDI s názvem jdbc/AZURE_MYSQL_CONNECTIONSTRING_DS. Tento zdroj dat použijete později.

Poznámka:

Kromě restartování aplikace se můžou zachovat jenom změny v /home souborech. Pokud například upravíte /usr/local/tomcat/conf/server.xml, změny se nezachovají i po restartování aplikace.

Máte problémy? Projděte si část Řešení potíží.

5. Nasazení ukázkového kódu

V tomto kroku nakonfigurujete nasazení GitHubu pomocí GitHub Actions. Je to jen jeden z mnoha způsobů nasazení do služby App Service, ale také skvělý způsob, jak mít kontinuální integraci v procesu nasazení. Ve výchozím nastavení spustí každá git push z vašich úložišť GitHub akci sestavení a nasazení.

Podle konvence Tomcat, pokud chcete nasadit do kořenového kontextu Tomcat, pojmenujte vytvořený artefakt ROOT.war.

Krok 1: Zpět na stránce služby App Service v nabídce vlevo vyberte Deployment Center.

Krok 2: Na stránce Deployment Center:

  1. Ve zdroji vyberte GitHub. Ve výchozím nastavení je jako zprostředkovatel sestavení vybrán GitHub Actions .
  2. Přihlaste se ke svému účtu GitHub a postupujte podle pokynů k autorizaci Azure.
  3. V organizaci vyberte svůj účet.
  4. V úložišti vyberte msdocs-tomcat-mysql-sample-app.
  5. Ve Branch vyberte starter-no-infra. Jedná se o stejnou větev, ve které jste pracovali s ukázkovou aplikací bez jakýchkoli souborů nebo konfigurace souvisejících s Azure.
  6. Jako typ ověřování vyberte identitu přiřazenou uživatelem.
  7. V horní nabídce vyberte Uložit. App Service potvrdí soubor pracovního postupu do zvoleného úložiště GitHub v .github/workflows adresáři. Ve výchozím nastavení nasazovací centrum vytvoří uživatelsky přiřazenou identitu pro workflow k autentizaci pomocí Microsoft Entra (ověřování OIDC). Alternativní možnosti ověřování najdete v tématu Nasazení do služby App Service pomocí GitHub Actions.

Krok 3: Vraťte se do prostoru kódu GitHubu ukázkového forku a spusťte git pull origin starter-no-infra. Tím se do vašeho prostoru kódu načte nově potvrzený soubor pracovního postupu.

Krok 4 (možnost 1: s GitHub Copilotem):

  1. Spusťte nový chat kliknutím na zobrazení Chat a potom kliknutím na +.
  2. Zeptejte se na @workspace Jak se aplikace připojuje k databázi? Copilot vám může poskytnout vysvětlení o zdroji jdbc/MYSQLDS dat a jeho konfiguraci.
  3. Zeptejte se, "@workspace chci nahradit zdroj dat definovaný v persistence.xml existujícím zdrojem dat JNDI v Tomcat, ale chci to udělat dynamicky." Copilot vám může dát návrh kódu podobný tomu, který je v možnosti 2: bez použití GitHub Copilotu, a dokonce vám doporučí změnu ve třídě ContextListener.
  4. Otevřete soubor src/main/java/com/microsoft/azure/appservice/examples/tomcatmysql/ContextListener.java v Průzkumníkovi a přidejte do contextInitialized metody návrh kódu. GitHub Copilot vám pokaždé nedává stejnou odpověď, možná budete muset položit další otázky, abyste mohli doladit odpověď. Tipy najdete v tématu Co můžu dělat s GitHub Copilotem v kódu?.

Krok 4 (možnost 2: bez GitHub Copilotu):

  1. Otevřete soubor src/main/java/com/microsoft/azure/appservice/examples/tomcatmysql/ContextListener.java v Průzkumníkovi. Při spuštění aplikace tato třída načte nastavení databáze v src/main/resources/META-INF/persistence.xml.
  2. contextIntialized() V metodě vyhledejte okomentovaný kód (řádky 29–33) a odkomentujte ho. Tento kód zkontroluje, jestli AZURE_MYSQL_CONNECTIONSTRING nastavení aplikace existuje, a změní zdroj dat na java:comp/env/jdbc/AZURE_MYSQL_CONNECTIONSTRING_DS, což je zdroj dat, který jste našli dříve v context.xml v prostředí SSH.

Krok 5:

  1. Vyberte rozšíření správy zdrojového kódu .
  2. Do textového pole zadejte zprávu potvrzení, například Configure Azure data source.
  3. Vyberte Potvrdit a potvrďte akci ano.
  4. Vyberte Synchronizovat změny 1, poté potvrďte kliknutím na OK.

Krok 6: Zpět na stránce Deployment Center na webu Azure Portal:

  1. Vyberte Protokoly. Na základě vašich potvrzených změn už byl spuštěn nový běh nasazení.
  2. V záznamu protokolu běhu nasazení vyberte položku Sestavit/Nasadit protokoly s nejnovějším časovým razítkem.

Krok 7: Přejdete do svého úložiště GitHub a zjistíte, že je spuštěná akce GitHubu. Soubor pracovního postupu definuje dvě samostatné fáze, sestavení a nasazení. Počkejte na spuštění GitHubu, aby se zobrazil stav Dokončeno. Trvá to asi 5 minut.

Máte problémy? Projděte si část Řešení potíží.

6. Přejděte do aplikace.

Krok 1: Na stránce služby App Service:

  1. V nabídce vlevo vyberte Přehled.
  2. Vyberte adresu URL aplikace.

Krok 2: Přidejte do seznamu několik úkolů. Blahopřejeme, spouštíte webovou aplikaci ve službě Aplikace Azure Service se zabezpečeným připojením ke službě Azure Database for MySQL.

Máte problémy? Projděte si část Řešení potíží.

7. Streamování diagnostických protokolů

Azure App Service zachytává všechny zprávy odeslané do konzole, aby vám pomohla diagnostikovat problémy s vaší aplikací. Ukázková aplikace obsahuje standardní příkazy protokolování Log4j, které demonstrují tuto funkci, jak je znázorněno v následujícím fragmentu kódu:

@WebServlet(urlPatterns = "/")
public class ViewServlet extends HttpServlet {
    private static Logger logger = LogManager.getLogger(ViewServlet.class.getName());
    
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        logger.info("GET /");

        EntityManagerFactory emf = (EntityManagerFactory) req.getServletContext().getAttribute("EMFactory");

Krok 1: Na stránce služby App Service:

  1. V nabídce vlevo vyberte protokoly služby App Service.
  2. V části Protokolování aplikace vyberte Systém souborů.
  3. V horní nabídce vyberte Uložit.

Krok 2: V nabídce vlevo vyberte Stream protokolu. Zobrazí se protokoly pro vaši aplikaci, včetně protokolů platformy a protokolů z kontejneru.

Přečtěte si další informace o protokolování v aplikacích v Javě v řadě o povolení OpenTelemetry služby Azure Monitor pro .NET, Node.js, Python a aplikace v Javě.

Máte problémy? Projděte si část Řešení potíží.

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

Po dokončení můžete odstranit všechny prostředky z předplatného Azure odstraněním skupiny prostředků.

Krok 1: Na panelu hledání v horní části webu Azure Portal:

  1. Zadejte název skupiny prostředků.
  2. Vyberte tuto skupinu prostředků.

Krok 2: Na stránce skupiny prostředků vyberte Odstranit skupinu prostředků.

Krok 3:

  1. Potvrďte odstranění zadáním názvu skupiny prostředků.
  2. Vyberte Odstranit.
  3. Potvrďte akci Odstranit znovu.

2. Vytvoření prostředků Azure a nasazení ukázkové aplikace

V tomto kroku vytvoříte prostředky Azure a nasadíte ukázkovou aplikaci do App Service v Linuxu. Kroky použité v tomto kurzu vytvoří sadu prostředků zabezpečení ve výchozím nastavení, které zahrnují App Service a Azure Database for MySQL.

Vývojový kontejner už má Azure Developer CLI (AZD).

  1. Z kořenového adresáře úložiště spusťte příkaz azd init.

    azd init --template tomcat-app-service-mysql-infra .
    
  2. Po zobrazení výzvy zadejte následující odpovědi:

    Otázka Odpověď
    Aktuální adresář není prázdný. Chcete zde inicializovat projekt v adresáři '<your-directory>'? Y
    Co chcete s těmito soubory dělat? Zachovat stávající soubory beze změny
    Zadejte nový název prostředí. Zadejte jedinečný název. Šablona AZD používá tento název jako součást názvu DNS vaší webové aplikace v Azure (<app-name>-<hash>.azurewebsites.net). Jsou povoleny alfanumerické znaky a spojovníky.
  3. Přihlaste se do Azure spuštěním příkazu azd auth login a postupujte podle zobrazených pokynů:

    azd auth login
    
  4. Vytvořte potřebné prostředky Azure a pomocí příkazu nasaďte kód azd up aplikace. Podle pokynů vyberte požadované předplatné a umístění prostředků Azure.

    azd up
    

    Dokončení azd up příkazu trvá přibližně 10 minut. Kód aplikace se také zkompiluje a nasadí, ale později kód upravíte tak, aby fungoval se službou App Service. Když je spuštěný, příkaz poskytuje zprávy o procesu zřizování a nasazení, včetně odkazu na nasazení v Azure. Po dokončení zobrazí příkaz také odkaz na aplikaci pro nasazení.

    Tato šablona AZD obsahuje soubory (azure.yaml a adresář infrastruktury ), které ve výchozím nastavení generují zabezpečenou architekturu s následujícími prostředky Azure:

    • Skupina prostředků: Kontejner pro všechny vytvořené prostředky.
    • Plán služby App Service: Definuje výpočetní prostředky pro Službu App Service. Vytvoří se plán Linuxu na úrovni B1 .
    • App Service: Představuje vaši aplikaci a spouští se v plánu služby App Service.
    • Virtuální síť: Integrovaná s aplikací App Service a izoluje provoz back-endové sítě.
    • Flexibilní server Azure Database for MySQL: Přístupný pouze z virtuální sítě prostřednictvím integrace zóny DNS. Na serveru pro vás bude vytvořena databáze.
    • Azure Managed Redis: Přístupné jenom z virtuální sítě.
    • Privátní koncové body: Přístupové koncové body pro trezor klíčů a spravovanou instanci Redis ve virtuální síti.
    • Privátní zóny DNS: Povolte překlad názvů DNS pro Key Vault, databázový server a instanci Managed Redis ve virtuální síti.
    • Pracovní prostor Služby Log Analytics: Slouží jako cílový kontejner vaší aplikace k odeslání protokolů, kde můžete také dotazovat protokoly.
    • Trezor klíčů: Slouží k zachování hesla databáze stejně při opětovném nasazení pomocí AZD.

    Jakmile příkaz dokončí vytváření prostředků a nasazení kódu aplikace poprvé, nasazená ukázková aplikace ještě nefunguje, protože musíte provést malé změny, abyste se mohli připojit k databázi v Azure.

Máte problémy? Projděte si část Řešení potíží.

3. Ověřte připojovací řetězce

Šablona AZD, kterou používáte, vygenerovala proměnné připojení pro vás jako nastavení aplikace a vypisuje je do terminálu pro vaše pohodlí. Nastavení aplikace je jedním ze způsobů, jak udržovat tajné kódy připojení mimo úložiště kódu.

  1. Ve výstupu AZD vyhledejte nastavení AZURE_MYSQL_CONNECTIONSTRINGaplikace . Zobrazí se jenom názvy nastavení. Ve výstupu AZD vypadají takto:

     App Service app has the following connection strings:
             - AZURE_MYSQL_CONNECTIONSTRING
             - AZURE_REDIS_CONNECTIONSTRING
             - AZURE_KEYVAULT_RESOURCEENDPOINT
             - AZURE_KEYVAULT_SCOPE
     

    AZURE_MYSQL_CONNECTIONSTRINGobsahuje připojovací řetězec do databáze MySQL v Azure. Později ho budete muset použít ve svém kódu.

  2. Šablona AZD vám pro usnadnění práci ukáže přímý odkaz na stránku nastavení aplikace. Najděte odkaz a otevřete ho na nové kartě prohlížeče.

    Pokud přidáte nastavení aplikace, které obsahuje platný připojovací řetězec Oracle, SQL Server, PostgreSQL nebo MySQL, služba App Service ho přidá jako zdroj dat JNDI (Java Naming and Directory Interface) do souboru context.xml serveru Tomcat.

Máte problémy? Projděte si část Řešení potíží.

4. Potvrďte zdroj dat JNDI.

V tomto kroku použijete připojení SSH ke kontejneru aplikace k ověření zdroje dat JNDI na serveru Tomcat. V procesu se dozvíte, jak získat přístup k prostředí SSH pro kontejner Tomcat.

  1. Ve výstupu AZD vyhledejte adresu URL relace SSH a přejděte na ni v prohlížeči. Ve výstupu to vypadá takto:

     Open SSH session to App Service container at: <URL>
     
  2. V terminálu SSH spusťte cat /usr/local/tomcat/conf/context.xmlpříkaz . Měli byste vidět, že byl přidán prostředek JNDI s názvem jdbc/AZURE_MYSQL_CONNECTIONSTRING_DS. Tento zdroj dat použijete později. App Service automaticky vytvoří tento zdroj dat, protože šablona AZD nastaví nastavení WEBSITE_AUTOCONFIGURE_DATABASE aplikace na true.

    Snímek obrazovky znázorňující příkazy pro spuštění v prostředí SSH a jejich výstup

Poznámka:

Kromě restartování aplikace se můžou zachovat jenom změny v /home souborech. Pokud například upravíte /usr/local/tomcat/conf/server.xml, změny se nezachovají i po restartování aplikace.

Máte problémy? Projděte si část Řešení potíží.

5. Úprava vzorového kódu a opětovné nasazení

  1. V prostředí GitHub Codespace spusťte novou chatovací relaci kliknutím na zobrazení Chat a poté na +.

  2. Zeptejte se na @workspace Jak se aplikace připojuje k databázi? Copilot vám může poskytnout vysvětlení o zdroji jdbc/MYSQLDS dat a jeho konfiguraci.

  3. Zeptejte se, "@workspace chci nahradit zdroj dat definovaný v persistence.xml existujícím zdrojem dat JNDI v Tomcat, ale chci to udělat dynamicky." Copilot vám může dát návrh kódu podobný tomu, který je v možnosti 2: bez níže uvedených kroků GitHub Copilotu a dokonce vám řekněte, abyste udělali změnu ve třídě ContextListener .

  4. Otevřete soubor src/main/java/com/microsoft/azure/appservice/examples/tomcatmysql/ContextListener.java v Průzkumníkovi a přidejte do contextInitialized metody návrh kódu.

    GitHub Copilot vám pokaždé nedává stejnou odpověď, možná budete muset položit další otázky, abyste mohli doladit odpověď. Tipy najdete v tématu Co můžu dělat s GitHub Copilotem v kódu?.

  5. V terminálu codespace spusťte azd deploypříkaz .

    azd deploy
    

Návod

Můžete také prostě vždy použít azd up, které zahrnuje azd package, azd provision a azd deploy.

Pokud chcete zjistit, jak je soubor War zabalený, můžete spustit azd package --debug samostatně.

Máte problémy? Projděte si část Řešení potíží.

6. Přejděte do aplikace.

  1. Ve výstupu AZD najděte adresu URL aplikace a přejděte na ni v prohlížeči. Adresa URL vypadá takto ve výstupu AZD:

     Deploying services (azd deploy)
    
       (✓) Done: Deploying service web
       - Endpoint: <URL>
     
  2. Přidejte do seznamu několik úkolů.

    Snímek obrazovky webové aplikace Tomcat se spuštěnou službou MySQL v Azure zobrazující úlohy

    Blahopřejeme, spouštíte webovou aplikaci ve službě Aplikace Azure Service se zabezpečeným připojením ke službě Azure Database for MySQL.

Máte problémy? Projděte si část Řešení potíží.

7. Streamování diagnostických protokolů

Aplikace Azure Služba může zaznamenávat protokoly konzoly, které vám pomůžou diagnostikovat problémy s aplikací. Pro usnadnění přístupu už šablona AZD povolila protokolování do místního systému souborů a odesílá protokoly do pracovního prostoru služby Log Analytics.

Ukázková aplikace obsahuje standardní příkazy protokolování Log4j, které demonstrují tuto funkci, jak je znázorněno v následujícím fragmentu kódu:

@WebServlet(urlPatterns = "/")
public class ViewServlet extends HttpServlet {
    private static Logger logger = LogManager.getLogger(ViewServlet.class.getName());
    
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        logger.info("GET /");

        EntityManagerFactory emf = (EntityManagerFactory) req.getServletContext().getAttribute("EMFactory");

Ve výstupu AZD vyhledejte odkaz na streamování protokolů služby App Service a přejděte na něj v prohlížeči. Odkaz vypadá takto ve výstupu AZD:

Stream App Service logs at: <URL>

Přečtěte si další informace o protokolování v aplikacích v Javě v řadě o povolení OpenTelemetry služby Azure Monitor pro .NET, Node.js, Python a aplikace v Javě.

Máte problémy? Projděte si část Řešení potíží.

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

Pokud chcete odstranit všechny prostředky Azure v aktuálním prostředí nasazení, spusťte azd down a postupujte podle pokynů.

azd down

Řešení problému

Zobrazuje se mi mnoho varování, že třída <Class> byla skenována z více umístění, při mvn jetty:run

Upozornění můžete ignorovat. Plugin Maven Jetty zobrazuje varování, protože pom.xml aplikace obsahuje závislost pro jakarta.servlet.jsp.jstl, kterou Jetty už poskytuje ve standardní instalaci. Potřebujete závislost pro server Tomcat.

V zobrazení nasazení na portálu pro službu Azure Database for MySQL – flexibilní server se zobrazuje stav Konflikt.

V závislosti na vybraném předplatném a oblasti se může zobrazit stav nasazení flexibilního serveru ConflictAzure Database for MySQL s následující zprávou v podrobnostech o operaci:

InternalServerError: An unexpected error occurred while processing the request.

Tato chyba je pravděpodobně způsobena omezením předplatného pro oblast, kterou vyberete. Zkuste pro nasazení zvolit jinou oblast.

Nasazená ukázková aplikace nezobrazuje aplikaci Seznam úkolů.

Pokud se místo aplikace se seznamem úkolů zobrazí stránka Hey, Java developers!, App Service s největší pravděpodobností stále načítá aktualizovaný kontejner z vašeho posledního nasazení kódu. Počkejte několik minut a aktualizujte stránku.

V nasazené ukázkové aplikaci se zobrazuje chyba 404 Stránka nenalezena

Ujistěte se, že jste provedli změny kódu pro použití java:comp/env/jdbc/AZURE_MYSQL_CONNECTIONSTRING_DS zdroje dat. Pokud jste provedli změny a znovu nasadili kód, app Service pravděpodobně stále načítá aktualizovaný kontejner. Počkejte několik minut a aktualizujte stránku.

Nejčastější dotazy

Kolik stojí toto nastavení?

Ceny vytvořených prostředků jsou následující:

  • Plán služby App Service se vytvoří na úrovni Basic a dá se vertikálně navýšit nebo snížit. Podívejte se na ceny služby App Service.
  • Flexibilní server MySQL se vytvoří ve vrstvě B1ms a lze škálovat nahoru nebo dolů. S bezplatným účtem Azure je úroveň B1ms bezplatná po dobu 12 měsíců až do měsíčních limitů. Podívejte se na ceny služby Azure Database for MySQL.
  • Spravovaná instance Redis Azure se vytvoří ve vrstvě Vyvážené B0 s minimální velikostí mezipaměti. K této úrovni jsou spojené malé náklady. Kapacitu můžete vertikálně navýšit na vyšší úroveň výkonu pro vyšší dostupnost, clustering a další funkce. Viz ceny Azure Managed Redis.
  • Za virtuální síť se neplatí, pokud nenakonfigurujete dodatečné funkce, jako je peering. Podívejte se na ceny služby Azure Virtual Network.
  • Za privátní zónu DNS se účtují malé poplatky. Podívejte se na ceny Azure DNS.

Jak se připojím k serveru MySQL, který je za virtuální sítí, pomocí jiných nástrojů?

  • Kontejner Tomcat v současné době také nemá terminál mysql-client. Pokud chcete, musíte ho nainstalovat ručně. Mějte na paměti, že všechno, co instalujete, se během restartování aplikace nezachová.
  • Pokud se chcete připojit z desktopového nástroje, jako je MySQL Workbench, musí být váš počítač ve virtuální síti. Může to být například virtuální počítač Azure v jedné z podsítí nebo počítač v místní síti, který má připojení VPN typu site-to-site s virtuální sítí Azure.
  • Azure Cloud Shell můžete také integrovat s virtuální sítí.

Jak místní vývoj aplikací funguje s GitHub Actions?

Na příkladu automaticky vygenerovaného souboru pracovního postupu ze služby App Service každý prvek git push spustí nové sestavení a nasazení. Z místního klonu úložiště GitHub provedete požadované aktualizace a nasdílíte je na GitHub. Příklad:

git add .
git commit -m "<some-message>"
git push origin main

Nemám oprávnění vytvořit uživatelem přiřazenou identitu

Podívejte se na Nastavení nasazení GitHub Actions z Centra nasazení.

Co můžu dělat s GitHub Copilotem v kódu?

Možná jste si všimli, že panel chatu GitHub Copilot už tam byl, když jste vytvořili codespace. Pro usnadnění práce zahrneme rozšíření chatu GitHub Copilot do definice kontejneru (viz .devcontainer/devcontainer.json). Potřebujete ale účet GitHub Copilot (k dispozici je 30denní bezplatná zkušební verze).

Několik tipů pro vás při komunikaci s GitHub Copilotem:

  • V rámci jedné chatové relace na sebe otázky a odpovědi navazují a své otázky můžete upravovat tak, abyste získali co nejpřesnější odpověď.
  • GitHub Copilot ve výchozím nastavení nemá přístup k žádnému souboru ve vašem úložišti. Pokud chcete položit otázky k souboru, otevřete ho nejprve v editoru.
  • Pokud chcete, aby GitHub Copilot měl při přípravě odpovědí přístup ke všem souborům v úložišti, začněte svou otázkou @workspace. Další informace najdete na webu Use the @workspace agent.
  • V chatové relaci může GitHub Copilot navrhovat změny a (s @workspace) dokonce i tam, kde se mají změny provádět, ale změny za vás nesmí provádět. Je na vás přidat navrhované změny a otestovat je.

Tady je několik dalších věcí, které můžete říct k vyladění odpovědi, kterou získáte:

  • Změňte tento kód tak, aby používal zdroj dat jdbc/AZURE_MYSQL_CONNECTIONSTRING_DS.
  • Některé importy ve vašem kódu používají javax, ale mám aplikaci Jakarta.
  • Chci, aby se tento kód spustil pouze v případě, že je nastavena proměnná prostředí AZURE_MYSQL_CONNECTIONSTRING.
  • Chci, aby tento kód běžel jenom ve službě Aplikace Azure a ne místně.

Další kroky

Další informace o spouštění aplikací v Javě ve službě App Service najdete v příručce pro vývojáře.

Zjistěte, jak zabezpečit aplikaci pomocí vlastní domény a certifikátu.