Megosztás a következőn keresztül:


Oktatóanyag: JBoss-webalkalmazás létrehozása Azure-alkalmazás Szolgáltatással Linuxon és MySQL-en

Ez az oktatóanyag bemutatja, hogyan hozhat létre, konfigurálhat és helyezhet üzembe egy biztonságos JBoss-alkalmazást a Azure-alkalmazás Service-ben, amely egy MySQL-adatbázishoz csatlakozik (az Azure Database for MySQL használatával). Azure-alkalmazás szolgáltatás egy nagymértékben skálázható, önjavító, web hosting szolgáltatás, amely könnyen üzembe helyezhet alkalmazásokat Windowson vagy Linuxon. Amikor végzett, az Azure App Service on Linux szolgáltatáson fog futni egy JBoss-alkalmazás.

Feljegyzés

Az App Service-en futó JBoss EAP mostantól támogatja a "Saját licenc" (BYOL) számlázást, így a meglévő Red Hat-előfizetéssel rendelkező ügyfelek közvetlenül alkalmazhatják ezeket a licenceket az Azure App Service JBoss EAP-üzemelő példányaira. További információ.

Képernyőkép arról, hogy a JBoss-alkalmazás adatokat tárol a MySQL-ben.

Ebben az oktatóanyagban az alábbiakkal fog megismerkedni:

  • Hozzon létre egy biztonságos, alapértelmezett architektúrát Azure-alkalmazás Service-hez és rugalmas Azure Database for MySQL-kiszolgálóhoz.
  • Biztonságos adatbázis-kapcsolat jelszó nélküli kapcsolati sztring használatával.
  • JBoss-adatforrások ellenőrzése az App Service-ben A JBoss parancssori felület használatával.
  • JBoss-mintaalkalmazás üzembe helyezése az App Service-ben egy GitHub-adattárból.
  • Az App Service alkalmazásbeállításainak elérése az alkalmazáskódban.
  • Végezze el a frissítéseket, és telepítse újra az alkalmazáskódot.
  • Diagnosztikai naplók streamelése az App Service-ből.
  • Az alkalmazás kezelése az Azure Portalon.
  • Azonos architektúra kiépítése és üzembe helyezése az Azure Developer CLI használatával.
  • Optimalizálja a fejlesztési munkafolyamatot a GitHub Codespaces és a GitHub Copilot használatával.

Előfeltételek

  • Egy Azure-fiók, aktív előfizetéssel. Ha nem rendelkezik Azure-fiókkal, ingyenesen létrehozhat egyet.
  • Egy GitHub-fiók. ingyenesen is beszerezhet egyet.
  • Java-ismeretek JBoss-fejlesztéssel.
  • (Nem kötelező) A GitHub Copilot kipróbálásához egy GitHub Copilot-fiók. 30 napos ingyenes próbaverzió érhető el.
  • Egy Azure-fiók, aktív előfizetéssel. Ha nem rendelkezik Azure-fiókkal, ingyenesen létrehozhat egyet.
  • Az Azure Developer CLI telepítve van. Kövesse az Azure Cloud Shell lépéseit, mert már telepítve van az Azure Developer CLI.
  • Java-ismeretek JBoss-fejlesztéssel.
  • (Nem kötelező) A GitHub Copilot kipróbálásához egy GitHub Copilot-fiók. 30 napos ingyenes próbaverzió érhető el.

Ugrás a végére

Ebben az oktatóanyagban gyorsan üzembe helyezheti a mintaalkalmazást, és megtekintheti, hogy fut-e az Azure-ban. Futtassa a következő parancsokat az Azure Cloud Shellben, és kövesse a következő utasításokat:

mkdir msdocs-jboss-mysql-sample-app
cd msdocs-jboss-mysql-sample-app
azd init --template msdocs-jboss-mysql-sample-app
azd up

1. A minta futtatása

Először állítson be egy adatvezérelt mintaalkalmazást kiindulási pontként. Az Ön kényelme érdekében a mintaadattár tartalmaz egy fejlesztői tárolókonfigurációt. A fejlesztői tároló mindent tartalmaz, amire szüksége van egy alkalmazás fejlesztéséhez, beleértve az adatbázist, a gyorsítótárat és a mintaalkalmazás által igényelt összes környezeti változót. A fejlesztői tároló egy GitHub-kódtérben futtatható, ami azt jelenti, hogy a mintát bármely számítógépen futtathatja webböngészővel.

1. lépés: Új böngészőablakban:

  1. Jelentkezzen be a GitHub-fiókjába.
  2. Navigáljon a https://github.com/Azure-Samples/msdocs-jboss-mysql-sample-app/fork felé
  3. Törölje a jelölést a Csak a főág másolása opcióról. Az összes ágat szeretnéd.
  4. Válassza a Fork létrehozása lehetőséget.

2. lépés: A GitHub-elágazásban:

  1. Válassza a kezdő ág >starter-no-infra elemét. Ez az ág csak a mintaprojektet tartalmazza, és nincs Azure-nal kapcsolatos fájl vagy konfiguráció. Válassza a Kód>létrehozása kódteret a starter-no-infra rendszeren. A kódtér beállítása néhány percet vesz igénybe.

3. lépés: A kódtér termináljában:

  1. Futtassa az mvn clean wildfly:run parancsot.
  2. Amikor megjelenik az értesítés Your application running on port 8080 is available., várjon néhány másodpercet, amíg a WildFly-kiszolgáló befejezi az alkalmazás betöltését. Ezután válassza a Megnyitás böngészőben lehetőséget. A mintaalkalmazásnak egy új böngészőlapon kell megjelennie. A WildFly-kiszolgáló leállításához írja be a következőt Ctrl+C: .

Tipp.

