Sdílet prostřednictvím


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

V tomto kurzu se dozvíte, jak sestavit, nakonfigurovat a nasadit zabezpečenou aplikaci JBoss ve službě Aplikace Azure Service, která se připojuje k databázi MySQL (pomocí Azure Database for MySQL). Azure App Service je vysoce škálovatelná, samoopravující webhostingová služba, která umožňuje snadné nasazení aplikací na Windows nebo Linux. Až budete hotovi, budete mít aplikaci JBoss spuštěnou ve službě Aplikace Azure Service v Linuxu.

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

V tomto kurzu se naučíte:

  • Vytvořte architekturu s výchozím zabezpečením pro Azure App Service a Azure Database for MySQL Flexible Server.
  • Zabezpečte připojení k databázi pomocí připojovacího řetězce bez hesla.
  • Pomocí rozhraní příkazového řádku JBoss ověřte zdroje dat JBoss ve službě App Service.
  • Nasaďte ukázkovou aplikaci JBoss 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

  • Účet Azure s aktivním předplatným. Pokud účet Azure nemáte, můžete si ho zdarma vytvořit.
  • Účet GitHub. můžete si jeden získat zdarma.
  • Znalost Javy s vývojem JBoss
  • (Volitelné) Abyste mohli vyzkoušet GitHub Copilot, potřebujete účet GitHub Copilot. K dispozici je 30denní bezplatná zkušební verze.
  • Účet Azure s aktivním předplatným. Pokud účet Azure nemáte, můžete si ho zdarma vytvořit.
  • Nainstalované rozhraní příkazového řádku pro vývojáře Azure Pomocí Azure Cloud Shellu můžete postupovat podle kroků, protože už má nainstalované rozhraní příkazového řádku Azure Developer CLI.
  • Znalost Javy s vývojem JBoss
  • (Volitelné) Abyste mohli vyzkoušet GitHub Copilot, potřebujete účet GitHub Copilot. K dispozici je 30denní bezplatná zkušební verze.

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-jboss-mysql-sample-app
cd msdocs-jboss-mysql-sample-app
azd init --template msdocs-jboss-mysql-sample-app
azd up

1. Spusťte 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 GitHub Codespaces, 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-jboss-mysql-sample-app/fork.
  3. Zrušte výběr možnosti Kopírovat pouze hlavní větev. Chcete všechny větve.
  4. Vyberte Vytvořit fork.

Krok 2: V rozvětvení na GitHubu:

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

Krok 3: V terminálu codespace:

  1. Spusťte mvn clean wildfly:run.
  2. Když se zobrazí oznámení Your application running on port 8080 is available., počkejte několik sekund, než server WildFly dokončí načítání aplikace. Pak 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 WildFly, zadejte Ctrl+C.

Návod

Můžete se zeptat GitHub Copilot na toto úložiště. 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 pro vaši aplikaci.
  • Oblast, ve které se má aplikace fyzicky provozovat na určitém místě. Používá se také jako součást názvu DNS pro vaši aplikaci.
  • Zásobník modulu runtime 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 do Azure portálu a podle těchto kroků vytvořte prostředky služby Azure App Service.

Krok 1: Na webu Azure Portal:

  1. Na horním panelu hledání zadejte app service.
  2. Vyberte položku s popiskem App Service pod nadpisem Služby .
  3. Vyberte Vytvořit>webovou aplikaci. Můžete také přejít přímo do průvodce vytvořením.

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

  1. Název: msdocs-jboss-mysql. Skupina prostředků s názvem msdocs-jboss-mysql_group bude pro vás vygenerována.
  2. Zásobník modulu runtime: Java 17.
  3. Stack webového serveru Java: Red Hat JBoss EAP 8.
  4. Operační systém: Linux.
  5. Oblast: Libovolná oblast Azure, která je blízko vás.
  6. Plán Pro Linux: Vytvořte nový a použijte název msdocs-jboss-mysql.
  7. Cenový plán: Premium V3 P0V3. Až budete připraveni, můžete vertikálně navýšit kapacitu na jinou cenovou úroveň.

