Node.js + MongoDB-webalkalmazás üzembe helyezése az Azure-ban

Azure App Service egy nagymértékben skálázható, önjavító web hosting szolgáltatást nyújt a Linux operációs rendszer használatával. Ez az oktatóanyag bemutatja, hogyan hozhat létre biztonságos Node.js alkalmazást a MongoDB-hez készült Azure Cosmos DB-adatbázishoz csatlakoztatott Azure App Service. Ha végzett, egy Express.js-alkalmazás fog futni a Linuxon futó Azure App Service.

Egy diagram, amely bemutatja, hogyan lesz üzembe helyezve a Express.js alkalmazás a Azure App Service, és a MongoDB-adatok az Azure Cosmos DB-ben lesznek tárolva.

Ez a cikk feltételezi, hogy már ismeri Node.js fejlesztést , és helyileg telepítette a Node-t és a MongoDB-t. Szüksége lesz egy aktív előfizetéssel rendelkező Azure-fiókra is. Ha nem rendelkezik Azure-fiókkal, ingyenesen létrehozhat egyet.

Mintaalkalmazás

Az oktatóanyag követéséhez klónozza vagy töltse le a mintaalkalmazást az adattárból https://github.com/Azure-Samples/msdocs-nodejs-mongodb-azure-sample-app.

git clone https://github.com/Azure-Samples/msdocs-nodejs-mongodb-azure-sample-app.git