Erről az adattárról a GitHub Copilotot is megkérdezheti. Példa:

  • @workspace Mit tesz ez a projekt?
  • @workspace Mit tesz a .devcontainer mappa?

Problémákat tapasztal? Tekintse meg a hibaelhárítási szakaszt.

2. Az App Service és a MySQL létrehozása

Először hozza létre az Azure-erőforrásokat. Az oktatóanyagban használt lépések az App Service-t és az Azure Database for MySQL-t tartalmazó, alapértelmezés szerint biztonságos erőforrások készletét hozzák létre. A létrehozási folyamathoz a következőket kell megadnia:

  • A webalkalmazás neve . Az alkalmazás DNS-nevének részeként használják.
  • A régió , amely fizikailag futtatja az alkalmazást a világon. Az alkalmazás DNS-nevének részeként is használják.
  • Az alkalmazás futtatókörnyezeti vereme . Itt választhatja ki az alkalmazáshoz használni kívánt Java-verziót.
  • Az alkalmazás üzemeltetési terve . Ez a tarifacsomag, amely tartalmazza az alkalmazás funkcióit és skálázási kapacitását.
  • Az alkalmazás erőforráscsoportja . Az erőforráscsoportokkal (logikai tárolóban) csoportosíthatja az alkalmazáshoz szükséges Összes Azure-erőforrást.

Jelentkezzen be az Azure Portalra, és kövesse az alábbi lépéseket a Azure-alkalmazás szolgáltatás erőforrásainak létrehozásához.

1. lépés: Az Azure Portalon:

  1. A felső keresősávba írja be az App Service-t.
  2. Válassza ki az App Service címkével ellátott elemet a Szolgáltatások fejléc alatt.
  3. Válassza a Webalkalmazás létrehozása lehetőséget>. A létrehozási varázslót közvetlenül is megnyithatja.

2. lépés: A Webalkalmazás létrehozása lapon töltse ki az űrlapot az alábbiak szerint.

  1. Név: msdocs-jboss-mysql. Létrejön egy msdocs-jboss-mysql_group nevű erőforráscsoport.
  2. Futtatókörnyezeti verem: Java 17.
  3. Java webszerver stack: Red Hat JBoss EAP 8.
  4. Operációs rendszer: Linux.
  5. Régió: Bármely Önhöz közeli Azure-régió.
  6. Linux-csomag: Hozzon létre újat, és használja az msdocs-jboss-mysql nevet.
  7. Tarifacsomag: Prémium V3 P0V3. Ha készen áll, áttérhet egy másik tarifacsomagra.

3. lépés:

  1. Válassza az Adatbázis lapot.
  2. Válassza az Adatbázis létrehozása lehetőséget.
  3. A Motorban válassza a Rugalmas MySQL-kiszolgáló lehetőséget.

4. lépés:

  1. Válassza az Üzembe helyezés lapot.
  2. Folyamatos üzembe helyezés engedélyezése.
  3. A Szervezetben válassza ki a GitHub-aliast.
  4. Az Adattárban válassza az msdocs-jboss-mysql-sample-app lehetőséget.
  5. Az Branch-ban válassza ki a starter-no-infra-t.
  6. Győződjön meg arról, hogy az alapszintű hitelesítés le van tiltva.
  7. Válassza az Áttekintés + létrehozás lehetőséget.
  8. Az ellenőrzés befejezése után válassza a Létrehozás gombot.

5. lépés: Az üzembe helyezés végrehajtása néhány percet vesz igénybe. Az üzembe helyezés befejeződése után válassza az Erőforrás megnyitása gombot. Közvetlenül az App Service-alkalmazásba kerül, de a következő erőforrások jönnek létre:

  • Erőforráscsoport: Az összes létrehozott erőforrás tárolója.
  • App Service-csomag: Meghatározza az App Service számítási erőforrásait. Létrehozásra kerül egy Linux-csomag a Basic szolgáltatási csomagban.
  • App Service: Az alkalmazást jelöli, és az App Service-csomagban fut.
  • Virtuális hálózat: Integrálva az App Service alkalmazással, és elkülöníti a háttérhálózat forgalmát.
  • Azure Database for MySQL Rugalmas Kiszolgáló: Csak a virtuális hálózatról érhető el. A rendszer létrehoz egy adatbázist és egy felhasználót a kiszolgálón.
  • saját DNS zónák: Az adatbázis-kiszolgáló DNS-feloldásának engedélyezése a virtuális hálózaton.
  • Privát végpontok: Hozzáférési végpontok a virtuális hálózaton lévő adatbázis-kiszolgálóhoz.

Problémákat tapasztal? Tekintse meg a hibaelhárítási szakaszt.

3. Jelszó nélküli kapcsolat létrehozása

Ebben a lépésben létrehoz egy felügyelt identitásalapú szolgáltatáskapcsolatot, amellyel később adatforrást hozhat létre a JBoss-kiszolgálón. Ha felügyelt identitást használ a MySQL-adatbázishoz való csatlakozáshoz, a kód biztonságos a titkos kódok véletlen kiszivárgása esetén.

1. lépés: Felügyelt identitás létrehozása.

  1. A felső keresősávba írja be a felügyelt identitást.
  2. Válassza ki a Felügyelt identitások címkével ellátott elemet a Szolgáltatások fejléc alatt.
  3. Válassza a Létrehozás lehetőséget.
  4. Az Erőforrás csoportban válassza az msdocs-jboss-mysql_group lehetőséget.
  5. A Régió területen válassza ki ugyanazt a régiót, amelyet a webalkalmazáshoz használt.
  6. Írja be a Neve mezőbe: msdocs-jboss-mysql-server-identity.
  7. Válassza az Áttekintés + létrehozás lehetőséget.
  8. Válassza a Létrehozás lehetőséget.