Krok 3:

  1. Vyberte kartu Databáze .
  2. Vyberte Vytvořit databázi.
  3. V Engin vyberte MySQL - Flexibilní server.

Krok 4:

  1. Vyberte kartu Nasazení .
  2. Povolte průběžné nasazování.
  3. V organizaci vyberte alias GitHubu.
  4. V úložišti vyberte msdocs-jboss-mysql-sample-app.
  5. Ve větvi zvolte starter-no-infra.
  6. Ujistěte se, že je zakázáno základní ověřování.
  7. Vyberte Zkontrolovat a vytvořit.
  8. Po dokončení ověření vyberte Vytvořit.

Krok 5: Dokončení nasazení trvá několik minut. Po dokončení nasazení klikněte na tlačítko Přejít k prostředku. Přejdete přímo do aplikace App Service, přičemž se vytvoří 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í DNS zóny: Povolte řešení DNS databázového serveru ve virtuální síti.
  • Privátní koncové body: Koncové body přístupu pro databázový server ve virtuální síti.

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

3. Vytvoření připojení bez hesla

V tomto kroku vygenerujete připojení služby založené na spravované identitě, které můžete později použít k vytvoření zdroje dat na serveru JBoss. Použitím spravované identity pro připojení k databázi MySQL je váš kód bezpečný před náhodným únikem tajných kódů.

Krok 1: Vytvoření spravované identity

  1. Na horním panelu hledání zadejte spravovanou identitu.
  2. Vyberte položku s popiskem Spravované identity pod nadpisem Služby .
  3. Vyberte Vytvořit.
  4. Ve skupině prostředků vyberte msdocs-jboss-mysql_group.
  5. V oblasti vyberte stejnou oblast, kterou jste použili pro webovou aplikaci.
  6. Do pole Název zadejte msdocs-jboss-mysql-server-identity.
  7. Vyberte Zkontrolovat a vytvořit.
  8. Vyberte Vytvořit.

Krok 2: Povolení ověřování Microsoft Entra na serveru MySQL

  1. Do horního panelu hledání zadejte msdocs-jboss-mysql-server.
  2. Vyberte prostředek flexibilního serveru Azure Database for MySQL s názvem msdocs-jboss-mysql-server.
  3. V nabídce vlevo vyberte Ověřování zabezpečením>.
  4. V Přiřadit přístup vyberte pouze ověřování Microsoft Entra.
  5. Ve uživatelsky přiřazené spravované identitě vyberte Vybrat.
  6. Vyberte msdocs-jboss-mysql-server-identity a pak vyberte Přidat. Přiřazení identity k serveru MySQL chvíli trvá.
  7. V Microsoft Entra Admin Name vyberte Vybrat.
  8. Vyhledejte svůj účet Azure a vyberte ho a pak vyberte Vybrat.
  9. Vyberte Uložit a počkejte na dokončení operace.

Krok 3: Přidání konektoru služby založeného na spravované identitě

  1. Do horního panelu hledání zadejte msdocs-jboss-mysql.
  2. Vyberte prostředek služby App Service s názvem msdocs-jboss-mysql.
  3. Na stránce služby App Service v nabídce vlevo vyberte > služby Nastavení.
  4. Vyberte Vytvořit.
  5. V záložce Základy:
  6. Nastavte typ služby na DB for MySQL flexible server.
  7. Nastavte MySQL flexibilní server na msdocs-jboss-mysql-server.
  8. Nastavte databázi MySQL na databázi msdocs-jboss-mysql.
  9. Nastavte typ klienta na Javu.
  10. Vyberte kartu Ověřování.
  11. Vyberte spravovanou identitu přiřazenou systémem.
  12. Vyberte kartu Zkontrolovat + Vytvořit.
  13. Po dokončení ověření vyberte Vytvořit v Cloud Shellu a počkejte na dokončení operace v Cloud Shellu.
  14. Až uvidíte výstupní JSON, můžete Cloud Shell zavřít. Zavřete také dialogové okno Vytvořit připojení.
  15. Výběrem možnosti Aktualizovat zobrazíte nový konektor služby.

