Öğretici: MongoDB için Azure Cosmos DB ile Node.js bir web uygulaması bağlama (sanal çekirdek)
ŞUNLAR IÇIN GEÇERLIDIR: MongoDB sanal çekirdeği
Bu öğreticide, sanal çekirdek mimarisinde MongoDB için Azure Cosmos DB'ye bağlanan bir Node.js web uygulaması oluşturacaksınız. MongoDB, Express, React.js, Node.js (MERN) yığını, birçok modern web uygulaması oluşturmak için kullanılan popüler bir teknoloji koleksiyonudur. MongoDB için Azure Cosmos DB (sanal çekirdek) ile, zaten bildiğiniz MongoDB sürücülerini kullanarak yeni bir web uygulaması oluşturabilir veya mevcut bir uygulamayı geçirebilirsiniz. Bu öğreticide şunları yaptınız:
- Ortamınızı ayarlama
- MERN uygulamasını yerel mongoDB kapsayıcısıyla test edin
- MERN uygulamasını sanal çekirdek kümesiyle test edin
- MERN uygulamasını Azure Uygulaması Hizmetine dağıtma
Önkoşullar
Bu öğreticiyi tamamlamak için aşağıdaki kaynaklara ihtiyacınız vardır:
- Mevcut bir sanal çekirdek kümesi.
- Bir GitHub hesabı.
- GitHub, tüm kullanıcılar için ücretsiz Codespaces saatleri ile birlikte gelir.
Geliştirme ortamını yapılandırma
Geliştirme kapsayıcısı ortamı, bu projedeki her alıştırmayı tamamlamak için gereken tüm bağımlılıklarla kullanılabilir. Geliştirme kapsayıcısını GitHub Codespaces'ta veya Visual Studio Code kullanarak yerel olarak çalıştırabilirsiniz.
GitHub Codespaces, Kullanıcı arabirimi olarak Web için Visual Studio Code ile GitHub tarafından yönetilen bir geliştirme kapsayıcısı çalıştırır. En basit geliştirme ortamı için GitHub Codespaces'ı kullanarak bu eğitim modülünü tamamlamak için doğru geliştirici araçlarını ve bağımlılıklarını önceden yüklemiş olursunuz.
Önemli
Tüm GitHub hesapları Codespaces'ı her ay 2 çekirdek örneğiyle 60 saate kadar ücretsiz olarak kullanabilir.
GitHub deposunun dalında
azure-samples/msdocs-azure-cosmos-db-mongodb-mern-web-app
yeni bir GitHub Codespacemain
oluşturmak için işlemi başlatın.Codespace oluştur sayfasında codespace yapılandırma ayarlarını gözden geçirin ve ardından Yeni kod alanı oluştur'u seçin
Kod alanının başlamasını bekleyin. Bu başlatma işlemi birkaç dakika sürebilir.
Kod alanında yeni bir terminal açın.
Bu öğreticide kullandığınız araçların sürümlerini denetleyin.
docker --version node --version npm --version az --version
Not
Bu öğretici, ortamınıza önceden yüklenmiş her aracın aşağıdaki sürümlerini gerektirir:
Araç Sürüm Docker ≥ 20.10.0 Node.js ≥ 18.0150 NPM ≥ 9.5.0 Azure CLI ≥ 2.46.0 Terminali kapatın.
Bu öğreticideki kalan adımlar bu geliştirme kapsayıcısı bağlamında gerçekleşir.
MERN uygulamasının API'sini MongoDB kapsayıcısıyla test edin
Uygulamanın çalıştığını doğrulamak için yerel MongoDB kapsayıcısıyla örnek uygulamanın API'sini çalıştırarak başlayın.
Docker kullanarak bir MongoDB kapsayıcısı çalıştırın ve tipik MongoDB bağlantı noktasını (
27017
) yayımlayın.docker pull mongo:6.0 docker run --detach --publish 27017:27017 mongo:6.0
Yan çubukta MongoDB uzantısını seçin.
bağlantı dizesi
mongodb://localhost
kullanarak MongoDB uzantısına yeni bir bağlantı ekleyin.Bağlantı başarılı olduktan sonra data/products.mongodb playground dosyasını açın.
Betiği yürütmek için Tümünü çalıştır simgesini seçin.
Oyun alanı çalıştırması, yerel MongoDB koleksiyonundaki belgelerin listesiyle sonuçlanmalıdır. Çıktının kesilmiş bir örneği aşağıda verilmiştir.
[ { "_id": { "$oid": "640a146e89286b79b6628eef" }, "name": "Confira Watch", "category": "watches", "price": 105 }, { "_id": { "$oid": "640a146e89286b79b6628ef0" }, "name": "Diannis Watch", "category": "watches", "price": 98, "sale": true }, ... ]
Not
Nesne kimlikleri (
_id
) rastgele oluşturulur ve bu kesilmiş örnek çıktıdan farklı olacaktır.Sunucu/dizinde yeni bir .env dosyası oluşturun.
server/.env dosyasında bu değer için bir ortam değişkeni ekleyin:
Ortam değişkeni Değer CONNECTION_STRING
MongoDB için Azure Cosmos DB (sanal çekirdek) kümesine bağlantı dizesi. Şimdilik mongodb://localhost:27017?directConnection=true
kullanın.CONNECTION_STRING=mongodb://localhost:27017?directConnection=true
Terminalin bağlamını sunucu/klasör olarak değiştirin.
cd server
Node Paket Yöneticisi 'den (npm) bağımlılıkları yükleyin.
npm install
Node.js & Express uygulamasını başlatın.
npm start
API, bir dizi ürün belgesi döndürdüğünü doğrulamak için otomatik olarak bir tarayıcı penceresi açar.
Ek tarayıcı sekmesini/penceresini kapatın.
Terminali kapatın.
MERN uygulamasını MongoDB için Azure Cosmos DB (sanal çekirdek) kümesiyle test edin
Şimdi uygulamanın MongoDB için Azure Cosmos DB (sanal çekirdek) ile sorunsuz çalıştığını doğrulayalım. Bu görev için, MongoDB kabuğunu kullanarak önceden var olan kümeyi tohum verileriyle doldurun ve ardından API'nin bağlantı dizesi güncelleştirin.
Azure portalında (https://portal.azure.com ) oturum açın.
Mevcut MongoDB için Azure Cosmos DB (sanal çekirdek) küme sayfasına gidin.
MongoDB için Azure Cosmos DB (sanal çekirdek) kümesi sayfasında Bağlantı dizeleri gezinti menüsü seçeneğini belirleyin.
Değeri Bağlantı dizesi alanından kaydedin.
Önemli
Portaldaki bağlantı dizesi kullanıcı adı ve parola değerleri içermez. ve
<password>
yer tutucularını, kümeyi<user>
ilk oluşturduğunuzda kullandığınız kimlik bilgileriyle değiştirmeniz gerekir.Tümleşik geliştirme ortamınıza (IDE) geri dönün ve yeni bir terminal açın.
Komutunu ve daha önce kaydettiğiniz bağlantı dizesi kullanarak
mongosh
MongoDB Kabuğunu başlatın. ve<password>
yer tutucularını, kümeyi<user>
ilk oluştururken kullandığınız kimlik bilgileriyle değiştirdiğinizden emin olun.mongosh "<mongodb-cluster-connection-string>"
Not
bağlantı dizesi için belirli değerleri kodlamanız gerekebilir. Bu örnekte kümenin
msdocs-cosmos-tutorial
adı , kullanıcı adı veclusteradmin
parola ise şeklindedirP@ssw.rd
. Parolada karakterin@
kullanılarak%40
kodlanması gerekir. Burada parolanın doğru kodlamasıyla örnek bir bağlantı dizesi sağlanır.CONNECTION_STRING=mongodb+srv://clusteradmin:P%40ssw.rd@msdocs-cosmos-tutorial.mongocluster.cosmos.azure.com/?tls=true&authMechanism=SCRAM-SHA-256&retrywrites=false&maxIdleTimeMS=120000
Kabuğun içinde aşağıdaki komutları çalıştırarak veritabanınızı oluşturun, koleksiyonunuzu oluşturun ve başlangıç verileriyle tohum oluşturun.
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({});
Komutlar, yerel MongoDB koleksiyonundaki belgelerin listesiyle sonuçlanmalıdır. Çıktının kesilmiş bir örneği aşağıda verilmiştir.
[ { "_id": { "$oid": "640a146e89286b79b6628eef" }, "name": "Confira Watch", "category": "watches", "price": 105 }, { "_id": { "$oid": "640a146e89286b79b6628ef0" }, "name": "Diannis Watch", "category": "watches", "price": 98, "sale": true }, ... ]
Not
Nesne kimlikleri (
_id
) rastgele oluşturulur ve bu kesilmiş örnek çıktıdan farklı olacaktır.MongoDB kabuğundan çıkın.
exit
İstemci/ dizinde yeni bir .env dosyası oluşturun.
client/.env dosyasında bu değer için bir ortam değişkeni ekleyin:
Ortam değişkeni Değer CONNECTION_STRING
MongoDB için Azure Cosmos DB (sanal çekirdek) kümesine bağlantı dizesi. Mongo kabuğunda kullandığınız bağlantı dizesi kullanın. CONNECTION_STRING=<your-connection-string>
Terminalin bağlamını sunucu/klasör olarak değiştirerek, Node Paket Yöneticisi (npm) bağımlılıklarını yükleyerek ve ardından uygulamayı başlatarak uygulamanın veritabanı hizmetini kullandığını doğrulayın.
cd server npm install npm start
API, bir dizi ürün belgesi döndürdüğünü doğrulamak için otomatik olarak bir tarayıcı penceresi açar.
Ek tarayıcı sekmesini/penceresini kapatın. Ardından terminali kapatın.
MERN uygulamasını Azure Uygulaması Hizmetine dağıtma
Uygulamanın uçtan uca çalıştığını kanıtlamak için hizmeti ve istemciyi Azure Uygulaması Hizmetine dağıtın. Kimlik bilgileri ve API uç noktalarıyla ortam değişkenlerini depolamak için web uygulamalarında gizli dizileri kullanın.
Tümleşik geliştirme ortamınızda (IDE) yeni bir terminal açın.
resourceGroupName adlı önceden var olan kaynak grubunun adı için bir kabuk değişkeni oluşturun.
# Variable for resource group name resourceGroupName="<existing-resource-group>"
serverAppName ve clientAppName adlı iki web uygulaması için kabuk değişkenleri oluşturun.
# 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"
Henüz yapmadıysanız komutunu kullanarak
az login --use-device-code
Azure CLI'da oturum açın.Geçerli çalışma dizinini sunucu/yol olarak değiştirin.
cd server
ile
az webapp up
MERN uygulamasının sunucu bileşeni için yeni bir web uygulaması oluşturun.az webapp up \ --resource-group $resourceGroupName \ --name $serverAppName \ --sku F1 \ --runtime "NODE|18-lts"
ile
az webapp config connection-string set
adlıCONNECTION_STRING
sunucu web uygulaması için yeni bir bağlantı dizesi ayarı oluşturun. Bu öğreticinin önceki bölümlerinde MongoDB kabuğu ve .env dosyasıyla kullandığınız bağlantı dizesi için aynı değeri kullanın.az webapp config connection-string set \ --resource-group $resourceGroupName \ --name $serverAppName \ --connection-string-type custom \ --settings "CONNECTION_STRING=<mongodb-connection-string>"
ile
az webapp show
sunucu web uygulamasının URI'sini alın ve d serverUri adlı bir kabuk değişkeninde depolayın.serverUri=$(az webapp show \ --resource-group $resourceGroupName \ --name $serverAppName \ --query hostNames[0] \ --output tsv)
Sunucu web uygulamasının
open-cli
URI'sini kullanarak bir tarayıcı penceresi açmak için Ile NuGet'tekinpx
paket ve komutu kullanın. Sunucu uygulamasının MongoDB (sanal çekirdek) kümesinden JSON dizi verilerinizi döndürdüğünü doğrulayın.npx open-cli "https://$serverUri/products" --yes
İpucu
Bazen dağıtımlar zaman uyumsuz olarak tamamlanabilir. Beklediğiniz şeyi görmüyorsanız, bir dakika daha bekleyin ve tarayıcı pencerenizi yenileyin.
Çalışma dizinini istemci/yol olarak değiştirin.
cd ../client
ile
az webapp up
MERN uygulamasının istemci bileşeni için yeni bir web uygulaması oluşturun.az webapp up \ --resource-group $resourceGroupName \ --name $clientAppName \ --sku F1 \ --runtime "NODE|18-lts"
ile
az webapp config appsettings set
adlıREACT_APP_API_ENDPOINT
istemci web uygulaması için yeni bir uygulama ayarı oluşturun. serverUri kabuk değişkeninde depolanan sunucu API'sinin uç noktasını kullanın.az webapp config appsettings set \ --resource-group $resourceGroupName \ --name $clientAppName \ --settings "REACT_APP_API_ENDPOINT=https://$serverUri"
ile
az webapp show
istemci web uygulamasının URI'sini alın ve d clientUri adlı bir kabuk değişkeninde depolayın.clientUri=$(az webapp show \ --resource-group $resourceGroupName \ --name $clientAppName \ --query hostNames[0] \ --output tsv)
İstemci web uygulamasının
open-cli
URI'sini kullanarak bir tarayıcı penceresi açmak için ile NuGet'tekinpx
paket ve komutu kullanın. İstemci uygulamasının sunucu uygulamasının API'sinden verileri işlediğini doğrulayın.npx open-cli "https://$clientUri" --yes
İpucu
Bazen dağıtımlar zaman uyumsuz olarak tamamlanabilir. Beklediğiniz şeyi görmüyorsanız, bir dakika daha bekleyin ve tarayıcı pencerenizi yenileyin.
Terminali kapatın.
Kaynakları temizleme
Kendi aboneliğinizde çalışırken, bir projenin sonunda artık ihtiyacınız olmayan kaynakları kaldırmak iyi bir fikirdir. Çalışır durumda bırakılan kaynaklar maliyetlerin artmasına neden olabilir. Kaynakları teker teker silebilir veya tüm kaynak grubunu silerek kaynak kümesinin tamamını kaldırabilirsiniz.
Kaynak grubunun tamamını silmek için kullanın
az group delete
.az group delete \ --name $resourceGroupName \ --yes
kaynak grubunun kullanılarak
az group list
silindiğini doğrulayın.az group list
Geliştirme ortamını temizleme
Ayrıca geliştirme ortamınızı temizlemek veya normal durumuna geri döndürmek isteyebilirsiniz.
GitHub Codespaces ortamını silmek, hesabınız için elde ettiğiniz ücretsiz çekirdek başına saat yetkilendirmesi miktarını en üst düzeye çıkarmanızı sağlar.
GitHub Codespaces panosunda (https://github.com/codespaces ) oturum açın.
GitHub deposundan
azure-samples/msdocs-azure-cosmos-db-mongodb-mern-web-app
alınan şu anda çalışan kod alanlarınızı bulun.Codespace bağlam menüsünü açın ve sil'i seçin.
Sonraki adım
MongoDB (sanal çekirdek) kümesi için ilk uygulamanızı oluşturduğunuza göre, verilerinizi Azure Cosmos DB'ye geçirmeyi öğrenin.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin