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.
Ebben az oktatóanyagban létrehoz egy Node.js webalkalmazást, amely csatlakozik az Azure DocumentDB-hez. A MongoDB, Express, React.js, Node.js (MERN) stack a modern webalkalmazások fejlesztésére használt népszerű technológiagyűjtemény. Az Azure DocumentDB-vel létrehozhat egy új webalkalmazást, vagy migrálhat egy meglévő alkalmazást a már ismert MongoDB-illesztőprogramokkal. Ebben az útmutatóban Ön:
- Saját környezet beállítása
- A MERN-alkalmazás tesztelése helyi MongoDB-tárolóval
- A MERN-alkalmazás tesztelése klaszterrel
- A MERN-alkalmazás üzembe helyezése az Azure App Service-ben
Előfeltételek
Az oktatóanyag elvégzéséhez a következő erőforrásokra van szüksége:
Azure-előfizetés
- Ha nem rendelkezik Azure-előfizetéssel, hozzon létre egy ingyenes fiókot
Meglévő Azure DocumentDB-fürt
- Ha nincs klasztere, hozzon létre egy új klasztert
- GitHub-fiók GitHub Codespaces-jogosultsággal
A fejlesztési környezet konfigurálása
A fejlesztési tárolókörnyezet minden olyan függőséggel elérhető, amely a projekt minden gyakorlatának elvégzéséhez szükséges. A fejlesztési tárolót a GitHub Codespacesben vagy helyileg a Visual Studio Code használatával futtathatja.
A GitHub Codespaces egy, a GitHub által felügyelt fejlesztői tárolót futtat a Webes Visual Studio Code-tal felhasználói felületként. A legegyszerűbb fejlesztési környezethez használja a GitHub Codespacest, hogy a megfelelő fejlesztői eszközök és függőségek legyenek előre telepítve a képzési modul elvégzéséhez.
Fontos
Minden GitHub-fiók legfeljebb 60 órán át használhatja a Codespace-eket havonta két alapvető példánnyal.
Indítsa el az új GitHub Codespace létrehozásának folyamatát a
mainágon aazure-samples/msdocs-azure-cosmos-db-mongodb-mern-web-appGitHub-adattárban.A Kódtér létrehozása lapon tekintse át a kódtér konfigurációs beállításait, majd válassza az Új kódtér létrehozása lehetőséget
Képernyőkép a megerősítő képernyőről egy új codespace létrehozása előtt.
Várja meg, amíg a kódolási környezet elindul. Ez az indítási folyamat eltarthat néhány percig.
Nyisson meg egy új terminált a kódtérben.
Ellenőrizze az oktatóanyagban használt eszközök verzióit.
docker --version node --version npm --version az --versionMegjegyzés:
Ez az oktatóanyag az egyes eszközök következő verzióit igényli, amelyek előre telepítve vannak a környezetben:
Tool verzió Kikötőmunkás ≥ 20.10.0 Node.js ≥ 18.0150 npm ≥ 9.5.0 Azure CLI (Az Azure parancssori felülete) ≥ 2.46.0 Zárja be a terminált.
Az oktatóanyag további lépései ennek a fejlesztési tárolónak a kontextusában történnek.
A MERN-alkalmazás API-jának tesztelése a MongoDB-tárolóval
Először futtassa a mintaalkalmazás API-ját a helyi MongoDB-tárolóval annak ellenőrzéséhez, hogy az alkalmazás működik-e.
Futtasson egy MongoDB-tárolót a Dockerrel, és tegye közzé a tipikus MongoDB-portot (
27017).docker pull mongo:6.0 docker run --detach --publish 27017:27017 mongo:6.0Az oldalsávon válassza a MongoDB-bővítményt.
Adjon hozzá új kapcsolatot a MongoDB-bővítményhez a kapcsolati sztring
mongodb://localhosthasználatával.
Ha a kapcsolat sikeres, nyissa meg a data/products.mongodb playground fájlt.
A szkript végrehajtásához válassza az Összes futtatása ikont.
A játszótér futtatásának a helyi MongoDB-gyűjteményben lévő dokumentumok listáját kell eredményeznie. Íme egy csonkolt példa a kimenetre.
[ { "_id": { "$oid": "640a146e89286b79b6628eef" }, "name": "Confira Watch", "category": "watches", "price": 105 }, { "_id": { "$oid": "640a146e89286b79b6628ef0" }, "name": "Diannis Watch", "category": "watches", "price": 98, "sale": true }, ... ]Megjegyzés:
Az objektumazonosítók (
_id) véletlenszerűen jönnek létre, és eltérnek a csonkolt példakimenettől.A kiszolgálón/ könyvtárban hozzon létre egy új .env fájlt.
A server/.env fájlban adjon hozzá egy környezeti változót ehhez az értékhez:
Környezeti változó Érték CONNECTION_STRINGAz Azure DocumentDB-klaszter kapcsolati karakterlánca. Egyelőre használja mongodb://localhost:27017?directConnection=true.CONNECTION_STRING=mongodb://localhost:27017?directConnection=trueMódosítsa a terminál környezetét a szerver/ mappára.
cd serverTelepítse a függőségeket a Node Package Managerből (npm).
npm installIndítsa el a Node.js > Express alkalmazást.
npm startAz API automatikusan megnyitja a böngészőablakot annak ellenőrzéséhez, hogy termékdokumentumok tömbje jelenik-e meg.
Zárja be az extra böngészőlapot/ablakot.
Zárja be a terminált.
A MERN-alkalmazás tesztelése az Azure DocumentDB-fürttel
Most ellenőrizze, hogy az alkalmazás zökkenőmentesen működik-e az Azure DocumentDB-vel. Ehhez a feladathoz töltse ki a meglévő fürtöt magadattal a MongoDB shell használatával, majd frissítse az API kapcsolati sztringjét.
Jelentkezzen be az Azure Portalra (https://portal.azure.com).
Lépjen a meglévő Azure DocumentDB-klaszter oldalára.
Az Azure DocumentDB-fürt lapján válassza a kapcsolati karaktersorok menü opciót.
Jegyezze fel a Kapcsolat sztring mező értékét.
Fontos
A portál kapcsolati sztringje nem tartalmazza a felhasználónevet és a jelszót. A
<user>és<password>helyőrzőket azokra a hitelesítő adatokra kell cserélni, amelyeket eredetileg a fürt létrehozásakor használt.Nyisson meg egy új terminált az integrált fejlesztési környezetben (IDE).
Indítsa el a MongoDB Shellt a
mongoshkorábban rögzített paranccsal és kapcsolati sztringgel. Győződjön meg arról, hogy a<user>és<password>helyőrzőket lecseréli a hitelesítő adatokra, amelyeket a fürt létrehozásakor eredetileg használt.mongosh "<mongodb-cluster-connection-string>"Megjegyzés:
A kapcsolati sztring adott értékeit is kódolnia kell. Ebben a példában a fürt
msdocs-azure-documentdb-tutorialneve, a felhasználónévclusteradminés a jelszóP@ssw.rd. A jelszóban a@karaktert kódolni kell a következővel%40: . Itt egy példa kapcsolati sztring található a jelszó helyes kódolásával.CONNECTION_STRING=mongodb+srv://clusteradmin:P%40ssw.rd@msdocs-azure-documentdb-tutorial.mongocluster.cosmos.azure.com/?tls=true&authMechanism=SCRAM-SHA-256&retrywrites=false&maxIdleTimeMS=120000A rendszerhéjon belül futtassa az alábbi parancsokat az adatbázis létrehozásához, a gyűjtemény létrehozásához és a kezdőadatokkal való magvetéshez.
use('cosmicworks'); db.products.drop(); db.products.insertMany([ { name: "Confira Watch", category: "watches", price: 105.00 }, { name: "Diannis Watch", category: "watches", price: 98.00, sale: true }, { name: "Sterse Gloves", category: "gloves", price: 42.00 }, { name: "Peache Sunglasses", category: "eyewear", price: 32.00, sale: false, sizes: [ "S", "M", "L" ] }, { name: "Icento Pack", category: "bags", price: 58.00 }, { name: "Iroowl Bracelet", category: "watches", price: 66.00 }, { name: "Glaark Bag", category: "bags", price: 56.00, sale: true }, { name: "Windry Mittens", category: "gloves", price: 35.00 }, { name: "Tuvila Hat", category: "hats", price: 120.00 }, { name: "Klinto Hat", category: "hats", subcategory: "hats-beanies", price: 65.00 } ]); db.products.find({});A parancsoknak a helyi MongoDB-gyűjtemény dokumentumlistáját kell eredményeznie. Íme egy csonkolt példa a kimenetre.
[ { "_id": { "$oid": "640a146e89286b79b6628eef" }, "name": "Confira Watch", "category": "watches", "price": 105 }, { "_id": { "$oid": "640a146e89286b79b6628ef0" }, "name": "Diannis Watch", "category": "watches", "price": 98, "sale": true }, ... ]Megjegyzés:
Az objektumazonosítók (
_id) véletlenszerűen jönnek létre, és eltérnek a csonkolt példakimenettől.Lépjen ki a MongoDB-rendszerhéjból.
exitAz ügyfélben/ könyvtárban hozzon létre egy új .env fájlt.
Az ügyfél/.env fájlban adjon hozzá egy környezeti változót ehhez az értékhez:
Környezeti változó Érték CONNECTION_STRINGAz Azure DocumentDB-fürt kapcsolati karakterlánca. Használja ugyanazt a kapcsolati karakterláncot, amelyet a mongo konzollal használt. CONNECTION_STRING=<your-connection-string>Ellenőrizze, hogy az alkalmazás az adatbázis-szolgáltatást használja-e a terminál környezetének kiszolgálóra/ mappára való módosításával, a Node Package Manager (npm) függőségeinek telepítésével, majd az alkalmazás elindításával.
cd server npm install npm startAz API automatikusan megnyitja a böngészőablakot annak ellenőrzéséhez, hogy termékdokumentumok tömbje jelenik-e meg.
Zárja be az extra böngészőlapot/ablakot. Ezután zárja be a terminált.
A MERN-alkalmazás üzembe helyezése az Azure App Service-ben
Annak bizonyítása, hogy az alkalmazás a szolgáltatás és az ügyfél Azure App Service-ben való üzembe helyezésével a végpontok közötti működést biztosítja. Titkos kódok használata a webalkalmazásokban környezeti változók hitelesítő adatokkal és API-végpontokkal való tárolásához.
Az integrált fejlesztési környezetben (IDE) nyisson meg egy új terminált.
Hozzon létre egy rendszerhéj-változót egy létező "resourceGroupName" nevű erőforráscsoport nevéhez.
# Variable for resource group name resourceGroupName="<existing-resource-group>"Hozzon létre rendszerhéjváltozókat a serverAppName és a clientAppName nevű két webalkalmazáshoz.
# Variable for randomnly generated suffix let suffix=$RANDOM*$RANDOM # Variable for web app names with a randomnly generated suffix serverAppName="server-app-$suffix" clientAppName="client-app-$suffix"Ha még nem tette meg, jelentkezzen be az Azure CLI-be a
az login --use-device-codeparanccsal.Módosítsa az aktuális munkakönyvtárat a kiszolgáló/ útvonalra.
cd serverHozzon létre egy új webalkalmazást a MERN-alkalmazás kiszolgálóösszetevője számára a következővel
az webapp up: .az webapp up \ --resource-group $resourceGroupName \ --name $serverAppName \ --sku F1 \ --runtime "NODE|18-lts"Hozzon létre egy új kapcsolati karakterlánc beállítást a szerver webalkalmazáshoz
CONNECTION_STRINGaz webapp config connection-string set. Használja ugyanazt az értéket a MongoDB shellhez és a .env fájlhoz használt kapcsolati sztringhez az oktatóanyag korábbi részében.az webapp config connection-string set \ --resource-group $resourceGroupName \ --name $serverAppName \ --connection-string-type custom \ --settings "CONNECTION_STRING=<mongodb-connection-string>"Kérje le a kiszolgálói webalkalmazás URI-ját
az webapp show, és tárolja egy d serverUri nevű rendszerhéjváltozóban.serverUri=$(az webapp show \ --resource-group $resourceGroupName \ --name $serverAppName \ --query hostNames[0] \ --output tsv)open-cliA NuGet csomagjával és parancsávalnpxnyisson meg egy böngészőablakot a kiszolgáló webalkalmazás URI-jával. Ellenőrizze, hogy a kiszolgálóalkalmazás visszaadja-e a JSON-tömb adatait a fürtből.npx open-cli "https://$serverUri/products" --yesJótanács
Néha az üzembe helyezések aszinkron fejeződhetnek be. Ha nem látja, amit vár, várjon még egy percet, és frissítse a böngészőablakot.
Módosítsa a munkakönyvtárat a client/ útvonalra.
cd ../clientHozzon létre egy új webalkalmazást a MERN-alkalmazás ügyfélösszetevője számára a következővel
az webapp up: .az webapp up \ --resource-group $resourceGroupName \ --name $clientAppName \ --sku F1 \ --runtime "NODE|18-lts"Hozzon létre egy új alkalmazásbeállítást a következővel elnevezett
REACT_APP_API_ENDPOINTügyfél-webalkalmazáshozaz webapp config appsettings set: . Használja a serverUri rendszerhéj változóban tárolt kiszolgáló API-végpontot.az webapp config appsettings set \ --resource-group $resourceGroupName \ --name $clientAppName \ --settings "REACT_APP_API_ENDPOINT=https://$serverUri"Kérje be az ügyfélalkalmazás URI-ját a
az webapp showsegítségével, és tárolja el egy d clientUri nevű shell-változóban.clientUri=$(az webapp show \ --resource-group $resourceGroupName \ --name $clientAppName \ --query hostNames[0] \ --output tsv)open-cliA NuGet csomagjával és parancsávalnpxnyisson meg egy böngészőablakot az ügyfél webalkalmazás URI-jával. Ellenőrizze, hogy az ügyfélalkalmazás adatokat jelenít-e meg a kiszolgálóalkalmazás API-jából.npx open-cli "https://$clientUri" --yesJótanács
Néha a telepítések aszinkron módon befejeződhetnek. Ha nem látja, amit vár, várjon még egy percet, és frissítse a böngészőablakot.
Zárja be a terminált.
Erőforrások tisztítása
Ha a saját előfizetésedben dolgozol, a projekt végén célszerű eltávolítani azokat az erőforrásokat, amelyekre már nincs szükséged. A továbbra is futó erőforrások pénzbe kerülhetnek. Az erőforrásokat törölheti egyesével, vagy az erőforráscsoport törlésével eltávolíthatja a benne lévő összes erőforrást is.
A teljes erőforráscsoport törléséhez használja a következőt
az group delete: .az group delete \ --name $resourceGroupName \ --yesEllenőrizze, hogy az erőforráscsoport törölve lett-e a következővel
az group list: .az group list
Fejlesztői környezet tisztítása
Emellett érdemes lehet megtisztítani a fejlesztési környezetet, vagy vissza kell állítani a jellemző állapotba.
A GitHub Codespaces-környezet törlése biztosítja, hogy maximálisan kihasználható legyen a fiókhoz tartozó ingyenes óránkénti jogosultság.
Jelentkezzen be a GitHub Codespaces irányítópultjára (https://github.com/codespaces).
Keresse meg a Jelenleg futó fejlesztői tárolót, amely a
azure-samples/msdocs-azure-cosmos-db-mongodb-mern-web-appGitHub-adattárból származik.
Nyissa meg a kódtér helyi menüjét, majd válassza a Törlés lehetőséget.
Képernyőkép egyetlen kódtér helyi menüjéről, amelyen a törlési lehetőség ki van emelve.
Képernyőkép az új terminál megnyitására vonatkozó menübeállításról.