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, egy Tomcat-alkalmazás fut 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 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ével.
- (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ével.
- (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 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 jetty:run
parancsot. - 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 . 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:
- Í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. A rugalmas Azure Database for MySQL-kiszolgáló egy teljes mértékben felügyelt MySQL-adatbázis szolgáltatásként az Azure-ban, amely kompatibilis a legújabb közösségi kiadásokkal.
- Üzemeltetési terv: Alapszintű. Ha készen áll, felskálázhat egy éles tarifacsomagra.
- 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.
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 alkalmazásbeállításként létrehozta az adatbázis-kapcsolati sztringet. 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 sztring tartalmaz, az App Service Java Naming and Directory Interface (JNDI) adatforrásként injektálja azt a Tomcat-kiszolgáló context.xml fájljában.
- Az Alkalmazás hozzáadása/szerkesztése beállítás Érték mezőjében keresse meg a jelszó= részt a sztring végén.
- Másolja a jelszó sztringet 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 kulcstartó védelme privát végponttal
- 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édpanel Hely területén válassza ki ugyanazt a helyet, mint az App Service-alkalmazás.
- Az Erőforráscsoportban válassza az msdocs-tomcat-mysql-tutorial lehetőséget.
- Írja be az msdocs-tomcat-mysql-XYZVaultEndpoint nevet.
- A virtuális hálózatban válassza az msdocs-tomcat-mysql-XYZVnet elemet.
- Az 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 területen 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 Kapcsolat létrehozása párbeszédpaneljén, a Key Vaultban válassza ki a korábban létrehozott kulcstartót.
- 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 ki van jelölve.
- Amikor az ellenőrzés befejeződött, 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 megjelenik az alapértelmezettConnector szerkesztési párbeszédpanelje. 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 sztring az App Service környezeti változóiból, létrehoz egy Azure Key Vaultot a titkos kódok privát hozzáféréssel történő biztonságos kezeléséhez, és frissítette a szolgáltatás-összekötőt, hogy a jelszót a kulcstartóban 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 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 Tomcat-kiszolgáló context.xml fájljá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 é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.xml
az 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 szerkessze /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.
- 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.
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/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 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
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):
- 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 metódusban
contextIntialized()
keresse meg a megjegyzésben szereplő kódot (29–33. sor), és bontsa ki. Ez a kód ellenőrzi, hogy létezik-e azAZURE_MYSQL_CONNECTIONSTRING
alkalmazásbeállítás, és az adatforrástjava:comp/env/jdbc/AZURE_MYSQL_CONNECTIONSTRING_DS
az SSH-felület context.xml korábban talált adatforrásra módosítja.
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 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ó:
@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).
Futtassa
azd init
az adattár gyökerét.azd init --template tomcat-app-service-mysql-infra
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.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, 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 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 connection strings: - AZURE_MYSQL_CONNECTIONSTRING - AZURE_REDIS_CONNECTIONSTRING - AZURE_KEYVAULT_RESOURCEENDPOINT - AZURE_KEYVAULT_SCOPE
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 Tomcat-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 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: https://<app-name>-<hash>.scm.azurewebsites.net/webssh/host
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 szerkessze /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/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 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
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?
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ó:
@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: 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
- Sok <osztályt> látok több helyről beolvasva figyelmeztetések mvn jetty:run
- 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ályt> látok több helyről beolvasva figyelmeztetések mvn jetty:run
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 tartalmazza a függőséget jakarta.servlet.jsp.jstl
, amelyet a Jetty már a dobozból biztosít. Szüksége van a Tomcat függőségére.
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.
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ó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 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 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?
- 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ó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.