Krok 4: Přidejte autentizační plug-iny do připojovacího řetězce.

  1. V nabídce vlevo vyberte Proměnné prostředí.
  2. Vyberte AZURE_MYSQL_CONNECTIONSTRING. Pole Hodnota by mělo obsahovat hodnotu user , ale ne password. Uživatel je spravovaná identita.
  3. Server JBoss v aplikaci App Service má ověřovací moduly plug-inů, které ověřují spravovanou identitu, ale přesto ho musíte přidat do připojovacího řetězce. Posuňte se na konec hodnoty a připojte &defaultAuthenticationPlugin=com.azure.identity.extensions.jdbc.mysql.AzureMysqlAuthenticationPlugin&authenticationPlugins=com.azure.identity.extensions.jdbc.mysql.AzureMysqlAuthenticationPlugin.
  4. Vyberte Použít.
  5. Vyberte Použít a pak Potvrďte.

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

4. Potvrďte zdroj dat JNDI.

Pokud přidáte nastavení aplikace, které obsahuje platný připojovací řetězec JDBC pro Oracle, SQL Server, PostgreSQL nebo MySQL, App Service pro něj přidá zdroj dat Java Naming and Directory Interface (JNDI) na serveru JBoss. V tomto kroku použijete připojení SSH ke kontejneru aplikace k ověření zdroje dat JNDI. V procesu se dozvíte, jak získat přístup k prostředí SSH a spustit rozhraní příkazového řádku JBoss.

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

  1. V nabídce vlevo vyberte > pro vývojové nástroje.
  2. Vyberte Spustit.

Krok 2: V terminálu SSH:

  1. Spusťte $JBOSS_HOME/bin/jboss-cli.sh --connect.
  2. V JBoss CLI připojení spusťte ls subsystem=datasources/data-source. Měl by se zobrazit automaticky vygenerovaný zdroj dat.AZURE_MYSQL_CONNECTIONSTRING_DS
  3. Získejte název JNDI zdroje dat pomocí /subsystem=datasources/data-source=AZURE_MYSQL_CONNECTIONSTRING_DS:read-attribute(name=jndi-name). Teď máte název java:jboss/env/jdbc/AZURE_MYSQL_CONNECTIONSTRING_DSJNDI, který můžete použít v kódu aplikace později.

Poznámka:

Kromě restartování aplikace se můžou zachovat jenom změny v /home souborech. Pokud například upravíte /opt/eap/standalone/configuration/standalone.xml nebo změníte konfiguraci serveru v rozhraní příkazového řádku JBoss, změny se nezachovají i po restartování aplikace. Pokud chcete zachovat změny, použijte spouštěcí skript, jako je příklad konfigurace zdrojů dat pro aplikaci Tomcat, JBoss nebo Java SE ve službě Aplikace Azure Service.

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 do vašeho GitHub repozitáře akci sestavení a nasazení.

Podobně jako konvence JBoss pojmenujte vytvořený artefakt ROOT.war, pokud chcete nasadit do kořenového kontextu JBoss.

Krok 1: 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. Můžete ho upravit podle svých potřeb na adrese .github/workflows/starter-no-infra_msdocs-jboss-mysql.yml.

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

  1. Zahajte novou relaci chatu kliknutím na Chat a poté 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 java:jboss/MySQLDS dat a jeho konfiguraci.
  3. Řekněme: "Zdroj dat v JBoss v Azure používá název JNDI java:jboss/env/jdbc/AZURE_MYSQL_CONNECTIONSTRING_DS." Copilot vám může poskytnout návrh kódu podobný té v možnosti 2: bez níže uvedených kroků GitHub Copilotu a dokonce vám řekne, abyste udělali změnu ve třídě. 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 2 (možnost 2: bez GitHub Copilotu):

  1. Otevřete soubor src/main/resources/META-INF/persistence.xml v průzkumníkovi. Při spuštění aplikace načte nastavení databáze v tomto souboru.
  2. Změňte hodnotu <jta-data-source> z java:jboss/MySQLDS na java:jboss/env/jdbc/AZURE_MYSQL_CONNECTIONSTRING_DS, což je zdroj dat, který jste našli pomocí JBoss CLI dříve v shellu SSH.