2. lépés: A Microsoft Entra-hitelesítés engedélyezése a MySQL-kiszolgálón.

  1. A felső keresősávba írja be az msdocs-jboss-mysql-server parancsot.
  2. Válassza ki a rugalmas Azure Database for MySQL-kiszolgálói erőforrást msdocs-jboss-mysql-server néven.
  3. A bal oldali menüben válassza a Biztonsági
  4. A Hozzáférés hozzárendelése területen válassza csak a Microsoft Entra-hitelesítést.
  5. A felhasználó által hozzárendelt felügyelt identitásban válassza a Kiválasztás lehetőséget.
  6. Válassza az msdocs-jboss-mysql-server-identity, majd a Hozzáadás-t. Egy ideig tart, amíg az identitás hozzá lesz rendelve a MySQL-kiszolgálóhoz.
  7. A Microsoft Entra Rendszergazda neve területen válassza a Kiválasztás lehetőséget.
  8. Keresse meg az Azure-fiókját, és válassza ki, majd válassza a Kiválasztás lehetőséget.
  9. Válassza a Mentés lehetőséget, és várja meg, amíg a művelet befejeződik.

3. lépés: Felügyelt identitásalapú szolgáltatás-összekötő hozzáadása.

  1. A felső keresősávba írja be az msdocs-jboss-mysql parancsot.
  2. Válassza ki az msdocs-jboss-mysql nevű App Service-erőforrást.
  3. Az App Service lap bal oldali menüjében válassza a Beállítások > szolgáltatás-összekötő lehetőséget.
  4. Válassza a Létrehozás lehetőséget.
  5. Az Alapismeretek lapon:
  6. Állítsa be a szolgáltatástípusta rugalmas MySQL-kiszolgáló adatbázisára.
  7. Állítsa be a rugalmas MySQL-kiszolgálót a msdocs-jboss-mysql-server-re.
  8. Állítsa a MySQL-adatbázistmsdocs-jboss-mysql-database értékre.
  9. Állítsa az ügyféltípustJava értékre.
  10. Válassza a Hitelesítés lapot.
  11. Válassza ki a rendszer által hozzárendelt felügyelt identitást.
  12. Válassza a Véleményezés + Létrehozás lapot.
  13. Ha az ellenőrzés befejeződött, válassza a Létrehozás a Cloud Shellben lehetőséget, és várja meg, amíg a művelet befejeződik a Cloud Shellben.
  14. Amikor megjelenik a kimeneti JSON, bezárhatja a Cloud Shellt. Zárja be a Kapcsolat létrehozása párbeszédpanelt is.
  15. Válassza a Frissítés lehetőséget az új szolgáltatás-összekötő megjelenítéséhez.

4. lépés: Hitelesítési beépülő modulok hozzáadása a kapcsolati sztringhez.

  1. A bal oldali menüben válassza a Környezeti változók lehetőséget.
  2. Válassza a AZURE_MYSQL_CONNECTIONSTRING. Az Érték mezőnek tartalmaznia kell egy user , de nemet password. A felhasználó felügyelt identitásként van kezelve.
  3. Az App Service alkalmazás JBoss kiszolgálója rendelkezik a felügyelt identitás hitelesítéséhez szükséges hitelesítő beépülőkkel, de még hozzá kell adnia a kapcsolati karakterlánchoz. Görgessen az érték végéhez, és fűzze hozzá &defaultAuthenticationPlugin=com.azure.identity.extensions.jdbc.mysql.AzureMysqlAuthenticationPlugin&authenticationPlugins=com.azure.identity.extensions.jdbc.mysql.AzureMysqlAuthenticationPlugin.
  4. Válassza az Alkalmazás lehetőséget.
  5. Válassza az Alkalmaz, majd a Megerősítés lehetőséget.

Problémákat tapasztal? Tekintse meg a hibaelhárítási szakaszt.

4. JNDI-adatforrás megerősítése

Ha olyan alkalmazásbeállítást ad hozzá, amely érvényes JDBC-kapcsolati karakterláncot tartalmaz Oracle, SQL Server, PostgreSQL vagy MySQL számára, az App Service hozzáad egy Java Naming and Directory Interface (JNDI) adatforrást a JBoss-kiszolgálóhoz. Ebben a lépésben az alkalmazástárolóhoz tartozó SSH-kapcsolattal ellenőrizheti a JNDI-adatforrást. A folyamat során megtudhatja, hogyan férhet hozzá az SSH-felülethez, és hogyan futtathatja a JBoss parancssori felületet.

1. lépés: Vissza az App Service oldalára:

  1. A bal oldali menüben válassza a Development Tools > SSH lehetőséget.
  2. Válassza az Indít elemet.

2. lépés: Az SSH-terminálban:

  1. Futtassa az $JBOSS_HOME/bin/jboss-cli.sh --connect parancsot.
  2. A JBoss parancssoros kapcsolaton futtassa a ls subsystem=datasources/data-source parancsot. Ekkor megjelenik az automatikusan létrehozott adatforrás neve AZURE_MYSQL_CONNECTIONSTRING_DS.
  3. Az adatforrás JNDI-nevének lekérése a következővel /subsystem=datasources/data-source=AZURE_MYSQL_CONNECTIONSTRING_DS:read-attribute(name=jndi-name): . Most már rendelkezik egy JNDI-névvel java:jboss/env/jdbc/AZURE_MYSQL_CONNECTIONSTRING_DS, amelyet később használhat az alkalmazás kódjában.

Feljegyzés