Ha helyileg szeretné futtatni az alkalmazást, tegye a következőket:

  • Telepítse a csomagfüggőségeket a futtatásával npm install.
  • Másolja a fájlt a .env.sample fájlba .env , és töltse ki a DATABASE_URL értéket a MongoDB URL-címével (például mongodb://localhost:27017/).
  • Indítsa el az alkalmazást a paranccsal npm start.
  • Az alkalmazás megtekintéséhez keresse meg a következőt: http://localhost:3000.

1. A App Service és az Azure Cosmos DB létrehozása

Ebben a lépésben az Azure-erőforrásokat hozza létre. Az oktatóanyagban használt lépések olyan, alapértelmezés szerint biztonságos erőforrásokat hoznak létre, amelyek tartalmazzák a App Service és a MongoDB-hez készült Azure Cosmos DB-t. A létrehozási folyamathoz a következőket kell megadnia:

  • A webalkalmazás neve . Ez a webalkalmazás DNS-nevének részeként használt név a következő https://<app-name>.azurewebsites.netformában: .
  • Az alkalmazás fizikai futtatására kijelölt régió a világon.
  • Az alkalmazás futtatókörnyezeti verme . Itt választhatja ki az alkalmazáshoz használni kívánt Node-verziót.
  • Az alkalmazás üzemeltetési csomagja . 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 (egy logikai tárolóban) csoportosíthatja az alkalmazáshoz szükséges összes Azure-erőforrást.

Jelentkezzen be a Azure Portal, és kövesse az alábbi lépéseket a Azure App Service-erőforrások létrehozásához.

1. lépés: A Azure Portal:

  1. Írja be a "webalkalmazás-adatbázis" kifejezést a Azure Portal tetején található keresősávba.
  2. Válassza ki a Webalkalmazás + adatbázis címkével ellátott elemet a Marketplace fejléc alatt. Közvetlenül a létrehozási varázslóhoz is navigálhat.

Képernyőkép arról, hogyan keresheti meg a Webalkalmazás + Adatbázis létrehozása varázslót a felső eszköztár keresőmezőjében.

2. lépés: A Webalkalmazás és adatbázis létrehozása 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-expressjs-mongodb-tutorial nevet.
  2. Régió → Bármely Önhöz közeli Azure-régió.
  3. Adjamsdocs-expressjs-mongodb-XYZ nevet, ahol az XYZ három véletlenszerű karakterből áll. Ennek a névnek az Azure-on belül egyedinek kell lennie.
  4. A futtatókörnyezeti veremNode 16 LTS.
  5. Az alapszintű szolgáltatási csomag. Ha készen áll, később felskálázhatja az éles tarifacsomagot.
  6. A MongoDB-hez készült Azure Cosmos DB alapértelmezés szerint adatbázismotorként van kiválasztva. Az Azure Cosmos DB egy natív felhőbeli adatbázis, amely 100%-ban MongoDB-kompatibilis API-t kínál. Jegyezze fel az Ön számára létrehozott adatbázisnevet (<app-name-database>). Erre később még szüksége lesz.
  7. Válassza az Áttekintés + létrehozás lehetőséget.
  8. Az ellenőrzés befejezése után válassza a Létrehozás lehetőséget.

Képernyőkép egy új alkalmazás és adatbázis konfigurálásáról a Webalkalmazás + Adatbázis varázslóban.

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

  • Az erőforráscsoport → Az összes létrehozott erőforrás tárolója.
  • App Service terv → Meghatározza a App Service számítási erőforrásait. Létrejön egy Linux-csomag az Alapszintű csomagban.
  • App Service → Az alkalmazást jelöli, és a App Service csomagban fut.
  • A virtuális hálózat → az App Service alkalmazással integrált, és elkülöníti a háttérbeli hálózati forgalmat.
  • A privát végpont → a virtuális hálózatban lévő adatbázis-erőforrás hozzáférési végpontját.
  • Hálózati adapter → A privát végpont magánhálózati IP-címét jelöli.
  • A MongoDB-hez készült Azure Cosmos DB csak a privát végpont mögül → elérhető. A rendszer létrehoz egy adatbázist és egy felhasználót a kiszolgálón.
  • saját DNS zóna → Engedélyezi az Azure Cosmos DB-kiszolgáló DNS-feloldását a virtuális hálózaton.

Képernyőkép az üzembe helyezési folyamat befejezéséről.

2. Adatbázis-kapcsolat beállítása

A létrehozási varázsló már létrehozta a MongoDB URI-t, de az alkalmazásnak változóra DATABASE_URL és változóra DATABASE_NAME van szüksége. Ebben a lépésben az alkalmazáshoz szükséges formátummal hozza létre az alkalmazásbeállításokat .

1. lépés: A App Service lap bal oldali menüjében válassza a Konfiguráció lehetőséget.

Képernyőkép a konfigurációs lap megnyitásáról App Service.

2. lépés: A Konfiguráció lap Alkalmazásbeállítások lapján hozzon létre egy DATABASE_NAME beállítást:

  1. Válassza az Új alkalmazás beállítása lehetőséget.
  2. A Név mezőbe írja be a DATABASE_NAME.
  3. Az Érték mezőbe írja be az automatikusan létrehozott adatbázisnevet a létrehozási varázslóból, amely az msdocs-expressjs-mongodb-XYZ-database névhez hasonlóan néz ki.
  4. Válassza az OK lehetőséget.

Képernyőkép az automatikusan létrehozott kapcsolati sztring megtekintéséről.

3. lépés:

  1. Görgessen a lap aljára, és válassza ki a kapcsolati sztring MONGODB_URI. A létrehozási varázsló hozta létre.
  2. Az Érték mezőben válassza a Másolás gombot, és illessze be az értéket egy szövegfájlba a következő lépéshez. MongoDB kapcsolati sztring URI formátumban van.
  3. Válassza a Mégse lehetőséget.

Képernyőkép egy alkalmazásbeállítás létrehozásáról.

4. lépés:

  1. A 2. lépésben ismertetett lépésekkel hozzon létre egy DATABASE_URL nevű alkalmazásbeállítást, és állítsa az értéket a kapcsolati sztring másolt MONGODB_URI értékre (például mongodb://...).
  2. A felső menüsávon válassza a Mentés lehetőséget.
  3. Amikor a rendszer kéri, válassza a Folytatás lehetőséget.

Képernyőkép a beállítások konfigurációs oldalon való mentéséről.

3. Mintakód üzembe helyezése

Ebben a lépésben a GitHub üzembe helyezését fogja konfigurálni GitHub Actions használatával. Ez csak egy a App Service üzembe helyezésének számos módja közül, de nagyszerű módja annak is, hogy folyamatos integrációt biztosítsunk 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.

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

  1. Jelentkezzen be a GitHub-fiókjába.
  2. Nyissa meg a https://github.com/Azure-Samples/msdocs-nodejs-mongodb-azure-sample-app címet.
  3. Válassza az Elágazás lehetőséget.
  4. Válassza az Elágazás létrehozása lehetőséget.

Képernyőkép a GitHub-mintaadattár elágazásáról.

2. lépés: A GitHub lapon nyissa meg a Visual Studio Code-ot a böngészőben a . billentyű lenyomásával.

Képernyőkép arról, hogyan nyithatja meg a Visual Studio Code böngészőfelületét a GitHubon.

3. lépés: A Visual Studio Code böngészőben nyissa meg a config/connection.js böngészőt. A függvényben getConnectionInfo láthatja, hogy a MongoDB-kapcsolathoz korábban létrehozott alkalmazásbeállításokat használja a rendszer (DATABASE_URL és DATABASE_NAME).

Képernyőkép a Visual Studio Code-ról a böngészőben és egy megnyitott fájlról.

4. lépés: A App Service lap bal oldali menüjében válassza az Üzembe helyezési központ lehetőséget.

Képernyőkép az üzembe helyezési központ App Service való megnyitásáról.

5. lépés: Az Üzembe helyezési központ lapon:

  1. A Forrás területen válassza a GitHub lehetőséget. 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 a parancssort az Azure engedélyezéséhez.
  3. A Szervezet területen válassza ki a fiókját.
  4. Az Adattárban válassza az msdocs-nodejs-mongodb-azure-sample-app elemet.
  5. Az Ág területen válassza a lehetőséget.
  6. A felső menüben válassza a Mentés lehetőséget. App Service egy munkafolyamat-fájlt véglegesít a kiválasztott GitHub-adattárban a .github/workflows könyvtárban.

Képernyőkép a CI/CD konfigurálásáról GitHub Actions használatával.

6. lépés: Az Üzembe helyezési központ lapon:

  1. Válassza a Naplókat. Az üzembe helyezési futtatás már elindult.
  2. Az üzembe helyezési futtatás naplóelemében válassza a Naplók összeállítása/üzembe helyezése lehetőséget.

Képernyőkép arról, hogyan nyithatja meg az üzembehelyezési naplókat az üzembehelyezési központban.

7. lépés: A rendszer a GitHub-adattárba viszi, és látja, 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-futtatás befejezett állapotot jelenít meg. Körülbelül 15 percet vesz igénybe.

Képernyőkép egy folyamatban lévő GitHub-futtatásról.

4. Tallózás az alkalmazáshoz

1. lépés: A App Service lapon:

  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. Közvetlenül a következőre is navigálhat https://<app-name>.azurewebsites.net: .

Képernyőkép arról, hogyan indíthat el egy App Service a Azure Portal.

2. lépés: Adjon hozzá néhány feladatot a listához. Gratulálunk, biztonságos adatvezérelt Node.js alkalmazást futtat Azure App Service.

Képernyőkép a App Service futó Express.js alkalmazásról.

5. Diagnosztikai naplók streamelése

Azure App Service rögzíti a konzolon naplózott összes üzenetet, hogy segítséget nyújtson az alkalmazással kapcsolatos problémák diagnosztizálásában. A mintaalkalmazás mindegyik végpontján konzolnapló-üzeneteket ad ki, hogy bemutassa ezt a képességet. A végpont például egy üzenetet ad ki az adatbázisból lekért feladatok számáról, get és hibaüzenet jelenik meg, ha hiba történik.

router.get('/', function(req, res, next) {
  Task.find()
    .then((tasks) => {      
      const currentTasks = tasks.filter(task => !task.completed);
      const completedTasks = tasks.filter(task => task.completed === true);

      console.log(`Total tasks: ${tasks.length}   Current tasks: ${currentTasks.length}    Completed tasks:  ${completedTasks.length}`)
      res.render('index', { currentTasks: currentTasks, completedTasks: completedTasks });
    })
    .catch((err) => {
      console.log(err);
      res.send('Sorry! Something went wrong.');
    });
});

1. lépés: A App Service lapon:

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

Képernyőkép a natív naplók engedélyezéséről App Service a Azure Portal.

2. lépés: A bal oldali menüben válassza a Naplóstream lehetőséget. Megjelenik az alkalmazás naplói, beleértve a platformnaplókat és a tárolón belüli naplókat.

Képernyőkép a naplóstreamek Azure Portal való megtekintéséről.

6. Üzembe helyezett fájlok vizsgálata a Kudu használatával

Azure App Service egy Kudu nevű webalapú diagnosztikai konzolt biztosít, amellyel megvizsgálhatja a webalkalmazás kiszolgálói üzemeltetési környezetét. A Kudu használatával megtekintheti az Azure-ban üzembe helyezett fájlokat, áttekintheti az alkalmazás üzembehelyezési előzményeit, és akár SSH-munkamenetet is megnyithat az üzemeltetési környezetben.

1. lépés: A App Service lapon:

  1. A bal oldali menüben válassza a Speciális eszközök lehetőséget.
  2. Válassza az Ugrás lehetőséget. Közvetlenül a következőre is navigálhat https://<app-name>.scm.azurewebsites.net: .

Képernyőkép a App Service Kudu lapra való navigálásról.

2. lépés: A Kudu lapon válassza az Üzemelő példányok lehetőséget.

Képernyőkép a Kudu SCM-alkalmazás főoldaláról, amelyen az üzemeltetési környezettel kapcsolatos különböző információk láthatók.

Ha kódot helyezett üzembe a Git vagy a zip-alapú üzembe helyezés App Service, látni fogja a webalkalmazás üzembe helyezésének előzményeit.

Képernyőkép egy App Service alkalmazás JSON formátumú üzembe helyezési előzményeiről.

3. lépés: Vissza a Kudu kezdőlapjára, és válassza a Webhely wwwroot lehetőséget.

Képernyőkép a kiválasztott wwwroot webhelyről.

Megtekintheti az üzembe helyezett mappastruktúrát, és ide kattintva tallózhat és megtekintheti a fájlokat.

Képernyőkép a wwwroot könyvtárban üzembe helyezett fájlokról.

7. Erőforrások eltávolítása

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: A Azure Portal tetején található keresősávon:

  1. Írja be az erőforráscsoport nevét.
  2. Válassza ki az erőforráscsoportot.

Képernyőkép arról, hogyan kereshet és navigálhat egy erőforráscsoportra a Azure Portal.

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

Képernyőkép az erőforráscsoport törlése gomb helyéről a Azure Portal.

3. lépés:

  1. A törlés megerősítéséhez adja meg az erőforráscsoport nevét.
  2. Válassza a Törlés elemet.

Képernyőkép a Azure Portal egy erőforráscsoport törlését megerősítő párbeszédpanelről. :

Gyakori kérdések

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

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

Hogyan csatlakozni a virtuális hálózat mögött más eszközökkel védett Azure Cosmos DB-kiszolgálóhoz?

  • A parancssori eszközről való alapszintű hozzáféréshez az alkalmazás SSH-termináljáról futtatható mongosh . Az alkalmazás tárolója nem a következővel mongoshrendelkezik: , ezért manuálisan kell telepítenie. Ne feledje, hogy a telepített ügyfél nem marad meg az alkalmazás újraindítása során.
  • MongoDB GUI-ügyfélrő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, amely az egyik alhálózathoz csatlakozik, vagy egy helyszíni hálózatban lévő gép, amely helyek közötti VPN-kapcsolatot létesít az Azure-beli virtuális hálózattal.
  • Ha a MongoDB-felületről szeretne csatlakozni a portál Azure Cosmos DB felügyeleti oldaláról, a gépnek a virtuális hálózaton belül kell lennie. Ehelyett megnyithatja az Azure Cosmos DB-kiszolgáló tűzfalát a helyi gép IP-címéhez, de növeli a konfiguráció támadási felületét.

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

Vegyük példaként az automatikusan létrehozott munkafolyamat-fájlt App Service, és mindegyik git push elindít egy új buildet és üzembe helyezést. A GitHub-adattár helyi klónjából a kívánt frissítéseket leküldheti a GitHubra. Például:

git add .
git commit -m "<some-message>"
git push origin main

Miért olyan lassú a GitHub Actions üzembe helyezése?

A App Service automatikusan létrehozott munkafolyamat-fájlja meghatározza a build-then-deploy, kétfeladatos futtatásokat. Mivel minden feladat a saját tiszta környezetében fut, a munkafolyamat-fájl biztosítja, hogy a deploy feladat hozzáférhessen a build feladat fájljaihoz:

A kétfeladatos folyamat során a legtöbb időt az összetevők feltöltésével és letöltésével töltik le. Ha szeretné, egyszerűsítheti a munkafolyamat-fájlt úgy, hogy a két feladatot egybe egyesíti, így nincs szükség a feltöltési és letöltési lépésekre.

Következő lépések