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


Oktatóanyag: Tomcat-webalkalmazás létrehozása a 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 Tomcat-alkalmazást Azure-alkalmazás Szolgáltatásban, 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, van egy Tomcat-alkalmazása, ami az Azure App Service-en fut Linuxon.

Képernyőkép arról, hogy a Tomcat 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 a Azure-alkalmazás Service-hez és az Azure Database for MySQL-hez.
  • A kapcsolati titkos kulcsok biztonságossá tételéhez használjon felügyelt identitást és Key Vault-hivatkozásokat.
  • Tomcat-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.
  • A Java ismerete a Tomcat-fejlesztés területén.
  • (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.
  • A Java ismerete a Tomcat-fejlesztés területén.
  • (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-tomcat-mysql-sample-app
cd msdocs-tomcat-mysql-sample-app
azd init --template msdocs-tomcat-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-tomcat-mysql-sample-app/fork-hoz.
  3. Szüntesse meg a kijelölést Csak a főág másolása. Az összes ágat szeretnéd.
  4. Válassza az Elágazás létrehozása lehetőséget.

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

  1. Válassza ki a main>starter-no-infra lehetőséget a kezdő ág számára. Ez az ág csak a mintaprojektet tartalmazza, és nincs Azure-nal kapcsolatos fájl vagy konfiguráció.
  2. Válassza a Kód>Kódterület létrehozása a starter-no-infra-n. 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 jetty:run parancsot.
  2. Amikor megjelenik az értesítésYour application running on port 80 is available., válassza a Megnyitás böngészőben lehetőséget. A mintaalkalmazásnak egy új böngészőlapon kell megjelennie. A Jetty-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 . A DNS-név részeként használják.
  • A régió, ahol az alkalmazás fizikailag fut. 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. Írja be a "webalkalmazás-adatbázis" kifejezést az Azure Portal tetején található keresősávba.
  2. Válassza ki a Web App + Adatbázis címkével ellátott elemet a Marketplace címsora alatt. A létrehozási varázslót közvetlenül is megnyithatja.

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

  1. Erőforráscsoport: Válassza az Új létrehozása lehetőséget, és használja az msdocs-tomcat-mysql-tutorial nevet.
  2. Régió: Bármely Önhöz közeli Azure-régió.
  3. Név: msdocs-tomcat-mysql-XYZ, ahol az XYZ tetszőleges három véletlenszerű karakter.
  4. Futtatókörnyezeti verem: Java 17.
  5. Java webkiszolgáló verem: Apache Tomcat 10.1.
  6. Motor: MySQL – A rugalmas kiszolgáló alapértelmezés szerint adatbázismotorként van kiválasztva. Ha nem, jelölje ki. Az Azure Database for MySQL - Flexible Server egy teljes mértékben felügyelt MySQL adatbázis-szolgáltatás az Azure-on, ami kompatibilis a legújabb közösségi kiadásokkal.
  7. Üzemeltetési terv: Alapszintű. Ha készen áll, áttérhet egy gyártási tarifacsomagra.
  8. Válassza az Áttekintés + létrehozás lehetőséget.
  9. Amikor az ellenőrzés befejeződik, válassza ki 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-terv a Basic 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 Flexible Server: 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.

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

3. A kapcsolat titkos kulcsának védelme

A létrehozási varázsló már létrehozta az adatbázis-kapcsolati sztringet, mint alkalmazásbeállítást. A biztonsági ajánlott eljárás azonban az, hogy a titkos kulcsokat teljesen kizárja az App Service-ből. A titkos kulcsokat áthelyezheti egy kulcstartóba, és a Service Connectors segítségével kulcstartó-referenciaként módosíthatja az alkalmazásbeállítást.

1. lépés: A meglévő kapcsolati sztring lekérése

  1. Az App Service lap bal oldali menüjében válassza a Beállítások > környezet változói lehetőséget.
  2. Válassza a AZURE_MYSQL_CONNECTIONSTRING. JDBC-kapcsolati sztring tartalmaz. Ha olyan alkalmazásbeállítást ad hozzá, amely érvényes Oracle-, SQL Server-, PostgreSQL- vagy MySQL-kapcsolati karakterláncot tartalmaz, az App Service Java Naming and Directory Interface (JNDI) adatforrásként beszúrja azt a Tomcat-kiszolgáló context.xml fájljába.
  3. Az Beállítások az alkalmazás hozzáadásához/szerkesztéséhez, az Érték mezőben keresse meg a jelszó= részt a karaktersor végén.
  4. Másolja a jelszó karakterláncot a Password= után későbbi használatra. Ezzel az alkalmazásbeállítással privát végpont mögött biztonságosan csatlakozhat a MySQL-adatbázishoz. A titkos kód azonban közvetlenül az App Service-alkalmazásban lesz mentve, ami nem a legjobb. Ezt meg fogja változtatni.

2. lépés: Kulcstartó létrehozása a titkos kódok biztonságos kezeléséhez

  1. A felső keresősávon írja be a "key vault" kifejezést, majd válassza a Marketplace>Key Vault lehetőséget.
  2. Az Erőforráscsoportban válassza az msdocs-tomcat-mysql-tutorial lehetőséget.
  3. A Key Vault nevében írjon be egy nevet, amely csak betűkből és számokból áll.
  4. A Régióban állítsa be az erőforráscsoporthoz hasonló helyre.

3. lépés: A kulcstár védelme privát végpont használatával

  1. Válassza a Hálózatkezelés lapot.
  2. Törölje a jelölést a nyilvános hozzáférés engedélyezése jelölőnégyzetből.
  3. Válassza a Privát végpont létrehozása lehetőséget.
  4. Az Erőforráscsoportban válassza az msdocs-tomcat-mysql-tutorial lehetőséget.
  5. A Név mezőbe írja be a magánvégpont nevét, amely csak betűkből és számokból áll.
  6. A Régióban állítsa be az erőforráscsoporthoz hasonló helyre.
  7. A párbeszédpanelban válassza ki ugyanazt a helyet a Hely területén, mint az App Service-alkalmazásé.
  8. Az Erőforráscsoportban válassza az msdocs-tomcat-mysql-tutorial lehetőséget.
  9. A Név mezőbe írja be a msdocs-tomcat-mysql-XYZVaultEndpoint értéket.
  10. A virtuális hálózatban válassza az msdocs-tomcat-mysql-XYZVnet elemet.
  11. A Alhálózatban, msdocs-tomcat-mysql-XYZSubnet.
  12. Kattintson az OK gombra.
  13. Válassza a Felülvizsgálat + létrehozás, majd a Létrehozás lehetőséget. Várja meg, amíg a Key Vault üzembe helyezése befejeződik. A következőt kell látnia: "Az üzembe helyezés befejeződött".

4. lépés: A szolgáltatás-összekötő konfigurálása

  1. A felső keresősávba írja be az msdocs-tomcat-mysql kifejezést, majd az msdocs-tomcat-mysql-XYZ nevű App Service-erőforrást.
  2. Az App Service lap bal oldali menüjében válassza a Beállítások > szolgáltatás-összekötő lehetőséget. Már van egy összekötő, amelyet az alkalmazáslétrehozó varázsló hozott létre Önnek.
  3. Jelölje be az összekötő melletti jelölőnégyzetet, majd válassza a Szerkesztés lehetőséget.
  4. Az Alapszintű beállítások lapon állítsa az ügyféltípust Java értékre.
  5. Válassza a Hitelesítés lapot.
  6. A Jelszó mezőbe illessze be a korábban másolt jelszót.
  7. Válassza a Titkos kulcs tárolása lehetőséget a Key Vaultban.
  8. A Key Vault kapcsolat alatt válassza az Új létrehozása lehetőséget. A szerkesztési párbeszédpanel tetején megnyílik a Kapcsolat létrehozása párbeszédpanel.

5. lépés: A Key Vault-kapcsolat létrehozása

  1. A Key Vault-kapcsolat létrehozása párbeszédpaneljén a Key Vault-ban válassza ki a korábban létrehozott kulcstárat.
  2. Válassza a Felülvizsgálat és létrehozás lehetőséget. Látnia kell, hogy a rendszer által hozzárendelt felügyelt identitás állapota Kiválasztott beállításon van.
  3. Amikor az érvényesítés befejeződik, válassza a Létrehozás lehetőséget.

6. lépés: A Service Connector konfigurációjának véglegesítése

  1. Ismét a szerkesztési párbeszédpanelben van az alapértelmezett csatlakozó. A Hitelesítés lapon várja meg, amíg létrejön a Key Vault-összekötő. Ha elkészült, a Key Vault kapcsolat legördülő listája automatikusan kiválasztja azt.
  2. Válassza a Tovább: Hálózatkezelés lehetőséget.
  3. Válassza a Mentés lehetőséget. Várja meg, amíg megjelenik a frissítés sikeres értesítése.

7. lépés: A Key Vault integrációjának ellenőrzése

  1. A bal oldali menüben válassza ismét a Beállítások > környezet változói lehetőséget.
  2. A AZURE_MYSQL_CONNECTIONSTRING mellett válassza az Érték megjelenítése lehetőséget. Az értéknek meg kell lennie @Microsoft.KeyVault(...), ami azt jelenti, hogy ez egy kulcstartó-hivatkozás , mert a titkos kulcs most már a kulcstartóban van kezelve.

Összefoglalva, a folyamat során lekérte a MySQL-kapcsolati sztringet az App Service környezeti változóiból, létrehozott egy Azure Key Vaultot a titkos adatok biztonságos, privát hozzáférésű kezeléséhez, és frissítette a szolgáltatás-összekötőt, hogy a jelszót a kulcsraktárban tárolja. Az App Service-alkalmazás és a Key Vault közötti biztonságos kapcsolat egy rendszer által hozzárendelt felügyelt identitással jött létre, és a beállítás ellenőrzése során meggyőződött arról, hogy a kapcsolati sztring Key Vault-referenciát használ.

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 sztringet tartalmaz Oracle, SQL Server, PostgreSQL vagy MySQL esetén, akkor az App Service hozzáad egy Java Naming and Directory Interface (JNDI) adatforrást a Tomcat kiszolgáló context.xml fájlba. 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 érheti el a Tomcat-tároló SSH-rendszerhéját.

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

  1. A bal oldali menüben válassza az SSH-t.
  2. Válassza az Indít elemet.

2. lépés: Futtassa cat /usr/local/tomcat/conf/context.xmlaz SSH-terminálban. Látnia kell, hogy egy JNDI-erőforrás lett hozzáadva jdbc/AZURE_MYSQL_CONNECTIONSTRING_DS . Ezt az adatforrást később fogja használni.

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 szerkeszted /usr/local/tomcat/conf/server.xml, a módosítások nem maradnak meg az alkalmazás újraindítása után.

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 Tomcat-konvencióhoz hasonlóan, ha a Tomcat 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:

  1. A Forrás területen válassza a GitHubot. Alapértelmezés szerint a GitHub Actions van kiválasztva buildszolgáltatóként.
  2. Jelentkezzen be a GitHub-fiókjába, és kövesse az utasításokat az Azure engedélyezéséhez.
  3. A Szervezetben válassza ki a fiókját.
  4. Az Adattárban válassza az msdocs-tomcat-mysql-sample-app elemet.
  5. A Szakaszban válassza a starter-no-infra lehetőséget. Ez ugyanaz az ág, amelyben a mintaalkalmazásával dolgozott, Azure-rel kapcsolatos fájlok és konfiguráció nélkül.
  6. Hitelesítési típus esetén válassza a felhasználó által hozzárendelt identitást.
  7. 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: Menjen vissza a minta-fork GitHub-kódterébe, és futtassa git pull origin starter-no-infra. Ezzel behúzza az újonnan elkötelezett munkafolyamat-fájlt a kódterületre.

4. 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 jdbc/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 Tomcatben, de dinamikusan szeretném elvégezni." Előfordulhat, hogy a Copilot olyan kódjavaslatot ad, amely hasonló a 2. lehetőség: GitHub Copilot nélkül alábbi lépéseiben szereplőhöz, sőt, akár azt is javasolhatja, hogy végezze el a módosítást a ContextListener osztályban.
  4. Nyissa meg az src/main/java/com/microsoft/azure/appservice/examples/tomcatmysql/ContextListener.java böngészőt, és adja hozzá a kódjavaslatot a contextInitialized metódushoz. 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):

  1. Nyissa meg az src/main/java/com/microsoft/azure/appservice/examples/tomcatmysql/ContextListener.java böngészőt. Az alkalmazás indításakor ez az osztály betölti az adatbázis beállításait az src/main/resources/META-INF/persistence.xml.
  2. A contextIntialized() metódusban keresse meg a kommentált kódot (29–33. sor), és kommentálja ki. Ez a kód ellenőrzi, hogy létezik-e az AZURE_MYSQL_CONNECTIONSTRING alkalmazásbeállítás, és módosítja az adatforrást java:comp/env/jdbc/AZURE_MYSQL_CONNECTIONSTRING_DS forrásra, amelyet korábban a context.xml fájlban talált az SSH felületen.

5. 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 data source: .
  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.

6. lépés: Vissza az Üzembehelyezési központ lapra az Azure Portalon:

  1. Válassza a Naplókat. Egy új üzembehelyezési futtatás már elindult a véglegesített módosításokból.
  2. 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:

  1. A bal oldali menüben válassza az Áttekintés lehetőséget.
  2. 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 az Azure App 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ó:

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

        logger.info("GET /");

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

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

  1. A bal oldali menüben válassza az App Service-naplók lehetőséget.
  2. Az Alkalmazásnaplózás területen válassza a Fájlrendszer lehetőséget.
  3. A felső menüben válassza a Mentés lehetőséget.

2. lépés: A bal oldali menü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:

  1. Adja meg az 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 a azd init-t.

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

    Kérdés Válasz
    Az aktuális könyvtár nem üres. Inicializálni szeretne egy projektet itt a "saját könyvtárában<"?> 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, a DNS-zónaintegráción keresztü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 egy módja annak, hogy a kapcsolat titkait kódtáron kívül tartsa.

  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 connection strings:
             - AZURE_MYSQL_CONNECTIONSTRING
             - AZURE_REDIS_CONNECTIONSTRING
             - AZURE_KEYVAULT_RESOURCEENDPOINT
             - AZURE_KEYVAULT_SCOPE
     

    AZURE_MYSQL_CONNECTIONSTRING tartalmazza az Azure-ban található MySQL-adatbázis kapcsolati karakterláncot. Később a kódjában kell használnia.

  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 a Java Naming and Directory Interface (JNDI) adatforrásként adja hozzá a Tomcat-szerver context.xml fájljához.

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 tartozó SSH-kapcsolattal ellenőrizheti a JNDI-adatforrást a Tomcat-kiszolgálón. A folyamat során megtudhatja, hogyan érheti el a Tomcat-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 cat /usr/local/tomcat/conf/context.xml: . Látnia kell, hogy egy JNDI-erőforrás lett hozzáadva jdbc/AZURE_MYSQL_CONNECTIONSTRING_DS . Ezt az adatforrást később fogja használni.

    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. Ha például szerkeszted /usr/local/tomcat/conf/server.xml, a módosítások nem maradnak meg az alkalmazás újraindítása után.

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 jdbc/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 Tomcatben, de dinamikusan szeretném elvégezni." 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 még a ContextListener osztályban is elvégezheti a módosítást.

  4. Nyissa meg az src/main/java/com/microsoft/azure/appservice/examples/tomcatmysql/ContextListener.java böngészőt, és adja hozzá a kódjavaslatot a contextInitialized metódushoz.

    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.

Ön is egyszerűen mindig használhatja a azd up-t, ami elvégzi az összes azd package, azd provision és azd deploy-t.

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

  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 Tomcat webalkalmazásról, amelyen az Azure-ban futó MySQL feladatok láthatók.

    Gratulálunk, egy webalkalmazást futtat az Azure App 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ó:

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

        logger.info("GET /");

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

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

Sok <osztály> figyelmeztetést látok, melyek több helyről lettek beolvasva mvn jetty:run során.

Figyelmen kívül hagyhatja a figyelmeztetéseket. A Maven Jetty beépülő modul azért jeleníti meg a figyelmeztetéseket, mert az alkalmazás pom.xml-fájljában található a jakarta.servlet.jsp.jstl függőség, amelyet a Jetty már alapértelmezés szerint biztosít. A Tomcat függőségre van szüksége.

A Azure Database for MySQL Flexible Server portál telepíté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 az Azure Database for MySQL rugalmas kiszolgáló üzembe helyezési állapota Conflictként jelenik meg, és a következő üzenet látható a műveletek részleteiben:

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.

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

Ha a feladatlista-alkalmazás helyett egy Hey, Java developers! lap jelenik meg, 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.

404 oldal nem található hibaüzenet jelenik meg az üzembe helyezett mintaalkalmazásban

Győződjön meg arról, hogy módosította a kódokat az java:comp/env/jdbc/AZURE_MYSQL_CONNECTIONSTRING_DS adatforrás használatához. Ha végrehajtotta a módosításokat, és újból üzembe helyezette a kódot, az App Service valószínűleg továbbra is betölti a frissített tárolót. Várjon néhány percet, és frissítse az oldalt.

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 alapszinten jön létre, és fel- vagy leskálázható. Lásd az App Service díjszabását.
  • A rugalmas MySQL-kiszolgáló B1ms-szinten jön létre, és fel- vagy leskálázható. Ingyenes Azure-fiók esetén a B1ms szint 12 hónapig ingyenes, a havi korlátokig. 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 jön létre. Ez a szint egy kis költséggel jár. A nagyobb rendelkezésre állás, a fürtözés és egyéb funkciók érdekében magasabb teljesítményszintekre skálázhatja. 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?

  • A Tomcat-tárolónak jelenleg nincs mysql-client terminálja. Ha szeretné, manuálisan kell telepítenie. Ne feledje, hogy a telepített fájlok nem maradnak meg az alkalmazás újraindításakor.
  • A MySQL Workbenchhez hasonló asztali eszközről való csatlakozáshoz a gépnek a virtuális hálózaton belül kell lennie. Ez lehet például egy Azure-beli virtuális gép az egyik alhálózaton, vagy egy helyszíni hálózat egy olyan gépe, amely helyek közötti VPN-kapcsolattal rendelkezik az Azure-beli virtuális hálózattal.
  • Az Azure Cloud Shellt a virtuális hálózattal is integrálhatja.

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 main

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ódteremben?

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