Csak a fájlok /home módosításai őrizhetők meg az alkalmazás újraindítása után. Például, ha szerkeszti /opt/eap/standalone/configuration/standalone.xml vagy módosítja a kiszolgáló konfigurációját a JBoss parancssori felületén, a változtatások nem maradnak meg az alkalmazás újraindítása után. A módosítások megőrzéséhez használjon indítási szkriptet, például a Tomcat, JBoss vagy Java SE-alkalmazások adatforrásainak konfigurálása a Azure-alkalmazás Service-ben

Problémákat tapasztal? Tekintse meg a hibaelhárítási szakaszt.

5. Mintakód üzembe helyezése

Ebben a lépésben konfigurálja a GitHub üzembe helyezését a GitHub Actions használatával. Ez csak egy az App Service-ben történő üzembe helyezés számos módja közül, de nagyszerű módja annak is, hogy folyamatos integrációt nyújtsunk az üzembe helyezési folyamatba. Alapértelmezés szerint a GitHub-adattár minden git push eleme elindítja a buildelési és üzembe helyezési műveletet.

A JBoss-konvencióhoz hasonlóan, ha a JBoss gyökérkörnyezetében szeretne üzembe helyezni, nevezze el a root.war nevű beépített összetevőt.

1. lépés: Térjen vissza a minta elágazás GitHub-kódterébe, és futtassa le a git pull origin starter-no-infra parancsot. Ezzel lekéri az újonnan véglegesített munkafolyamat-fájlt a kódtérbe. Igény szerint módosíthatja a .github/workflows/starter-no-infra_msdocs-jboss-mysql.yml webhelyen.

2. lépés (1. lehetőség: a GitHub Copilottal):

  1. Indítsa el az új csevegési munkamenetet a Csevegés nézetre kattintva, majd kattintson a +gombra.
  2. Kérdezze meg a következőt: "@workspace Hogyan csatlakozik az alkalmazás az adatbázishoz?" A Copilot esetleg magyarázatot ad az java:jboss/MySQLDS adatforrásra és annak konfigurálására.
  3. Például: "Az Azure-beli JBoss adatforrása a java:jboss/env/jdbc/AZURE_MYSQL_CONNECTIONSTRING_DS JNDI nevet használja." Előfordulhat, hogy a Copilot a 2. lehetőséghez hasonló kódjavaslatot ad: a GitHub Copilot alábbi lépései nélkül, és akár azt is, hogy végezze el a módosítást az osztályban. A GitHub Copilot nem minden alkalommal ad ugyanazt a választ, előfordulhat, hogy további kérdéseket kell feltennie a válasz finomhangolásához. Tippekért lásd: Mit tehetek a GitHub Copilottal a kódtérben?

2. lépés (2. lehetőség: a GitHub Copilot nélkül):

  1. Nyissa meg az src/main/resources/META-INF/persistence.xml az explorerben. Amikor az alkalmazás elindul, betölti a fájl adatbázis-beállításait.
  2. Módosítsa a <jta-data-source> értékét java:jboss/MySQLDS-ról java:jboss/env/jdbc/AZURE_MYSQL_CONNECTIONSTRING_DS-re, amely az a adatforrás, amit korábban a JBoss CLI-vel az SSH-héjban talált.

3. lépés:

  1. Válassza ki a Forrásvezérlő bővítményt.
  2. A szövegmezőbe írjon be egy véglegesítési üzenetet, például Configure Azure JNDI name: .
  3. Válassza a Véglegesítés lehetőséget, majd erősítse meg igennel.
  4. Válassza a Módosítások szinkronizálása 1 lehetőséget, majd erősítse meg az OK gombot.

4. lépés: Vissza az App Service felügyeleti oldalára az Azure Portalon:

  1. A bal oldali menüben válassza az Üzembe helyezési>központ lehetőséget.

  2. Válassza a Naplókat. Egy új üzembehelyezési futtatás már elindult a véglegesített módosításokból.

  3. Az üzembe helyezési futtatás naplóelemében válassza ki a Build/Deploy Logs bejegyzést a legújabb időbélyeggel.

5. lépés: A rendszer a GitHub-adattárba viszi, és láthatja, hogy a GitHub-művelet fut. A munkafolyamat-fájl két különálló szakaszt határoz meg, a buildelést és az üzembe helyezést. Várja meg, amíg a GitHub fut, és megjeleníti a Kész állapotot. Körülbelül 5 percig tart.

Problémákat tapasztal? Tekintse meg a hibaelhárítási szakaszt.

6. Navigáljon az alkalmazáshoz

1. lépés: Az App Service oldalán:

  1. A bal oldali menüben válassza az Áttekintés lehetőséget.
  2. Az Alapértelmezett tartományban válassza ki az alkalmazás URL-címét.

2. lépés: Adjon hozzá néhány feladatot a listához. Gratulálunk, az Azure App Service-ben futtat egy webalkalmazást, biztonságos kapcsolattal az Azure Database for MySQL-hez.

Problémákat tapasztal? Tekintse meg a hibaelhárítási szakaszt.

7. Diagnosztikai naplók streamelése

Azure-alkalmazás szolgáltatás rögzíti a konzolon megjelenő összes üzenet kimenetét, hogy segítsen diagnosztizálni az alkalmazással kapcsolatos problémákat. A mintaalkalmazás szabványos Log4j-naplózási utasításokat tartalmaz ennek a képességnek a bemutatásához, ahogyan az a következő kódrészletben látható:

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();
}

Az App Service lap bal oldali menüjében válassza a Figyelési>naplóstream lehetőséget. Láthatja az alkalmazás naplóit, beleértve a platformnaplókat és a tárolón belüli naplókat.

További információ a Java-alkalmazásokban való naplózásról az Azure Monitor OpenTelemetry engedélyezése .NET-, Node.js-, Python- és Java-alkalmazásokhoz című sorozatban.

