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.
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.net
formá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:
- Írja be a "webalkalmazás-adatbázis" kifejezést a Azure Portal tetején található keresősávba.
- 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.
2. lépés: A Webalkalmazás és adatbázis létrehozása 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-expressjs-mongodb-tutorial nevet.
- Régió → Bármely Önhöz közeli Azure-régió.
- Adja → msdocs-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.
- A futtatókörnyezeti verem → Node 16 LTS.
- Az alapszintű szolgáltatási csomag →. Ha készen áll, később felskálázhatja az éles tarifacsomagot.
- 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.
- 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é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.
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.
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:
- Válassza az Új alkalmazás beállítása lehetőséget.
- A Név mezőbe írja be a DATABASE_NAME.
- 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.
- Válassza az OK lehetőséget.
3. lépés:
- Görgessen a lap aljára, és válassza ki a kapcsolati sztring MONGODB_URI. A létrehozási varázsló hozta létre.
- 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.
- Válassza a Mégse lehetőséget.
4. lépés:
- 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áulmongodb://...
). - A felső menüsávon válassza a Mentés lehetőséget.
- Amikor a rendszer kéri, válassza a Folytatás lehetőséget.
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:
- Jelentkezzen be a GitHub-fiókjába.
- Nyissa meg a https://github.com/Azure-Samples/msdocs-nodejs-mongodb-azure-sample-app címet.
- Válassza az Elágazás lehetőséget.
- Válassza az Elágazás létrehozása lehetőséget.
2. lépés: A GitHub lapon nyissa meg a Visual Studio Code-ot a böngészőben a .
billentyű lenyomásával.
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
).
4. lépés: A App Service lap bal oldali menüjében válassza az Üzembe helyezési központ lehetőséget.
5. lépés: Az Üzembe helyezési központ lapon:
- 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.
- Jelentkezzen be a GitHub-fiókjába, és kövesse a parancssort az Azure engedélyezéséhez.
- A Szervezet területen válassza ki a fiókját.
- Az Adattárban válassza az msdocs-nodejs-mongodb-azure-sample-app elemet.
- Az Ág területen válassza a fő lehetőséget.
- 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.
6. lépés: Az Üzembe helyezési központ lapon:
- Válassza a Naplókat. Az üzembe helyezési futtatás már elindult.
- Az üzembe helyezési futtatás naplóelemében válassza a Naplók összeállítása/üzembe helyezése lehetőséget.
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.
4. Tallózás az alkalmazáshoz
1. lépés: A App Service lapon:
- A bal oldali menüben válassza az Áttekintés lehetőséget.
- 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
: .
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.
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:
- A bal oldali menüben válassza App Service naplókat.
- Az Alkalmazásnaplózás területen válassza a Fájlrendszer lehetőséget.
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.
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:
- A bal oldali menüben válassza a Speciális eszközök lehetőséget.
- Válassza az Ugrás lehetőséget. Közvetlenül a következőre is navigálhat
https://<app-name>.scm.azurewebsites.net
: .
2. lépés: A Kudu lapon válassza az Üzemelő példányok lehetőséget.
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.
3. lépés: Vissza a Kudu kezdőlapjára, és válassza a Webhely wwwroot lehetőséget.
Megtekintheti az üzembe helyezett mappastruktúrát, és ide kattintva tallózhat és megtekintheti a fájlokat.
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:
- Írja be az erőforráscsoport nevét.
- Válassza ki az erőforráscsoportot.
2. lépés: Az erőforráscsoport lapon válassza az Erőforráscsoport törlése lehetőséget.
3. lépés:
- A törlés megerősítéséhez adja meg az erőforráscsoport nevét.
- Válassza a Törlés elemet.
Gyakori kérdések
- Mennyibe kerül ez a beállítás?
- Hogyan csatlakozni a virtuális hálózat mögött más eszközökkel védett Azure Cosmos DB-kiszolgálóhoz?
- Hogyan működik a helyi alkalmazásfejlesztés GitHub Actions?
- Miért olyan lassú a GitHub Actions üzembe helyezése?
Mennyibe kerül ez a beállítás?
A létrehozási erőforrások díjszabása a következő:
- A App Service csomag alapszintű szinten jön létre, és fel- vagy leskálázható. Lásd App Service díjszabását.
- Az Azure Cosmos DB-kiszolgáló egyetlen régióban jön létre, és más régiókba is terjeszthető. Lásd: Az Azure Cosmos DB díjszabása.
- 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. Lásd: Az Azure Virtual Network díjszabása.
- A privát DNS-zóna kis díjat számít fel. Lásd: Az Azure DNS díjszabása.
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ővelmongosh
rendelkezik: , 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 feladat végén töltse fel a
build
fájlokat összetevőként. - A feladat elején
deploy
töltse le az összetevőket.
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.