Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Ş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ı yapacaksı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 vCore 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
Her alıştırmayı tamamlamak için gereken tüm bağımlılıkları içeren bir geliştirme kapsayıcı ortamı sağlanmıştır. 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.
azure-samples/msdocs-azure-cosmos-db-mongodb-mern-web-app
GitHub deposununmain
dalında yeni bir GitHub Codespace 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 (vCore) 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 Azure Cosmos DB for MongoDB (vCore) 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.
Bağlantı dizesi alanındaki değeri kaydedin.
Önemli
Portaldaki bağlantı dizesi kullanıcı adı ve parola değerleri içermez.
<user>
ve<password>
yer tutucuları, kümeyi 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.
mongosh
komutunu ve daha önce kaydettiğiniz bağlantı dizesini kullanarak MongoDB Kabuğunu başlatın. Kümeyi ilk oluştururken kullandığınız kimlik bilgileriyle<user>
ve<password>
yer tutucularını 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@
karakteri%40
kullanılarak 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
Azure Cosmos DB (vCore) kümesi için MongoDB 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. Ortam değişkenlerini kimlik bilgileri ve API uç noktalarıyla depolamak için web uygulamalarında gizli bilgileri 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
CONNECTION_STRING
adlıaz webapp config connection-string set
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)
NuGet'teki
npx
paket ve komut ile sunucu web uygulamasınınopen-cli
URI'sini kullanarak bir tarayıcı penceresi açı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
REACT_APP_API_ENDPOINT
adlıaz webapp config appsettings set
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)
NuGet'teki
npx
paketini ve komutunu, istemci web uygulaması içinopen-cli
URI'siyle bir tarayıcı penceresi açmak amacıyla 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 sana pahalıya mal 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
az group list
kullanılarak 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 aktif olan 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.