Problémákat tapasztal? Tekintse meg a hibaelhárítási szakaszt.

8. Erőforrások törlése

Ha végzett, törölheti az összes erőforrást az Azure-előfizetéséből az erőforráscsoport törlésével.

1. lépés: Az Azure Portal tetején található keresősávon:

  1. Adja meg az msdocs-jboss-mysql_group erőforráscsoport nevét.
  2. Válassza ki az erőforráscsoportot.

2. lépés: Az erőforráscsoport lapján válassza az Erőforráscsoport törlése lehetőséget.

3. lépés:

  1. Erősítse meg a törlést az erőforráscsoport nevének beírásával.
  2. Válassza a Törlés lehetőséget.
  3. Erősítse meg újra a Törlés gombot.

2. Azure-erőforrások létrehozása és mintaalkalmazás üzembe helyezése

Ebben a lépésben létrehozza az Azure-erőforrásokat, és üzembe helyez egy mintaalkalmazást a Linuxon futó App Service-ben. Az oktatóanyagban használt lépések az App Service-t és az Azure Database for MySQL-t tartalmazó, alapértelmezés szerint biztonságos erőforrások készletét hozzák létre.

A fejlesztői tárolóban már megtalálható az Azure Developer CLI (AZD).

  1. Az adattár gyökeréből futtassa azd init.

    azd init --template jboss-app-service-mysql-infra
    
  2. Amikor a rendszer kéri, adja meg a következő válaszokat:

    Kérdés Válasz
    Folytatja az alkalmazás inicializálását ebben: "<your-directory>"? Y
    Mit szeretne tenni ezekkel a fájlokkal? Meglévő fájljaim változatlanul tartása
    Adjon meg egy új környezetnevet Írjon be egy egyedi nevet. Az AZD-sablon ezt a nevet használja a webalkalmazás DNS-nevének részeként az Azure-ban (<app-name>-<hash>.azurewebsites.net). Alfanumerikus karakterek és kötőjelek engedélyezettek.
  3. Jelentkezzen be az Azure-ba a azd auth login parancs futtatásával és a parancssor követésével:

    azd auth login
    
  4. Hozza létre a szükséges Azure-erőforrásokat, és telepítse az alkalmazáskódot a azd up paranccsal. Kövesse az utasításokat az Azure-erőforrások kívánt előfizetésének és helyének kiválasztásához.

    azd up
    

    A azd up parancs végrehajtása körülbelül 15 percet vesz igénybe (a Redis-gyorsítótár a legtöbb időt veszi igénybe). Emellett lefordítja és üzembe helyezi az alkalmazáskódot, de később módosítja a kódot, hogy működjön az App Service-lel. Amíg fut, a parancs üzeneteket küld a kiépítési és üzembe helyezési folyamatról, beleértve az Azure-beli üzembe helyezésre mutató hivatkozást is. Amikor befejeződik, a parancs egy hivatkozást is megjelenít az üzembe helyezési alkalmazásra.

    Ez az AZD-sablon olyan fájlokat (azure.yaml és infra könyvtár) tartalmaz, amelyek az alábbi Azure-erőforrásokkal létrehoznak egy alapértelmezett, biztonságos architektúrát:

    • Erőforráscsoport: Az összes létrehozott erőforrás tárolója.
    • App Service-csomag: Meghatározza az App Service számítási erőforrásait. Létrejön egy Linux-terv a B1 szinten.
    • App Service: Az alkalmazást jelöli, és az App Service-csomagban fut.
    • Virtuális hálózat: Integrálva az App Service alkalmazással, és elkülöníti a háttérhálózat forgalmát.
    • Azure Database for MySQL Rugalmas Kiszolgáló: Csak a virtuális hálózatról érhető el. A rendszer létrehoz egy adatbázist a kiszolgálón.
    • Azure Cache for Redis: Csak a virtuális hálózaton belülről érhető el.
    • Privát végpontok: Hozzáférési végpontok a kulcstartóhoz és a Redis-gyorsítótárhoz a virtuális hálózaton.
    • saját DNS zónák: Engedélyezze a kulcstartó, az adatbázis-kiszolgáló és a Redis-gyorsítótár DNS-feloldását a virtuális hálózaton.
    • Log Analytics-munkaterület: Az alkalmazás céltárolójaként szolgál a naplók elküldéséhez, ahol a naplókat is lekérdezheti.
    • Key Vault: Az adatbázis jelszavának megőrzése az AZD-vel való ismételt üzembe helyezéskor.

    Ha a parancs befejezi az erőforrások létrehozását és az alkalmazáskód első üzembe helyezését, az üzembe helyezett mintaalkalmazás még nem működik, mert kis módosításokat kell végrehajtania ahhoz, hogy csatlakozni lehessen az Azure-beli adatbázishoz.

Problémákat tapasztal? Tekintse meg a hibaelhárítási szakaszt.

3. A kapcsolati sztring ellenőrzése

Az Ön által használt AZD-sablon már alkalmazásbeállításokként létrehozta a kapcsolati változókat, és azokat az ön kényelme érdekében a terminálon adja ki. Az alkalmazásbeállítások az egyik módja annak, hogy a kapcsolati titkok ne kerüljenek be a kódtárba.

  1. Az AZD-kimenetben keresse meg az alkalmazásbeállítást AZURE_MYSQL_CONNECTIONSTRING. Csak a beállításnevek jelennek meg. Így néznek ki az AZD-kimenetben:

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

    AZURE_MYSQL_CONNECTIONSTRING tartalmazza az Azure-ben található MySQL adatbázis kapcsolati sztringjét. Később a saját kódjában kell használni.

  2. Az ÖN kényelme érdekében az AZD-sablon az alkalmazás alkalmazásbeállítási oldalára mutató közvetlen hivatkozást jeleníti meg. Keresse meg a hivatkozást, és nyissa meg egy új böngészőlapon.

    Ha olyan alkalmazásbeállítást ad hozzá, amely érvényes Oracle, SQL Server, PostgreSQL vagy MySQL kapcsolati sztringet tartalmaz, az App Service Java Naming and Directory Interface (JNDI) adatforrásként adja hozzá a JBoss-kiszolgáló context.xml fájljában.