Krok 3:

  1. Vyberte rozšíření správy zdrojů.
  2. Do textového pole zadejte zprávu potvrzení, například Configure Azure JNDI name.
  3. Vyberte Potvrdit a potvrďte akci ano.
  4. Vyberte Synchronizovat změny 1 a potvrďte OK.

Krok 4: Zpět na stránce správy služby App Service na webu Azure Portal:

  1. V nabídce vlevo vyberteDeployment Center (Deployment Center>

  2. Vyberte Protokoly. Již bylo spuštěno nové nasazení z vašich potvrzených změn.

  3. V položce protokolu pro spuštění nasazení vyberte položku Sestavit/Nasadit protokoly s nejnovějším časovým razítkem.

Krok 5: 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. Ve výchozí doméně vyberte adresu URL vaší 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 zachycuje všechny zprávy do konzole, aby vám pomohla diagnostikovat problémy s 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:

private static final Logger logger = Logger.getLogger(MethodHandles.lookup().lookupClass().getName());

@PersistenceContext
private EntityManager entityManager;

public List<Task> getAllTasks() {
    logger.log(Level.INFO, "Finding all tasks. ");

    return this.entityManager.createNamedQuery("findAllTasks", Task.class).getResultList();
}

Na stránce služby App Service v nabídce vlevo vybertestream 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 Java v sérii o povolení služby Azure Monitor OpenTelemetry pro .NET, Node.js, Python a Java aplikacích.

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ů msdocs-jboss-mysql_group.
  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. V kořenovém adresáři úložiště spusťte azd initpříkaz .

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

    Otázka Odpověď
    Chcete pokračovat v inicializaci aplikace v '<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 k Azure spuštěním příkazu azd auth login a následováním 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ě 15 minut (mezipaměť Redis trvá nejvíce času). 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ě. Na serveru se vytvoří databáze.
    • Azure Cache for Redis: Přístupná pouze z virtuální sítě.
    • Privátní koncové body: Přístupové body pro trezor klíčů a mezipaměť Redis ve virtuální síti.
    • Privátní DNS zón: Povolte překlad DNS trezoru klíčů, databázového serveru a mezipaměti Redis ve virtuální síti.
    • Pracovní prostor Log Analytics: Slouží jako cílový kontejner vaší aplikace pro odesílání protokolů, kde můžete také provádět dotazy na 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 již jako nastavení aplikace a vypíše 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 app settings:
             - AZURE_KEYVAULT_RESOURCEENDPOINT
             - AZURE_KEYVAULT_SCOPE
             - AZURE_MYSQL_CONNECTIONSTRING
             - AZURE_REDIS_CONNECTIONSTRING
     

    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 JBoss.

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 JBoss. V procesu se dozvíte, jak získat přístup k prostředí SSH pro kontejner JBoss.

  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 $JBOSS_HOME/bin/jboss-cli.sh --connectpříkaz .

  3. V JBoss CLI připojení spusťte ls subsystem=datasources/data-source. Měl by se zobrazit automaticky vygenerovaný zdroj dat.AZURE_MYSQL_CONNECTIONSTRING_DS

  4. Získejte název JNDI zdroje dat pomocí /subsystem=datasources/data-source=AZURE_MYSQL_CONNECTIONSTRING_DS:read-attribute(name=jndi-name). Teď máte název java:jboss/env/jdbc/AZURE_MYSQL_CONNECTIONSTRING_DSJNDI, který můžete použít v kódu aplikace později.

    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 /opt/eap/standalone/configuration/standalone.xml nebo změníte konfiguraci serveru v rozhraní příkazového řádku JBoss, změny se nezachovají i po restartování aplikace. Pokud chcete zachovat změny, použijte spouštěcí skript, jako je příklad konfigurace zdrojů dat pro aplikaci Tomcat, JBoss nebo Java SE ve službě Aplikace Azure Service.

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

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

  1. V pracovním prostoru GitHub spusťte novou chatovací relaci tak, že kliknete na zobrazení Chat a poté kliknete na +.

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

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

  4. Otevřete soubor src/main/resources/META-INF/persistence.xml v průzkumníkovi a proveďte navrženou změnu JNDI.

    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é vždy použít azd up, což dělá všechny 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 JBoss 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:

private static final Logger logger = Logger.getLogger(MethodHandles.lookup().lookupClass().getName());

@PersistenceContext
private EntityManager entityManager;

public List<Task> getAllTasks() {
    logger.log(Level.INFO, "Finding all tasks. ");

    return this.entityManager.createNamedQuery("findAllTasks", Task.class).getResultList();
}

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 Java v sérii o povolení služby Azure Monitor OpenTelemetry pro .NET, Node.js, Python a Java aplikacích.

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

V průvodci vytvořením se zobrazuje chyba "Nemáte nárok na používání funkce Přineste si vlastní licenci".

Pokud se zobrazí chyba: The subscription '701ea799-fb46-4407-bb67-9cbcf289f1c7' is not entitled to use the Bring Your Own License feature when creating the applicationZnamená to, že jste v zásobníku webového serveru Java vybrali licenci Red Hat JBoss EAP 7/8 BYO, ale nenastavili jste svůj účet Azure v Red Hat Cloud Accessu nebo nemáte aktivní licenci JBoss EAP v Red Hat Cloud Accessu.

Pohled na nasazení portálu pro Azure Database for MySQL Flexible Server ukazuje stav konfliktu.

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.

V dialogovém okně Vytvořit připojení se zobrazí tlačítko Vytvořit v Cloud Shellu, ale není povolené.

V dialogovém okně se také může zobrazit chybová zpráva: The database server is in Virtual Network and Cloud Shell can't connect to it. Please copy the commands and execute on an environment which can connect to the database server in Virtual Network.

Automatizace konektoru služby potřebuje síťový přístup k serveru MySQL. Podívejte se do nastavení sítě vašeho prostředku serveru MySQL a ujistěte se, že je vybraný minimálně veřejný přístup k tomuto prostředku přes internet pomocí veřejné IP adresy . Service Connector ho může odsud převzít.

Pokud toto políčko nevidíte, možná jste místo toho vytvořili nasazení pomocí průvodce webovou aplikací a databází a nasazení uzamkne veškerý přístup k veřejné síti k serveru MySQL. Neexistuje způsob, jak konfiguraci upravit. Vzhledem k tomu, že kontejner Linuxu aplikace má přístup k MySQL prostřednictvím integrace virtuální sítě, můžete nainstalovat Azure CLI v relaci SSH aplikace a spustit tam zadané příkazy Cloud Shellu.

Nasazená ukázková aplikace nezobrazuje aplikaci pro seznam úkolů.

Pokud se místo aplikace seznamu úkolů zobrazí úvodní stránka JBoss, App Service pravděpodobně stále načítá aktualizovaný kontejner z vašeho nejnovějšího nasazení kódu. Počkejte několik minut a aktualizujte stránku.

Aplikaci se nepovedlo spustit a zobrazuje se mi přístup odepřen pro uživatele... (pomocí hesla: NE) v protokolech.

Tato chyba je nejpravděpodobnější, protože jste do připojovacího řetězce nepřidali plugin pro bezheslové ověřování (viz ukázkový kód Java pro Integrate Azure Database for MySQL with Service Connector). Podle pokynů v 3 změňte připojovací řetězec MySQL. Vytvořte připojení bez hesla.

V diagnostických protokolech se zobrazuje chyba "Tabulka 'Task' již existuje".

Tuto chybu Hibernace můžete ignorovat, protože značí, že kód aplikace je připojený k databázi MySQL. Aplikace je nakonfigurovaná tak, aby při spuštění vytvořila potřebné tabulky (viz src/main/resources/META-INF/persistence.xml). Při prvním spuštění by se aplikace měla úspěšně vytvořit tabulky, ale při následných restartováních by se tato chyba zobrazila, protože tabulky již existují.

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 P0v3 a dá se vertikálně navýšit nebo snížit. Podívejte se na ceny služby App Service.
  • Flexibilní server MySQL se vytváří ve vrstvě D2ds a dá se škálovat nahoru nebo dolů. Podívejte se na ceny služby Azure Database for MySQL.
  • Azure Cache for Redis se vytvoří na úrovni Basic 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. Podívejte se na ceny služby Azure Cache for Redis.
  • Za virtuální síť se neúčtují poplatky, pokud nenakonfigurujete další funkce, jako je například propojení sítě. 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 za virtuální sítí pomocí jiných nástrojů?

V tomto návodu už má aplikace App Service síťové připojení k serveru MySQL a může se autentizovat pomocí systémově přiřazeného spravovaného identifikátoru Microsoft Entra. Ke službě MySQL se můžete připojit přímo z kontejneru aplikace spuštěním následujících příkazů v relaci SSH (získejte hodnoty <server>, <user>, a <database> z nastavení aplikace AZURE_MYSQL_CONNECTIONSTRING):

apt-get update
apt-get install curl less mysql-client jq -y
mysql -h <server> --user <user> --database <database> --enable-cleartext-plugin --password=`curl "${IDENTITY_ENDPOINT}?resource=https://ossrdbms-aad.database.windows.net&api-version=2019-08-01" -H "X-IDENTITY-HEADER: $IDENTITY_HEADER" -s | jq -r '.access_token'`

Několik důležitých informací:

  • Nástroje, které nainstalujete v relaci SSH, se při restartování aplikace neuchovávají.
  • Pokud jste postupovali podle kroků portálu a nakonfigurovali MySQL pomocí uživatele Microsoft Entra jako správce, můžete se k MySQL připojit pomocí uživatele Microsoft Entra.
  • 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, například virtuální počítač Azure nasazený do stejné virtuální sítě. Musíte také nakonfigurovat ověřování samostatně, a to buď se spravovanou identitou, nebo s uživatelem Microsoft Entra.
  • Pokud se chcete připojit z počítače v místní síti, která má připojení VPN typu site-to-site k virtuální síti Azure, nemůžete nakonfigurovat ověřování pomocí spravované identity, ale ověřování můžete nakonfigurovat pomocí uživatele Microsoft Entra.
  • Můžete také integrovat Azure Cloud Shell a připojit se pomocí Azure CLI nebo MySQL CLI. K ověření můžete nakonfigurovat uživatele Microsoft Entra.

Jak získat platný přístupový token pro připojení k MySQL pomocí ověřování Microsoft Entra?

Pro uživatele Microsoft Entra, spravovanou identitu přiřazenou systémem nebo spravovanou identitu přiřazenou uživatelem, která má oprávnění pro přístup k databázi MySQL, vám může Azure CLI pomoct vygenerovat přístupový token. V případě spravované identity musí být identita nakonfigurovaná na aplikaci služby App Service nebo na virtuálním počítači, na kterém spouštíte Azure CLI.

# Sign in as a Microsoft Entra user
az login
# Sign in as the system-assigned managed identity
az login --identity
# Sign in as a user-assigned managed identity
az login --identity --username <client-id-of-user-assigned-identity>

# Get an access token
az account get-access-token --resource-type oss-rdbms

Pokud chcete, můžete také použít příkaz az mysql flexible-server connect v Azure CLI k připojení k MySQL. Po zobrazení výzvy použijte přístupový token jako heslo.

az mysql flexible-server connect -n <server-name-only> -u <user> -d <database> --interactive

Další informace naleznete v tématu:

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

Pokaždé, když použijete automaticky vygenerovaný soubor pracovního postupu ze služby App Service jako příklad, spustí se nové sestavení a nasazení git push. 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 starter-no-infra

Nemám oprávnění k vytvoření uživatelsky přiřazené identity

Podívejte se na Nastavení nasazení GitHub Actions z Nasazovacího centra.

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

Můžete si všimnout, že chat GitHub Copilot už byl pro vás připraven, 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 otázky a odpovědi na sebe navazují a můžete upravit své otázky, aby lépe odpovídaly získané odpovědi.
  • 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.