Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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.
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:
- Jelentkezzen be a GitHub-fiókjába.
- Navigáljon a https://github.com/Azure-Samples/msdocs-tomcat-mysql-sample-app/fork-hoz.
- Szüntesse meg a kijelö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 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ó.
- 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:
- Futtassa az
mvn jetty:runparancsot. - Amikor megjelenik az értesítés
Your 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ő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 . 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:
- Írja be a "webalkalmazás-adatbázis" kifejezést az Azure Portal tetején található keresősávba.
- 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.
- Erőforráscsoport: Válassza az Új létrehozása lehetőséget, és használja az msdocs-tomcat-mysql-tutorial nevet.
- Régió: Bármely Önhöz közeli Azure-régió.
- Név: msdocs-tomcat-mysql-XYZ, ahol az XYZ tetszőleges három véletlenszerű karakter.
- Futtatókörnyezeti verem: Java 17.
- Java webkiszolgáló verem: Apache Tomcat 10.1.
- 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.
- Üzemeltetési terv: Alapszintű. Ha készen áll, áttérhet egy gyártási tarifacsomagra.
- Válassza az Áttekintés + létrehozás lehetőséget.
- 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
- Az App Service lap bal oldali menüjében válassza a Beállítások > környezet változói lehetőséget.
- 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.
- 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.
- 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
- A felső keresősávon írja be a "key vault" kifejezést, majd válassza a Marketplace>Key Vault lehetőséget.
- Az Erőforráscsoportban válassza az msdocs-tomcat-mysql-tutorial lehetőséget.
- A Key Vault nevében írjon be egy nevet, amely csak betűkből és számokból áll.
- 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
- Válassza a Hálózatkezelés lapot.
- Törölje a jelölést a nyilvános hozzáférés engedélyezése jelölőnégyzetből.
- Válassza a Privát végpont létrehozása lehetőséget.
- Az Erőforráscsoportban válassza az msdocs-tomcat-mysql-tutorial lehetőséget.
- A Név mezőbe írja be a magánvégpont nevét, amely csak betűkből és számokból áll.
- A Régióban állítsa be az erőforráscsoporthoz hasonló helyre.
- A párbeszédpanelban válassza ki ugyanazt a helyet a Hely területén, mint az App Service-alkalmazásé.
- Az Erőforráscsoportban válassza az msdocs-tomcat-mysql-tutorial lehetőséget.
- A Név mezőbe írja be a msdocs-tomcat-mysql-XYZVaultEndpoint értéket.
- A virtuális hálózatban válassza az msdocs-tomcat-mysql-XYZVnet elemet.
- A Alhálózatban, msdocs-tomcat-mysql-XYZSubnet.
- Kattintson az OK gombra.
- 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
- 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.
- 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.
- Jelölje be az összekötő melletti jelölőnégyzetet, majd válassza a Szerkesztés lehetőséget.
- Az Alapszintű beállítások lapon állítsa az ügyféltípust Java értékre.
- Válassza a Hitelesítés lapot.
- A Jelszó mezőbe illessze be a korábban másolt jelszót.
- Válassza a Titkos kulcs tárolása lehetőséget a Key Vaultban.
- 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
- 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.
- 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.
- 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
- 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.
- Válassza a Tovább: Hálózatkezelés lehetőséget.
- 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
- A bal oldali menüben válassza ismét a Beállítások > környezet változói lehetőséget.
-
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:
- A bal oldali menüben válassza az SSH-t.
- 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:
- 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-tomcat-mysql-sample-app elemet.
- 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.
- 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/workflowscí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):
- 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
jdbc/MYSQLDSadatforrá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 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.
- 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
contextInitializedmetó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):
- 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.
- 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 azAZURE_MYSQL_CONNECTIONSTRINGalkalmazásbeállítás, és módosítja az adatforrástjava:comp/env/jdbc/AZURE_MYSQL_CONNECTIONSTRING_DSforrásra, amelyet korábban a context.xml fájlban talált az SSH felületen.
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 data source: . - 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.
- 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:
- A bal oldali menüben válassza az App Service-naplók lehetőséget.
- Az Alkalmazásnaplózás területen válassza a Fájlrendszer lehetőséget.
- 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:
- Adja meg az 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).
Az adattár gyökeréből futtassa a
azd init-t.azd init --template tomcat-app-service-mysql-infraAmikor 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.Jelentkezzen be az Azure-ba a
azd auth loginparancs futtatásával és a parancssor követésével:azd auth loginHozza létre a szükséges Azure-erőforrásokat, és telepítse az alkalmazáskódot a
azd upparanccsal. 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 upA
azd upparancs 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.
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_SCOPEAZURE_MYSQL_CONNECTIONSTRINGtartalmazza az Azure-ban található MySQL-adatbázis kapcsolati karakterláncot. Később a kódjában kell használnia.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.
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>
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áadvajdbc/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 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
jdbc/MYSQLDSadatforrá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 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.
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
contextInitializedmetó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?
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
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>
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í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
- Amikor futtatom a mvn jetty:run parancsot, számos <osztály> figyelmeztetést látok több helyről beolvasva.
- A rugalmas Azure Database for MySQL-kiszolgáló portál üzembehelyezési nézete ütközési állapotot jelenít meg
- Az üzembe helyezett mintaalkalmazás nem jeleníti meg a feladatlistaalkalmazást
- 404 oldal nem található hibaüzenet jelenik meg az üzembe helyezett mintaalkalmazásban
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?
- Hogyan csatlakozni a virtuális hálózat mögötti MySQL-kiszolgálóhoz más eszközökkel?
- 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ódhelyemben?
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-clientterminá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.