Problémákat tapasztal? Tekintse meg a hibaelhárítási szakaszt.

4. JNDI-adatforrás megerősítése

Ebben a lépésben az alkalmazástárolóhoz való SSH-kapcsolattal ellenőrizheti a JNDI-adatforrást a JBoss-kiszolgálón. A folyamat során megtudhatja, hogyan érheti el a JBoss-tároló SSH-rendszerhéját.

  1. Az AZD-kimenetben keresse meg az SSH-munkamenet URL-címét, és keresse meg a böngészőben. Így néz ki a kimenetben:

     Open SSH session to App Service container at: <URL>
     
  2. Az SSH-terminálban futtassa a következőt $JBOSS_HOME/bin/jboss-cli.sh --connect: .

  3. A JBoss parancssoros kapcsolaton futtassa a ls subsystem=datasources/data-source parancsot. Ekkor megjelenik az automatikusan létrehozott adatforrás neve AZURE_MYSQL_CONNECTIONSTRING_DS.

  4. Az adatforrás JNDI-nevének lekérése a következővel /subsystem=datasources/data-source=AZURE_MYSQL_CONNECTIONSTRING_DS:read-attribute(name=jndi-name): . Most már rendelkezik egy JNDI-névvel java:jboss/env/jdbc/AZURE_MYSQL_CONNECTIONSTRING_DS, amelyet később használhat az alkalmazás kódjában.

    Képernyőkép az SSH-rendszerhéjban futtatandó parancsokról és azok kimenetéről.

Feljegyzés

Csak a fájlok /home módosításai őrizhetők meg az alkalmazás újraindítása után. Például, ha szerkeszti /opt/eap/standalone/configuration/standalone.xml vagy módosítja a kiszolgáló konfigurációját a JBoss parancssori felületén, a változtatások nem maradnak meg az alkalmazás újraindítása után. A módosítások megőrzéséhez használjon indítási szkriptet, például a Tomcat, JBoss vagy Java SE-alkalmazások adatforrásainak konfigurálása a Azure-alkalmazás Service-ben

Problémákat tapasztal? Tekintse meg a hibaelhárítási szakaszt.

5. Mintakód módosítása és ismételt üzembe helyezés

  1. A GitHub-kódtérben indítsa el az új csevegési munkamenetet a Csevegés nézetre kattintva, majd kattintson +a gombra.

  2. Kérdezze meg a következőt: "@workspace Hogyan csatlakozik az alkalmazás az adatbázishoz?" A Copilot esetleg magyarázatot ad az java:jboss/MySQLDS adatforrásra és annak konfigurálására.

  3. Kérdezze meg a következőt: "@workspace a persistence.xml definiált adatforrást egy meglévő JNDI-adatforrásra szeretném cserélni a JBossban." A Copilot a 2. lehetőséghez hasonló kódjavaslatot adhat: a GitHub Copilot alábbi lépései nélkül, és akár azt is, hogy végezze el a módosítást a persistence.xml fájlban.

  4. Nyissa meg az src/main/resources/META-INF/persistence.xml böngészőt, és végezze el a javasolt JNDI-módosítást.

    A GitHub Copilot nem mindig ugyanazt a választ adja, előfordulhat, hogy más kérdéseket kell feltennie a válasz finomhangolásához. Tippekért lásd: Mit tehetek a GitHub Copilottal a kódtérben?

  5. A kódtér termináljában futtassa a következőt azd deploy: .

    azd deploy
    

Tipp.

Mindig használhatja a azd up-t, amely mind a azd package, azd provision, és azd deploy funkcióit ellátja.

Ha szeretné megtudni, hogy a War-fájl hogyan van csomagolva, önállóan futtathatja azd package --debug .

Problémákat tapasztal? Tekintse meg a hibaelhárítási szakaszt.

6. Navigáljon az alkalmazáshoz

  1. Az AZD-kimenetben keresse meg az alkalmazás URL-címét, és keresse meg a böngészőben. Az URL-cím így néz ki az AZD-kimenetben:

     Deploying services (azd deploy)
    
       (✓) Done: Deploying service web
       - Endpoint: <URL>
     
  2. Adjon hozzá néhány feladatot a listához.

    Képernyőkép a JBoss-webalkalmazásról az Azure-ban futó MySQL-lel, és megjeleníti a feladatokat.

    Gratulálunk, az Azure App Service-ben futtat egy webalkalmazást, biztonságos kapcsolattal az Azure Database for MySQL-hez.

Problémákat tapasztal? Tekintse meg a hibaelhárítási szakaszt.

7. Diagnosztikai naplók streamelése

Azure-alkalmazás szolgáltatás rögzítheti a konzolnaplókat az alkalmazással kapcsolatos problémák diagnosztizálásához. A kényelem kedvéért az AZD-sablon már engedélyezte a naplózást a helyi fájlrendszerbe , és a naplókat egy Log Analytics-munkaterületre szállítja.

A mintaalkalmazás szabványos Log4j-naplózási utasításokat tartalmaz ennek a képességnek a bemutatásához, ahogyan az a következő kódrészletben látható:

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();
}

Az AZD-kimenetben keresse meg az App Service-naplók streameléséhez és a böngészőben való navigáláshoz használt hivatkozást. A hivatkozás így néz ki az AZD-kimenetben:

