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. Ha végzett, egy JBoss-alkalmazás fog futni a Linuxon futó Azure-alkalmazás Service-en.
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:
- Jelentkezzen be a GitHub-fiókjába.
- Navigáljon a https://github.com/Azure-Samples/msdocs-jboss-mysql-sample-app/fork lapra
- Törölje a jelölést : Csak a főág másolása. Az összes ágat szeretnéd.
- Válassza az Elágazás létrehozása lehetőséget.
2. lépés: A GitHub-elágazásban:
- Válassza ki a kezdő ág fő>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:
- Futtassa az
mvn clean wildfly:run
parancsot. - 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őtCtrl
+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 . Ez az alkalmazás
https://<app-name>-<hash>.<region>.azurewebsites.net
DNS-nevének részeként használatos. - 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:
- A felső keresősávba írja be az App Service-t.
- Válassza ki az App Service címkével ellátott elemet a Szolgáltatások fejléc alatt.
- 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.
- Név: msdocs-jboss-mysql. Létrejön egy msdocs-jboss-mysql_group nevű erőforráscsoport.
- Futtatókörnyezeti verem: Java 17.
- Java webkiszolgáló verem: Red Hat JBoss EAP 8. Ha már konfigurálta Red Hat-előfizetését az Azure-ral, válassza a Red Hat JBoss EAP 8 BYO-licencet.
- Régió: Bármely Önhöz közeli Azure-régió.
- Linux-csomag: Hozzon létre újat, és használja az msdocs-jboss-mysql nevet.
- Tarifacsomag: Prémium V3 P0V3. Ha készen áll, felskálázhat egy másik tarifacsomagra.
- Üzembe helyezés az alkalmazással: Adatbázis kiválasztása. Alapértelmezés szerint a rugalmas Azure Database for MySQL-kiszolgáló van kiválasztva. Ez egy teljes mértékben felügyelt MySQL-adatbázis szolgáltatásként az Azure-ban, kompatibilis a legújabb közösségi kiadásokkal.
- Válassza az Áttekintés + létrehozás lehetőséget.
- Az ellenőrzés befejezése után válassza a Létrehozás lehetőséget.
3. lépés: Az üzembe helyezés 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étrejön egy Linux-csomag az alapszinten .
- 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.
- Rugalmas Azure Database for MySQL-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.
- A felső keresősávba írja be a felügyelt identitást.
- Válassza ki a Felügyelt identitások címkével ellátott elemet a Szolgáltatások fejléc alatt.
- Válassza a Létrehozás lehetőséget.
- Az Erőforrás csoportban válassza az msdocs-jboss-mysql_group lehetőséget.
- A Régió területen válassza ki ugyanazt a régiót, amelyet a webalkalmazáshoz használt.
- Írja be az msdocs-jboss-mysql-server-identity nevet.
- Válassza az Áttekintés + létrehozás lehetőséget.
- 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.
- A felső keresősávba írja be az msdocs-jboss-mysql-server parancsot.
- Válassza ki a rugalmas Azure Database for MySQL-kiszolgálói erőforrást msdocs-jboss-mysql-server néven.
- A bal oldali menüben válassza a Biztonsági>hitelesítés lehetőséget.
- A Hozzáférés hozzárendelése területen válassza csak a Microsoft Entra-hitelesítést.
- A felhasználó által hozzárendelt felügyelt identitásban válassza a Kiválasztás lehetőséget.
- Válassza az msdocs-jboss-mysql-server-identity, majd a Hozzáadás lehetőséget. Egy ideig tart, amíg az identitás hozzá lesz rendelve a MySQL-kiszolgálóhoz.
- A Microsoft Entra Rendszergazda neve területen válassza a Kiválasztás lehetőséget.
- Keresse meg az Azure-fiókját, és válassza ki, majd válassza a Kiválasztás lehetőséget.
- 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.
- A felső keresősávba írja be az msdocs-jboss-mysql parancsot.
- Válassza ki az msdocs-jboss-mysql nevű App Service-erőforrást.
- Az App Service lap bal oldali menüjében válassza a Beállítások > szolgáltatás-összekötő lehetőséget.
- Válassza a Létrehozás lehetőséget.
- Az Alapismeretek lapon:
- Állítsa be a szolgáltatástípusta rugalmas MySQL-kiszolgáló adatbázisára.
- Állítsa a rugalmas MySQL-kiszolgálótmsdocs-jboss-mysql-serverre.
- Állítsa a MySQL-adatbázistmsdocs-jboss-mysql-database értékre.
- Az ügyféltípus beállítása Java értékre.
- Válassza a Hitelesítés lapot.
- Válassza ki a rendszer által hozzárendelt felügyelt identitást.
- Válassza a Véleményezés + Létrehozás lapot.
- 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.
- Amikor megjelenik a kimeneti JSON, bezárhatja a Cloud Shellt. Zárja be a Kapcsolat létrehozása párbeszédpanelt is.
- 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 sztring.
- A bal oldali menüben válassza a Környezeti változók lehetőséget.
- Válassza a AZURE_MYSQL_CONNECTIONSTRING. Az Érték mezőnek tartalmaznia kell egy
user
, de nemetpassword
. A felhasználó egy felügyelt identitás. - Az App Service-alkalmazás JBoss-kiszolgálója rendelkezik a felügyelt identitás hitelesítéséhez szükséges hitelesítési beépülő modulokkal, de hozzá kell adnia a kapcsolati sztring. 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
. - Válassza az Alkalmazás lehetőséget.
- 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 sztring tartalmaz oracle, SQL Server, PostgreSQL vagy MySQL esetén, 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:
- A bal oldali menüben válassza a Development Tools > SSH lehetőséget.
- Válassza az Indít elemet.
2. lépés: Az SSH-terminálban:
- Futtassa az
$JBOSS_HOME/bin/jboss-cli.sh --connect
parancsot. - A JBoss PARANCSSOR-kapcsolaton futtassa a következőt
ls subsystem=datasources/data-source
: . Ekkor megjelenik az automatikusan létrehozott adatforrás neveAZURE_MYSQL_CONNECTIONSTRING_DS
. - 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évveljava: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. Ha például szerkessze /opt/eap/standalone/configuration/standalone.xml
vagy módosítja a kiszolgáló konfigurációját a JBoss parancssori felületén, a módosítá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: Az App Service lap bal oldali menüjében válassza az Üzembe helyezési > központ lehetőséget.
2. lépés: Az Üzembehelyezési központ lapon:
- A Forrás területen válassza a GitHubot. Alapértelmezés szerint a GitHub Actions van kiválasztva buildszolgáltatóként.
- Jelentkezzen be a GitHub-fiókjába, és kövesse az utasításokat az Azure engedélyezéséhez.
- A Szervezetben válassza ki a fiókját.
- Az Adattárban válassza az msdocs-jboss-mysql-sample-app lehetőséget.
- Az Ágban válassza a starter-no-infra lehetőséget. Ez ugyanaz az ág, amelyben a mintaalkalmazással dolgozott, azure-ral kapcsolatos fájlok és konfigurációk nélkül.
- Hitelesítési típus esetén válassza a felhasználó által hozzárendelt identitást.
- A felső menüben válassza a Mentés lehetőséget. Az App Service véglegesít egy munkafolyamat-fájlt a kiválasztott GitHub-adattárba a
.github/workflows
címtárban. Alapértelmezés szerint az üzembehelyezési központ létrehoz egy felhasználó által hozzárendelt identitást a munkafolyamathoz a Microsoft Entra (OIDC-hitelesítés) használatával történő hitelesítéshez. Alternatív hitelesítési lehetőségekért lásd : Üzembe helyezés az App Service-ben a GitHub Actions használatával.
3. lépés: Futtassa git pull origin starter-no-infra
újra a mintaelágazás GitHub-kódterében.
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.
4. lépés (1. lehetőség: a GitHub Copilottal):
- Indítsa el az új csevegési munkamenetet a Csevegés nézetre kattintva, majd kattintson a +gombra.
- 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. - 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?
4. lépés (2. lehetőség: a GitHub Copilot nélkül):
- 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.
- Módosítsa a JBoss CLI-vel korábban az SSH-rendszerhéjban talált adatforrás értékét
<jta-data-source>
a másikróljava:jboss/MySQLDS
java:jboss/env/jdbc/AZURE_MYSQL_CONNECTIONSTRING_DS
a másikra.
5. lépés:
- Válassza ki a Forrásvezérlő bővítményt.
- A szövegmezőbe írjon be egy véglegesítési üzenetet, például
Configure Azure JNDI name
: . - Válassza a Véglegesítés lehetőséget, majd erősítse meg igennel.
- Válassza a Módosítások szinkronizálása 1 lehetőséget, majd erősítse meg az OK gombot.
6. lépés: Vissza az Üzembehelyezési központ lapra az Azure Portalon:
- Válassza a Naplókat. Egy új üzembehelyezési futtatás már elindult a véglegesített módosításokból.
- Az üzembe helyezési futtatás naplóelemében válassza ki a Build/Deploy Logs bejegyzést a legújabb időbélyeggel.
7. lépés: A GitHub-adattárba kerül, é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. Tallózás az alkalmazáshoz
1. lépés: Az App Service oldalán:
- A bal oldali menüben válassza az Áttekintés lehetőséget.
- 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, egy webalkalmazást futtat a Azure-alkalmazás Service-ben, 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 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:
- Adja meg az msdocs-jboss-mysql_group erőforráscsoport nevét.
- 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:
- Erősítse meg a törlést az erőforráscsoport nevének beírásával.
- Válassza a Törlés lehetőséget.
- 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).
Futtassa
azd init
az adattár gyökerét.azd init --template jboss-app-service-mysql-infra
Amikor a rendszer kéri, adja meg a következő válaszokat:
Kérdés Válasz Folytatja egy alkalmazás inicializálását a következőben: " <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.Jelentkezzen be az Azure-ba a
azd auth login
parancs futtatásával és a parancssor követésével:azd auth login
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-csomag 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.
- Rugalmas Azure Database for MySQL-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 kapcsolat titkos kulcsait ne használja a kódtárban.
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-beli MySQL-adatbázis kapcsolati sztring. Később használnia kell a kódban.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 sztring 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.
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: https://<app-name>-<hash>.scm.azurewebsites.net/webssh/host
Az SSH-terminálban futtassa a következőt
$JBOSS_HOME/bin/jboss-cli.sh --connect
: .A JBoss PARANCSSOR-kapcsolaton futtassa a következőt
ls subsystem=datasources/data-source
: . Ekkor megjelenik az automatikusan létrehozott adatforrás neveAZURE_MYSQL_CONNECTIONSTRING_DS
.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évveljava: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. Ha például szerkessze /opt/eap/standalone/configuration/standalone.xml
vagy módosítja a kiszolgáló konfigurációját a JBoss parancssori felületén, a módosítá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
A GitHub-kódtérben indítsa el az új csevegési munkamenetet a Csevegés nézetre kattintva, majd kattintson +a gombra.
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.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.
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?
A kódtér termináljában futtassa a következőt
azd deploy
: .azd deploy
Tipp.
Azt is használhatja azd up
, hogy mindig, ami nem az összes azd package
, azd provision
és azd deploy
.
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. Tallózás az alkalmazáshoz
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: https://<app-name>-<hash>.azurewebsites.net/
Adjon hozzá néhány feladatot a listához.
Gratulálunk, egy webalkalmazást futtat a Azure-alkalmazás Service-ben, 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: https://portal.azure.com/#@/resource/subscriptions/<subscription-guid>/resourceGroups/<group-name>/providers/Microsoft.Web/sites/<app-name>/logStream
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 "Saját licenc használata nem jogosult" hibaüzenet jelenik meg.
- A rugalmas Azure Database for MySQL-kiszolgáló portál üzembehelyezési nézete ütközési állapotot jelenít meg.
- A Kapcsolat létrehozása párbeszédpanelen megjelenik a Létrehozás a Cloud Shellen gomb, de nincs engedélyezve.
- 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.
- Az üzembe helyezett mintaalkalmazás nem jeleníti meg a feladatlistaalkalmazást.
- A diagnosztikai naplókban egy "Table "Task" (Feladat) hiba jelenik meg.
A létrehozási varázslóban a "Saját licenc használata nem jogosult" 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 application
az 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.
A rugalmas Azure Database for MySQL-kiszolgáló portál üzembehelyezési nézete ütközési állapotot jelenít meg.
Az előfizetéstől és a kiválasztott régiótól függően előfordulhat, hogy a rugalmas Azure Database for MySQL-kiszolgáló üzembehelyezési állapota jelenik Conflict
meg, és a művelet részletei az alábbi üzenettel láthatók:
InternalServerError: An unexpected error occured 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 a Létrehozás a Cloud Shellen gomb, de 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 is átveheti.
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 sztring (lásd az Azure Database for MySQL Service Connectornal való integrálásához használt Java-mintakódot). Módosítsa a MySQL-kapcsolati sztring a 3. Jelszó nélküli kapcsolat létrehozása.
A diagnosztikai naplókban egy "Table "Task" (Feladat) hiba jelenik meg.
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?
- Hogyan csatlakozni a virtuális hálózat mögötti MySQL-kiszolgálóhoz más eszközökkel?
- Hogyan érvényes hozzáférési jogkivonatot kap a MySQL-kapcsolathoz Microsoft Entra-hitelesítéssel?
- Hogyan működik a helyi alkalmazásfejlesztés a GitHub Actions használatával?
- Nincs jogosultságom felhasználó által hozzárendelt identitás létrehozására
- Mit tehetek a GitHub Copilottal a kódtérben?
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 alapszintű, minimális gyorsítótármérettel jön létre. Ez a szint egy kis költséggel jár. Magasabb teljesítményszintekre skálázhatja a magasabb rendelkezésre állás, a fürtözés és más funkciók é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 nem konfigurál további funkciókat, például társviszony-létesítést. 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 képes hitelesíteni 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 eszközről , például a MySQL Workbenchről szeretne csatlakozni, a gépnek a virtuális hálózaton belül kell lennie, például egy azure-beli virtuális gépnek ugyanabban a virtuális hálózatban. 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:
- Felügyelt identitások használata az App Service-hez és az Azure Functionshez
- Hitelesítés az Azure-ban az Azure CLI használatával
- Csatlakozás rugalmas Azure Database for MySQL-kiszolgálóhoz a Microsoft Entra ID használatával
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ódtérben?
É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.