Stream App Service logs at: <URL>

További információ a Java-alkalmazásokban való naplózásról az Azure Monitor OpenTelemetry engedélyezése .NET-, Node.js-, Python- és Java-alkalmazásokhoz című sorozatban.

Problémákat tapasztal? Tekintse meg a hibaelhárítási szakaszt.

8. Erőforrások törlése

Ha törölni szeretné az összes Azure-erőforrást az aktuális üzemi környezetben, futtassa azd down és kövesse az utasításokat.

azd down

Hibaelhárítás

A létrehozási varázslóban a "Nem jogosult a Saját licencet hoz funkció használatára" hibaüzenet jelenik meg.

Ha megjelenik a hiba, The subscription '701ea799-fb46-4407-bb67-9cbcf289f1c7' is not entitled to use the Bring Your Own License feature when creating the applicationaz azt jelenti, hogy a Red Hat JBoss EAP 7/8 BYO-licencetválasztotta a Java-webkiszolgáló-veremben, de nem állította be az Azure-fiókját a Red Hat Cloud Accessben, vagy nem rendelkezik aktív JBoss EAP-licenccel a Red Hat Cloud Accessben.

Az Azure Database for MySQL Flexible Server portál üzembehelyezési nézete konfliktus állapotot jelenít meg.

Az előfizetéstől és a kiválasztott régiótól függően előfordulhat, hogy az Azure Database for MySQL Flexible Server üzembehelyezési állapota Conflict jelenik meg, és a művelet részletei az alábbi üzenettel láthatók:

InternalServerError: An unexpected error occurred while processing the request.

Ezt a hibát valószínűleg a kiválasztott régióra vonatkozó előfizetés korlátja okozza. Próbáljon meg másik régiót választani az üzembe helyezéshez.

A Kapcsolat létrehozása párbeszédpanelen megjelenik egy Létrehozás a Cloud Shellen gomb, de az nincs engedélyezve.

A párbeszédpanelen hibaüzenet is jelenhet meg: 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.

A szolgáltatás-összekötő automatizálásához hálózati hozzáférésre van szükség a MySQL-kiszolgálóhoz. Tekintse meg a MySQL-kiszolgáló erőforrásának hálózati beállításait, és győződjön meg arról, hogy az erőforrás nyilvános IP-címmel való nyilvános hozzáférésének engedélyezése az interneten keresztül legalább be van jelölve. A Service Connector innen átveheti az irányítást.

Ha nem látja ezt a jelölőnégyzetet, előfordulhat, hogy a Web App + Adatbázis varázslóval hozta létre az üzembe helyezést, és az üzembe helyezés zárolja a MySQL-kiszolgálóhoz való összes nyilvános hálózati hozzáférést. A konfigurációt nem lehet módosítani. Mivel az alkalmazás Linux-tárolója a virtuális hálózati integráción keresztül férhet hozzá a MySQL-hez, telepítheti az Azure CLI-t az alkalmazás SSH-munkamenetében, és ott futtathatja a megadott Cloud Shell-parancsokat.

Az üzembe helyezett mintaalkalmazás nem jeleníti meg a feladatlistaalkalmazást.

Ha a feladatlista-alkalmazás helyett a JBoss kezdőoldalt látja, az App Service valószínűleg továbbra is betölti a frissített tárolót a legújabb kódtelepítésből. Várjon néhány percet, és frissítse az oldalt.

Az alkalmazás nem indult el, és a következőt látom: "Hozzáférés megtagadva a felhasználó számára... (jelszó használata: NEM)" a naplókban.

Ez a hiba valószínűleg azért van, mert nem adta hozzá a jelszó nélküli hitelesítési beépülő modult a kapcsolati karakterlánchoz (lásd az Azure Database for MySQL a Service Connectorral való integrációhoz használt Java-mintakódot). Módosítsa a MySQL-kapcsolati sztringet a 3. Jelszó nélküli kapcsolat utasításait követve.

A diagnosztikai naplókban megjelenik egy "Table 'Task' already exists" hiba.

Ezt a hibernálási hibát figyelmen kívül hagyhatja, mert az azt jelzi, hogy az alkalmazáskód csatlakozik a MySQL-adatbázishoz. Az alkalmazás úgy van konfigurálva, hogy az indításkor hozza létre a szükséges táblákat (lásd : src/main/resources/META-INF/persistence.xml). Az alkalmazás első indításakor sikeresen létre kell hoznia a táblákat, de a későbbi újraindítások során ez a hiba jelenik meg, mert a táblák már léteznek.

Gyakori kérdések

Mennyibe kerül ez a beállítás?

A létrehozott erőforrások díjszabása a következő:

  • Az App Service-csomag P0v3-rétegben jön létre, és fel- vagy leskálázható. Lásd az App Service díjszabását.
  • A rugalmas MySQL-kiszolgáló D2ds-szinten jön létre, és fel- vagy leskálázható. Tekintse meg az Azure Database for MySQL díjszabását.
  • Az Azure Cache for Redis a Basic szinten, minimális gyorsítótármérettel van létrehozva. Ez a szint egy kis költséggel jár. Magasabb teljesítményszintekre skálázhatja a nagyobb rendelkezésre állás, a klaszterezés és más funkciók elérése érdekében. Tekintse meg az Azure Cache for Redis díjszabását.
  • A virtuális hálózat csak akkor számít fel díjat, ha további funkciókat, például kapcsolatépítést konfigurál. Tekintse meg az Azure Virtual Network díjszabását.
  • A privát DNS-zóna kis díjat számít fel. Tekintse meg az Azure DNS díjszabását.

Hogyan csatlakozni a virtuális hálózat mögötti MySQL-kiszolgálóhoz más eszközökkel?

Ebben az oktatóanyagban az App Service-alkalmazás már rendelkezik hálózati kapcsolattal a MySQL-kiszolgálóhoz, és a rendszer által hozzárendelt felügyelt identitással hitelesítheti a Microsoft Entrát. Közvetlenül az alkalmazástárolón belülről csatlakozhat a MySQL-hez az alábbi parancsok SSH-munkamenetben való futtatásával (lekérheti a <server>saját és <user><database> az értékeket az AZURE_MYSQL_CONNECTIONSTRING alkalmazásbeállításból):

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éhány szempont, amelyet érdemes figyelembe venni:

  • Az SSH-munkamenetben telepített eszközök nem maradnak fenn az alkalmazás újraindítása során.
  • Ha követte a portál lépéseit, és rendszergazdaként a Microsoft Entra-felhasználóval konfigurálta a MySQL-t, a Microsoft Entra-felhasználóval csatlakozhat a MySQL-hez.
  • Ha asztali alkalmazásból, mint például a MySQL Workbenchből szeretne csatlakozni, a gépnek a virtuális hálózaton belül kell lennie, például egy Azure VM-et ugyanabba a virtuális hálózatba telepítve. A hitelesítést külön kell konfigurálnia, akár felügyelt identitással, akár Microsoft Entra-felhasználóval.
  • Ha olyan helyszíni hálózaton lévő gépről szeretne csatlakozni, amely helyek közötti VPN-kapcsolattal rendelkezik az Azure-beli virtuális hálózattal, nem konfigurálhatja a hitelesítést felügyelt identitással, de a hitelesítést Microsoft Entra-felhasználóval konfigurálhatja.
  • Integrálhatja az Azure Cloud Shellt, és csatlakozhat az Azure CLI vagy a MySQL CLI használatával. A hitelesítéshez konfigurálhat egy Microsoft Entra-felhasználót.

Hogyan érvényes hozzáférési jogkivonatot kap a MySQL-kapcsolathoz Microsoft Entra-hitelesítéssel?

Egy Microsoft Entra-felhasználó, egy rendszer által hozzárendelt felügyelt identitás vagy a MySQL-adatbázis elérésére jogosult felhasználó által hozzárendelt felügyelt identitás esetében az Azure CLI segíthet létrehozni egy hozzáférési jogkivonatot. Felügyelt identitás esetén az identitást azon az App Service-alkalmazásban vagy virtuális gépen kell konfigurálni, ahol az Azure CLI-t futtatja.

# 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

Ha szeretné, az az mysql flexible-server connect Azure CLI parancsot is használhatja a MySQL-hez való csatlakozáshoz. Amikor a rendszer kéri, használja a hozzáférési jogkivonatot jelszóként.

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

További információk:

Hogyan működik a helyi alkalmazásfejlesztés a GitHub Actions használatával?

Ha például az App Service automatikus munkafolyamat-fájlját használja, mindegyik git push elindít egy új buildet és üzembe helyezést. A GitHub-adattár helyi klónjából elvégezheti a kívánt frissítéseket, és leküldheti a GitHubra. Példa:

git add .
git commit -m "<some-message>"
git push origin starter-no-infra

Nincs jogosultságom felhasználó által hozzárendelt identitás létrehozására

Lásd: A GitHub Actions üzembe helyezésének beállítása az üzembe helyezési központból.

Mit tehetek a GitHub Copilottal a kódolási környezetemben?

Észreveheti, hogy a GitHub Copilot csevegőnézete már ott volt a kódtér létrehozásakor. Az Ön kényelme érdekében a GitHub Copilot csevegőbővítményt is belefoglaljuk a tárolódefinícióba (lásd: .devcontainer/devcontainer.json). Azonban szüksége van egy GitHub Copilot-fiókra (30 napos ingyenes próbaverzió érhető el).

Néhány tipp a GitHub Copilot használatához:

  • Egyetlen csevegési munkamenetben a kérdések és válaszok egymásra épülnek, és módosíthatja a kérdéseket, hogy finomhangolja a választ.
  • Alapértelmezés szerint a GitHub Copilot nem rendelkezik hozzáféréssel az adattárban lévő fájlokhoz. Ha fel szeretne kérdezni egy fájlt, először nyissa meg a fájlt a szerkesztőben.
  • Ha azt szeretné, hogy a GitHub Copilot hozzáférhessen az adattárban lévő összes fájlhoz a válaszok előkészítésekor, kezdje a kérdést a következővel @workspace: . További információ: Use the @workspace agent.
  • A csevegési munkamenetben a GitHub Copilot javasolhat módosításokat, és (azokkal együtt @workspace) még azt is, hogy hol végezze el a módosításokat, de önnek nem engedélyezett a módosítások végrehajtása. Önnek kell hozzáadnia a javasolt módosításokat, és tesztelnie kell azt.

Íme néhány más dolog, amit mondhat a válasz finomhangolásához:

  • Módosítsa ezt a kódot a jdbc/AZURE_MYSQL_CONNECTIONSTRING_DS adatforrás használatára.
  • A kód egyes importálásai javaxot használnak, de van egy Jakarta-alkalmazásom.
  • Azt szeretném, hogy ez a kód csak akkor fusson, ha a AZURE_MYSQL_CONNECTIONSTRING környezeti változó be van állítva.
  • Azt akarom, hogy ez a kód csak a Azure-alkalmazás szolgáltatásban fusson, helyileg nem.

Következő lépések

További információ a Java-alkalmazások App Service-en való futtatásáról a fejlesztői útmutatóban.

Megtudhatja, hogyan védheti meg az alkalmazást egyéni tartománnyal és tanúsítvánnyal.