Aracılığıyla paylaş


Öğretici: Azure'a Node.js + MongoDB web uygulaması dağıtma

Azure App Service , Linux işletim sistemini kullanarak yüksek oranda ölçeklenebilir, kendi kendine düzeltme eki uygulamalı bir web barındırma hizmeti sağlar. Bu öğreticide, Azure App Service'te MongoDB için Azure Cosmos DB veritabanına bağlı güvenli bir Node.js uygulamasının nasıl oluşturulacağı gösterilmektedir. İşiniz bittiğinde, Linux'ta Azure Uygulaması Hizmeti üzerinde çalışan bir Express.js uygulamanız olur.

Node.js uygulamasının veriyi Cosmos DB'de depolayışını gösteren ekran görüntüsü.

Bu öğreticide aşağıdakilerin nasıl yapılacağını öğreneceksiniz:

  • MongoDB API'siyle Azure Uygulaması Hizmeti ve Azure Cosmos DB için varsayılan olarak güvenli bir mimari oluşturun.
  • Yönetilen kimlik ve Key Vault başvurularını kullanarak bağlantı gizli dizilerinin güvenliğini sağlama.
  • GitHub deposundan App Service'e Node.js örnek bir uygulama dağıtın.
  • Uygulama kodunda App Service uygulama ayarlarına erişin.
  • Güncelleştirmeler yapın ve uygulama kodunu yeniden dağıtın.
  • Tanılama günlüklerini App Service'ten akışla aktarabilirsiniz.
  • Uygulamayı Azure portalında yönetin.
  • Azure Geliştirici CLI'sını kullanarak aynı mimariyi sağlayın ve dağıtın.
  • GitHub Codespaces ve GitHub Copilot ile geliştirme iş akışınızı iyileştirin.

Önkoşullar

Sona atla

Bu öğreticide örnek uygulamayı hızla dağıtabilir ve Azure'da çalıştığını görebilirsiniz. Azure Cloud Shell'de sadece aşağıdaki komutları çalıştırın ve istemleri takip edin:

mkdir msdocs-nodejs-mongodb-azure-sample-app
cd msdocs-nodejs-mongodb-azure-sample-app
azd init --template msdocs-nodejs-mongodb-azure-sample-app
azd up

1. Örneği çalıştırın

İlk olarak, başlangıç noktası olarak örnek bir veri temelli uygulama ayarlarsınız. Kolaylık sağlamak için örnek depo bir geliştirme kapsayıcısı yapılandırması içerir. Geliştirme kapsayıcısı veritabanı, önbellek ve örnek uygulamanın ihtiyaç duyduğu tüm ortam değişkenleri dahil olmak üzere bir uygulama geliştirmek için ihtiyacınız olan her şeye sahiptir. Geliştirme kapsayıcısı GitHub kod alanında çalıştırılabilir; başka bir deyişle örneği web tarayıcısıyla herhangi bir bilgisayarda çalıştırabilirsiniz.

1. Adım: Yeni bir tarayıcı penceresinde:

  1. GitHub hesabınıza giriş yapın.
  2. Şuraya gidin: https://github.com/Azure-Samples/msdocs-nodejs-mongodb-azure-sample-app/fork
  3. Yalnızca ana dalı kopyala seçimini kaldırın. Tüm dalları istiyorsun.
  4. Çatal oluştur'u seçin.

2. Adım: GitHub çatalında:

  1. Başlangıç dalı için main>starter-no-infra öğesini seçin. Bu dal yalnızca örnek projeyi içerir ve Azure ile ilgili dosya veya yapılandırma içermez.
  2. Kod>Starter-no-infra üzerinde Kod Alanı Oluştur'u seçin. Kod alanının ayarlanması birkaç dakika sürer.

Adım 3: Kod alanı terminalinde:

  1. npm install && npm start'i çalıştırın.
  2. Bildirimi Your application running on port 3000 is available.gördüğünüzde Tarayıcıda Aç'ı seçin. Örnek uygulamayı yeni bir tarayıcı sekmesinde görmeniz gerekir. Express.js uygulamasını durdurmak için yazın Ctrl+C.

İpucu

GitHub Copilot'a bu depo hakkında soru sorabilirsiniz. Örneğin:

  • @workspace Bu proje ne yapar?
  • @workspace .devcontainer klasörü ne yapar?

Sorun mu yaşıyorsunuz? Sorun Giderme bölümüne bakın.

2. App Service ve Azure Cosmos DB oluşturma

Bu adımda Azure kaynaklarını oluşturursunuz. Bu öğreticide kullanılan adımlar, App Service ve MongoDB için Azure Cosmos DB'yi içeren varsayılan olarak güvenli bir kaynak kümesi oluşturur. Oluşturma işlemi için şunları belirteceksiniz:

  • Web uygulamasının Adı . Uygulamanızın DNS adının bir parçası olarak kullanılır.
  • Uygulamayı dünyada fiziksel olarak çalıştırılacak Bölge . Ayrıca uygulamanızın DNS adının bir parçası olarak da kullanılır.
  • Uygulamanın Çalışma Zamanı yığını . Burada, uygulamanız için kullanılacak Node sürümünü seçersiniz.
  • Uygulama için Barındırma planı . Bu, uygulamanız için özellik kümesini ve ölçeklendirme kapasitesini içeren fiyatlandırma katmanıdır.
  • Uygulamanın Kaynak Grubu . Kaynak grubu, uygulama için gereken tüm Azure kaynaklarını gruplandırmanıza (mantıksal bir kapsayıcıda) olanak tanır.

Azure portalında oturum açın ve Azure Uygulaması Hizmeti kaynaklarınızı oluşturmak için bu adımları izleyin.

1. Adım: Azure portalında:

  1. Azure portalının üst kısmındaki arama çubuğuna "web uygulaması veritabanı" yazın.
  2. Market başlığının altında Web Uygulaması + Veritabanı etiketli öğeyi seçin. Doğrudan oluşturma sihirbazına da gidebilirsiniz.

2. Adım:Web Uygulaması + Veritabanı Oluştur sayfasında, formu aşağıdaki gibi doldurun.

  1. Kaynak Grubu: Yeni oluştur'u seçin ve msdocs-expressjs-mongodb-tutorial adını kullanın.
  2. Bölge: Size yakın herhangi bir Azure bölgesi.
  3. Ad: msdocs-expressjs-mongodb-XYZ, burada XYZ üç adet rastgele karakterdir.
  4. Çalışma zamanı yığını: Node 20 LTS.
  5. Altyapı: MongoDB için Cosmos DB API'si. Azure Cosmos DB, %100 MongoDB uyumlu api sunan bir bulutta yerel veritabanıdır. Sizin için oluşturulan veritabanı adını (<app-name-database>) not edin. Buna daha sonra ihtiyacınız olacak.
  6. Barındırma planı: Temel. Hazır olduğunuzda, ölçeği bir üretim fiyatlandırma katmanına kadar artırabilirsiniz.
  7. Gözden geçir ve oluştur'u seçin.
  8. Doğrulama tamamlandıktan sonra Oluştur'u seçin.

Adım 3: Dağıtımın tamamlanması birkaç dakika sürer. Dağıtım tamamlandıktan sonra Kaynağa git düğmesini seçin. Doğrudan App Service uygulamasına yönlendirilirsiniz, ancak aşağıdaki kaynaklar oluşturulur:

  • Kaynak grubu → Oluşturulan tüm kaynaklar için kapsayıcı.
  • App Service planı → App Service için işlem kaynaklarını tanımlar. Temel katmanda bir Linux planı oluşturulur.
  • App Service → Uygulamanızı temsil eder ve App Service planında çalışır.
  • Sanal ağ → App Service uygulamasıyla tümleşiktir ve arka uç ağ trafiğini yalıttır.
  • Özel uç nokta → Sanal ağdaki veritabanı kaynağı için Erişim uç noktası.
  • Ağ arabirimi → Özel uç nokta için özel ip adresini temsil eder.
  • MongoDB için Azure Cosmos DB → Yalnızca özel uç noktanın arkasından erişilebilir. Sunucuda sizin için bir veritabanı ve kullanıcı oluşturulur.
  • Özel DNS bölgesi → Sanal ağdaki Azure Cosmos DB sunucusunun DNS çözümlemesini etkinleştirir.

Sorun mu yaşıyorsunuz? Sorun Giderme bölümüne bakın.

3. Bağlantı gizli dizilerinin güvenliğini sağlama

Oluşturma sihirbazı bağlantı dizesini sizin için zaten bir uygulama ayarı olarak oluşturdu. Ancak en iyi güvenlik uygulaması, gizli dizileri App Service'in dışında tutmaktır. Hizmet Bağlayıcıları'nın yardımıyla gizli bilgilerinizi bir anahtar kasasına taşıyacak ve uygulama ayarınızı bir Key Vault referansı olarak değiştireceksiniz.

1. Adım: App Service sayfasında:

  1. Sol menüde Ayarlar > Ortam değişkenleri'ni seçin.
  2. AZURE_COSMOS_CONNECTIONSTRING'nin yanında Değeri göster'i seçin. Bu bağlantı dizesi, özel uç noktanın arkasında güvenliği sağlanan Cosmos DB veritabanına bağlanmanızı sağlar. Ancak gizli dizi doğrudan App Service uygulamasına kaydedilir ve bu en iyisi değildir. Bunu değiştireceksin.

2. Adım: Gizli bilgilerin güvenli yönetimi için bir anahtar kasası oluşturun.

  1. Üstteki arama çubuğuna "key vault" yazın, ardından Marketplace>Anahtar Kasası'nı seçin.
  2. Kaynak Grubu'ndamsdocs-expressjs-mongodb-tutorial öğesini seçin.
  3. Anahtar kasası adı alanına yalnızca harf ve sayılardan oluşan bir ad yazın.
  4. Bölge'de, kaynak grubu olarak örnek konuma ayarlayın.

Adım 3:

  1. Ağ Ayarları sekmesini seçin.
  2. Genel erişimi etkinleştir'in seçimini kaldırın.
  3. Özel uç nokta oluştur'u seçin.
  4. Kaynak Grubu'ndamsdocs-expressjs-mongodb-tutorial öğesini seçin.
  5. Anahtar kasası adı alanına yalnızca harf ve sayılardan oluşan bir ad yazın.
  6. Bölge'de, kaynak grubu olarak örnek konuma ayarlayın.
  7. İletişim kutusundaki Konum'da App Service uygulamanızla aynı konumu seçin.
  8. Kaynak Grubu'ndamsdocs-expressjs-mongodb-tutorial öğesini seçin.
  9. Ad alanına msdocs-expressjs-mongodb-XYZVaultEndpoint yazın.
  10. Sanal ağ'damsdocs-expressjs-mongodb-XYZVnet öğesini seçin.
  11. In Subnetmsdocs-expressjs-mongodb-XYZSubnet.
  12. Tamam'ı seçin.
  13. Gözden geçir ve oluştur'u ve ardından Oluştur'u seçin. Anahtar kasası dağıtımının tamamlanmasını bekleyin. "Dağıtımınız tamamlandı" ifadesini görmeniz gerekir.

4. Adım:

  1. Üst arama çubuğuna msdocs-expressjs-mongodb yazın ve ardından msdocs-expressjs-mongodb-XYZ adlı App Service kaynağını yazın.
  2. App Service sayfasındaki sol menüde Ayarlar > Hizmet Bağlayıcısı'nı seçin. Uygulama oluşturma sihirbazının sizin için oluşturduğu bir bağlayıcı zaten var.
  3. Bağlayıcının yanındaki onay kutusunu ve ardından Düzenle'yi seçin.
  4. Temel Bilgiler sekmesinde İstemci türü'nüNode.jsolarak ayarlayın.
  5. Kimlik Doğrulaması sekmesini seçin.
  6. Key Vault'ta Sırrı Sakla seçeneğini seçin.
  7. Key Vault Bağlantısı'nın altında Yeni oluştur'u seçin. Düzenle iletişim kutusunun üzerinde Bağlantı oluştur iletişim kutusu açılır.

5. Adım: Key Vault bağlantısı için Bağlantı oluştur iletişim kutusunda:

  1. Key Vault'ta daha önce oluşturduğunuz anahtar kasasını seçin.
  2. Gözden Geçir + Oluştur'u seçin. Sistem tarafından atanan yönetilen kimliğinSeçili olarak ayarlandığını görmeniz gerekir.
  3. Doğrulama tamamlandığında Oluştur'u seçin.

6. Adım:defaultConnector için düzenleme iletişim kutusuna geri dönersiniz.

  1. Kimlik Doğrulaması sekmesinde anahtar kasası bağlayıcısının oluşturulmasını bekleyin. Tamamlandığında Key Vault Bağlantısı açılır listede otomatik olarak seçilir.
  2. İleri: Ağ'ı seçin.
  3. Hedef hizmete erişimi etkinleştirmek için Güvenlik duvarı kurallarını yapılandır'ı seçin. "Hedef hizmette Özel Uç Nokta Yok" iletisini görürseniz, bunu yoksayın. Uygulama oluşturma sihirbazı Cosmos DB veritabanının güvenliğini özel bir uç noktayla zaten sağladı.
  4. Kaydet'i seçin. Güncelleştirme başarılı bildirimi görünene kadar bekleyin.

7. Adım: Değişikliklerinizi doğrulamak için:

  1. Soldaki menüden Ortam değişkenleri'ni yeniden seçin.
  2. AZURE_COSMOS_CONNECTIONSTRING uygulama ayarının yanında Değeri göster'i seçin. Değer @Microsoft.KeyVault(...) olmalıdır, bu da bir anahtar kasası referansı olduğu anlamına gelir çünkü sır artık anahtar kasasında yönetilir.

Sorun mu yaşıyorsunuz? Sorun Giderme bölümüne bakın.

4. Örnek kodu dağıtma

Bu adımda GitHub Actions'ı kullanarak GitHub dağıtımını yapılandıracaksınız. App Service'e dağıtmanın birçok yolundan yalnızca biridir, aynı zamanda dağıtım sürecinizde sürekli tümleştirmeye sahip olmanın harika bir yoludur. Varsayılan olarak, GitHub deponuzun her git push örneği derleme ve dağıtma eylemini başlatıyor.

1. Adım: Sol menüde Dağıtım>Dağıtım Merkezi'ni seçin.

2. Adım: Dağıtım Merkezi sayfasında:

  1. Kaynak bölümünde GitHub'ı seçin. GitHub Actions varsayılan olarak derleme sağlayıcısı olarak seçilir.
  2. GitHub hesabınızda oturum açın ve Azure'ı yetkilendirme istemini izleyin.
  3. Kuruluş'ta hesabınızı seçin.
  4. Depo'damsdocs-nodejs-mongodb-azure-sample-app öğesini seçin.
  5. Branch'testarter-no-infra'yı seçin. Bu, Azure ile ilgili dosyalar veya yapılandırmalar olmadan örnek uygulamanızla birlikte çalıştığınız dalla aynıdır.
  6. Kimlik doğrulama türü içinKullanıcı tarafından atanan kimlik'i seçin.
  7. Üstteki menüde Kaydet'i seçin. App Service, .github/workflows dizinde seçilen GitHub deposuna bir iş akışı dosyası işler. Varsayılan olarak, dağıtım merkezi, iş akışının Microsoft Entra (OIDC kimlik doğrulaması) kullanarak kimlik doğrulaması yapabilmesi için kullanıcıya atanmış bir kimlik oluşturur. Alternatif kimlik doğrulama seçenekleri için bkz. GitHub Actions kullanarak App Service'e dağıtma.

Adım 3: Örnek çatalınızın GitHub kod alanına geri dönün ve git pull origin starter-no-infra çalıştırın. Bu, yeni işlenen iş akışı dosyasını kod alanınıza çeker.

4. Adım (Seçenek 1: GitHub Copilot ile):

  1. Önce Sohbet görünümünü, ardından + öğesini seçerek yeni bir sohbet oturumu başlatın.
  2. "@workspace Uygulama veritabanına nasıl bağlanır? " Copilot sizi app.js dosyasına ve mongoose.connect çağrısına yönlendirebilir.
  3. "*Azure'da AZURE_COSMOS_CONNECTIONSTRING adlı bir bağlantı dizesi değişkenim var" deyin. Copilot, size aşağıda GitHub Copilot olmadan Seçenek 2 adımlarında yer alan kod önerisine benzer bir öneri verebilir ve hatta app.js'da değişiklik yapmanızı söyleyebilir.
  4. Dosya Gezgini'nde app.js açın ve getApp yöntemine kod önerisini ekleyin. GitHub Copilot size her seferinde aynı yanıtı vermez. Yanıtta ince ayar yapmak için daha fazla soru sormanız gerekebilir. İpuçları için bkz. Kod alanımda GitHub Copilot ile ne yapabilirim?.

4. Adım (Seçenek 2: GitHub Copilot olmadan):

  1. Gezginden app.js'yi açın.
  2. (Satır 16) olarak adlandırılan satırı mongoose.connect bulun ve olarak process.env.MONGODB_URIdeğiştirinprocess.env.AZURE_COSMOS_CONNECTIONSTRING || process.env.MONGODB_URI.

5. Adım:

  1. Kaynak Denetimi uzantısını seçin.
  2. Metin kutusuna gibi Update environment variablebir işleme iletisi yazın. Alternatif olarak GitHub Copilot'un sizin için bir işleme iletisi oluşturmasını seçip bırakın.
  3. İşle'yi seçin, ardından Evet ile onaylayın.
  4. Değişiklikleri eşitle 1'i seçin, ardından Tamam ile onaylayın.

6. Adım: Azure portalında Dağıtım Merkezi sayfasına geri dönün:

  1. Günlükler sekmesinde Yenile'yi seçin. İşlemiş değişikliklerinizden yeni bir dağıtım çalıştırması zaten başlatılıyor.
  2. Dağıtım yürütmesinin günlük öğesinde, en son zaman damgasına sahip Derleme/Dağıtma Günlükleri girdisini seçin.

7. Adım: GitHub deponuza yönlendirilirsiniz ve GitHub eyleminin çalıştığını görürsünüz. İş akışı dosyası derleme ve dağıtma olarak iki ayrı aşama tanımlar. GitHub çalışmasının Durumu Tamamlandı olarak gösterilene kadar bekleyin.

Sorun mu yaşıyorsunuz? Sorun Giderme bölümüne bakın.

5. Uygulamaya göz atın

1. Adım: App Service sayfasında:

  1. Sol menüden Genel Bakış'ı seçin.
  2. Uygulamanızın URL'sini seçin.

2. Adım: Listeye birkaç görev ekleyin. Tebrikler, Azure Uygulaması Hizmeti'nde güvenli bir veri temelli Node.js uygulaması çalıştırıyorsunuz.

6. Tanılama günlüklerini akışla aktarma

Azure Uygulaması Hizmeti, uygulamanızla ilgili sorunları tanılamanıza yardımcı olmak için konsola kaydedilen tüm iletileri yakalar. Örnek uygulama, bu özelliği göstermek için uç noktalarının her birinde konsol günlük iletilerinin çıkışını alır. Örneğin, get uç nokta veritabanından alınan görev sayısı hakkında bir ileti verir ve bir sorun oluştuğunda bir hata iletisi görüntülenir.

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. Adım: App Service sayfasında:

  1. Sol menüden App Service günlükleri'ni seçin.
  2. Uygulama günlüğü'nin altında Dosya Sistemi'ne tıklayın.
  3. Üstteki menüde Kaydet'i seçin.

2. Adım: Sol menüden Günlük akışı'nı seçin. Kapsayıcının içinden platform günlükleri ve günlükler de dahil olmak üzere uygulamanızın günlüklerini görürsünüz.

7. Kudu kullanarak dağıtılan dosyaları inceleme

Azure App Service, web uygulamanızın sunucu barındırma ortamını incelemenize olanak tanıyan Kudu adlı bir web tabanlı tanılama konsolu sağlar. Kudu'yu kullanarak Azure'a dağıtılan dosyaları görüntüleyebilir, uygulamanın dağıtım geçmişini gözden geçirebilir ve hatta barındırma ortamında bir SSH oturumu açabilirsiniz.

1. Adım: App Service sayfasında:

  1. Soldaki menüden Gelişmiş Araçlar'ı seçin.
  2. Git'i seçin.

2. Adım: Kudu sayfasında Dağıtımlar'ı seçin.

Git veya zip dağıtımı kullanarak App Service'e kod dağıtırsanız web uygulamanızın dağıtım geçmişini görürsünüz.

Adım 3: Kudu giriş sayfasına dönün ve Site wwwroot'ı seçin.

Dağıtılan klasör yapısını görebilir ve dosyalara göz atıp görüntülemeyi seçebilirsiniz.

8. Kaynakları temizleme

İşiniz bittiğinde, kaynak grubunu silerek Azure aboneliğinizdeki tüm kaynakları silebilirsiniz.

1. Adım: Azure portalının üst kısmındaki arama çubuğunda:

  1. Kaynak grubu adını girin.
  2. Kaynak grubunu seçin.

2. Adım: Kaynak grubu sayfasında Kaynak grubunu sil'i seçin.

Adım 3:

  1. Silme işleminizi onaylamak için kaynak grubu adını girin.
  2. Sil'i seçin.

2. Azure kaynakları oluşturma ve örnek uygulama dağıtma

Bu adımda Azure kaynaklarını oluşturur ve Linux üzerinde App Service için örnek bir uygulama dağıtırsınız. Bu öğreticide kullanılan adımlar, App Service ve Azure Cosmos DB içeren varsayılan olarak güvenli bir kaynak kümesi oluşturur.

Geliştirme kapsayıcısı zaten Azure Geliştirici CLI'sine (AZD) sahiptir.

  1. Depo kökünden komutunu çalıştırın azd init.

    azd init --template nodejs-app-service-cosmos-redis-infra
    
  2. İstendiğinde aşağıdaki yanıtları verin:

    Soru Yanıt
    Geçerli dizin boş değil. Burada '<your-directory>' içinde bir proje başlatmak istiyor musunuz? Y
    Bu dosyalarla ne yapmak istiyorsunuz? Mevcut dosyalarımı değiştirmeden tut
    Yeni bir ortam adı girin Benzersiz bir ad yazın. AZD şablonu, Azure'da (<app-name>-<hash>.azurewebsites.net) web uygulamanızın DNS adının bir parçası olarak bu adı kullanır. Alfasayısal karakterlere ve kısa çizgilere izin verilir.
  3. komutunu çalıştırıp azd auth login istemi izleyerek Azure'da oturum açın:

    azd auth login
    
  4. Gerekli Azure kaynaklarını oluşturun ve komutuyla uygulama kodunu dağıtın azd up . İstemi izleyerek Azure kaynakları için istenen aboneliği ve konumu seçin.

    azd up
    

    Komutun azd up tamamlanması yaklaşık 15 dakika sürer (Redis önbelleği en çok zaman alır). Ayrıca uygulama kodunuzu derleyip dağıtır, ancak kodunuzu daha sonra App Service ile çalışacak şekilde değiştireceksiniz. Komutu çalışırken, Azure'daki dağıtıma bir bağlantı da dahil olmak üzere sağlama ve dağıtım işlemiyle ilgili iletiler sağlar. Tamamlandığında, komut dağıtım uygulamasının bağlantısını da görüntüler.

    Bu AZD şablonu, aşağıdaki Azure kaynaklarıyla varsayılan olarak güvenli bir mimari oluşturan dosyaları (azure.yaml ve infra dizini) içerir:

    • Kaynak grubu: Oluşturulan tüm kaynaklar için kapsayıcı.
    • App Service planı: App Service için işlem kaynaklarını tanımlar. B1 katmanında bir Linux planı oluşturulur.
    • App Service: Uygulamanızı temsil eder ve App Service planında çalışır.
    • Sanal ağ: App Service uygulamasıyla tümleştirilmiş ve arka uç ağ trafiğini yalıtıyor.
    • MongoDB API'sine sahip Azure Cosmos DB hesabı: Yalnızca özel uç noktasının arkasından erişilebilir. Sunucuda sizin için bir veritabanı oluşturulur.
    • Redis için Azure Cache: Yalnızca sanal ağ içinden erişilebilir.
    • Anahtar kasası: Yalnızca kendi özel uç noktasının arkasından erişilebilir. App Service uygulamasının gizli dizilerini yönetmek için kullanılır.
    • Özel uç noktalar: Sanal ağdaki anahtar kasası, veritabanı sunucusu ve Redis önbelleği için erişim uç noktaları.
    • Özel DNS bölgeleri: Cosmos DB veritabanının, Redis önbelleğinin ve sanal ağdaki anahtar kasasının DNS çözümlemesini etkinleştirin.
    • Log Analytics çalışma alanı: Uygulamanızın günlüklerini göndermesi için hedef kapsayıcı görevi görür ve burada günlükleri de sorgulayabilirsiniz.

    Komut kaynak oluşturmayı ve uygulama kodunu ilk kez dağıtmayı tamamladıktan sonra, Azure'daki veritabanına bağlanmak için küçük değişiklikler yapmanız gerektiğinden dağıtılan örnek uygulama henüz çalışmaz.

3. bağlantı dizesi doğrulama

Kullandığınız AZD şablonu, sizin için zaten uygulama ayarları olarak bağlantı değişkenlerini oluşturmuş ve size kolaylık sağlamak için bunları terminale çıkış olarak göndermektedir. Uygulama ayarları, bağlantı gizli dizilerini kod deponuzun dışında tutmanın bir yoludur.

  1. AZD çıkışında uygulama ayarını AZURE_COSMOS_CONNECTIONSTRINGbulun. Yalnızca ayar adları görüntülenir. AZD çıkışında aşağıdakine benzerler:

     App Service app has the following app settings:
             - AZURE_COSMOS_CONNECTIONSTRING
             - AZURE_REDIS_CONNECTIONSTRING
             - AZURE_KEYVAULT_RESOURCEENDPOINT
             - AZURE_KEYVAULT_SCOPE
     

    AZURE_COSMOS_CONNECTIONSTRINGAzure'daki Cosmos DB veritabanına bağlantı dizesi içerir. Daha sonra kodunuzda kullanmanız gerekir.

  2. Size kolaylık sağlamak için AZD şablonu size uygulamanın uygulama ayarları sayfasının doğrudan bağlantısını gösterir. Bağlantıyı bulun ve yeni bir tarayıcı sekmesinde açın.

Sorun mu yaşıyorsunuz? Sorun Giderme bölümüne bakın.

4. Örnek kodu değiştirme ve yeniden dağıtma

  1. GitHub kod alanında, Sohbet görünümüne tıklayın ve ardından + seçeneğine tıklayarak yeni bir sohbet oturumu başlatın.

  2. "@workspace Uygulama veritabanına nasıl bağlanır? " Copilot sizi app.js dosyasına ve mongoose.connect çağrısına yönlendirebilir.

  3. "Azure'da AZURE_COSMOS_CONNECTIONSTRING adlı bir bağlantı dizesi değişkenim var" deyin. Copilot, size aşağıda GitHub Copilot olmadan Seçenek 2 adımlarında yer alan kod önerisine benzer bir öneri verebilir ve hatta app.js'da değişiklik yapmanızı söyleyebilir.

  4. Dosya Gezgini'nde app.js açın ve getApp yöntemine kod önerisini ekleyin.

    GitHub Copilot size her seferinde aynı yanıtı vermez. Yanıtta ince ayar yapmak için daha fazla soru sormanız gerekebilir. İpuçları için bkz. Kod alanımda GitHub Copilot ile ne yapabilirim?.

  5. Kod alanı terminalinde komutunu çalıştırın azd deploy.

    azd deploy
    

İpucu

Ayrıca, tüm , ve işlemlerini azd upyapan her zaman da kullanabilirsinizazd package.azd provisionazd deploy

Sorun mu yaşıyorsunuz? Sorun Giderme bölümüne bakın.

5. Uygulamaya göz atın

  1. AZD çıkışında uygulamanızın URL'sini bulun ve tarayıcıda bu URL'ye gidin. URL, AZD çıkışında şöyle görünür:

     Deploying services (azd deploy)
    
       (✓) Done: Deploying service web
       - Endpoint: <URL>
     
  2. Listeye birkaç görev ekleyin.

    Görevleri gösteren Azure'da Çalışan Cosmos DB ile Express.js web uygulamasının ekran görüntüsü.

    Tebrikler, Azure Cosmos DB'ye güvenli bağlantı ile Azure Uygulaması Hizmeti'nde bir web uygulaması çalıştırıyorsunuz.

Sorun mu yaşıyorsunuz? Sorun Giderme bölümüne bakın.

6. Tanılama günlüklerini akışla aktarma

Azure Uygulaması Hizmeti, uygulamanızla ilgili sorunları tanılamanıza yardımcı olmak için konsola kaydedilen tüm iletileri yakalar. Örnek uygulama, bu özelliği göstermek için uç noktalarının her birinde konsol günlük iletilerinin çıkışını alır. Örneğin, get uç nokta veritabanından alınan görev sayısı hakkında bir ileti verir ve bir sorun oluştuğunda bir hata iletisi görüntülenir.

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.');
    });
});

AZD çıkışında App Service günlüklerinin akışının bağlantısını bulun ve tarayıcıda bu bağlantıya gidin. Bağlantı, AZD çıkışında şöyle görünür:

Stream App Service logs at: <URL>

.NET, Node.js, Python ve Java uygulamaları için Azure İzleyici OpenTelemetry'yi etkinleştirme konusundaki serideki Java uygulamalarında oturum açma hakkında daha fazla bilgi edinin.

Sorun mu yaşıyorsunuz? Sorun Giderme bölümüne bakın.

7. Kaynakları temizleme

Geçerli dağıtım ortamındaki tüm Azure kaynaklarını silmek için komutunu çalıştırın azd down ve istemleri izleyin.

azd down

Sorun giderme

Azure Cosmos DB için portal dağıtım görünümü Çakışma durumu gösteriyor

Aboneliğinize ve seçtiğiniz bölgeye bağlı olarak Azure Cosmos DB'nin Conflictdağıtım durumunu, İşlem ayrıntıları bölümünde aşağıdaki iletiyle görebilirsiniz:

Sorry, we are currently experiencing high demand in <region> region, and cannot fulfill your request at this time.

Hatanın nedeni büyük olasılıkla seçtiğiniz bölge için aboneliğinizdeki bir sınırdır. Dağıtımınız için farklı bir bölge seçmeyi deneyin.

Dağıtılan uygulamanın tarayıcı sayfasında "Bir sorun oluştu" ifadesi yer alır.

Yine de uygulama kodunuzda bağlantı dizesi değişiklikleri yapmanız gerekebilir. Bkz . 4. Örnek kodu dağıtın.

Sık sorulan sorular

Bu kurulumun maliyeti ne kadardır?

Oluşturulan kaynakların fiyatlandırması aşağıdaki gibidir:

Nasıl yaparım? diğer araçlarla sanal ağın arkasında güvenliği sağlanan Azure Cosmos DB sunucusuna bağlanın.

  • Komut satırı aracından temel erişim için uygulamanın SSH terminalinden çalıştırabilirsiniz mongosh . Uygulamanın kapsayıcısı mongosh ile gelmez, bu nedenle elle yüklemeniz gerekir. Yüklü istemcinin uygulama yeniden başlatmalarında kalıcı olmadığını unutmayın.
  • MongoDB GUI istemcisinden bağlanmak için makinenizin sanal ağ içinde olması gerekir. Örneğin, alt ağlardan birine bağlı bir Azure VM veya Azure sanal ağıyla siteden siteye VPN bağlantısı olan bir şirket içi ağda bulunan bir makine olabilir.
  • Portaldaki Azure Cosmos DB yönetim sayfasından MongoDB kabuğundan bağlanmak için makinenizin sanal ağ içinde de olması gerekir. Bunun yerine yerel makinenizin IP adresi için Azure Cosmos DB sunucusunun güvenlik duvarını açabilirsiniz, ancak yapılandırmanız için saldırı yüzeyini artırır.

Yerel uygulama geliştirme GitHub Actions ile nasıl çalışır?

App Service'ten otomatik olarak oluşturulan iş akışı dosyasını örnek olarak alın; her git push birinde yeni bir derleme ve dağıtım çalıştırması başlar. GitHub deposunun yerel bir kopyasından, istenen güncelleştirmelerin GitHub'a göndermesini sağlarsınız. Örneğin:

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

GitHub Actions dağıtımı neden bu kadar yavaş?

App Service'ten otomatik olarak oluşturulan iş akışı dosyası, derleme ve sonra dağıtma, iki iş çalıştırmasını tanımlar. Her iş kendi temiz ortamında çalıştığından, iş akışı dosyası işin işten dosyalara erişmesini deploy sağlarbuild:

İki işli işlem tarafından geçen sürenin çoğu yapıtları karşıya yüklemek ve indirmek için harcanmıştır. İsterseniz, iki işi tek bir işte birleştirerek iş akışı dosyasını basitleştirebilir ve bu sayede karşıya yükleme ve indirme adımları gereksinimi ortadan kalkar.

Kullanıcı tarafından atanan kimlik oluşturma iznim yok

Bkz. Dağıtım Merkezi'nden GitHub Actions dağıtımını ayarlama.

Kod alanımda GitHub Copilot ile ne yapabilirim?

Kod alanını oluştururken GitHub Copilot sohbet görünümünün zaten sizin için orada olduğunu fark edebilirsiniz. Kolaylık sağlamak için kapsayıcı tanımına GitHub Copilot sohbet uzantısını dahil ediyoruz (bkz . .devcontainer/devcontainer.json). Ancak, bir GitHub Copilot hesabına ihtiyacınız vardır (30 günlük ücretsiz deneme sürümü kullanılabilir).

GitHub Copilot ile konuşurken size birkaç ipucu:

  • Tek bir sohbet oturumunda, sorular ve yanıtlar birbirleri üzerinde derlenebilir ve sorularınızı ayarlayarak, elde ettiğiniz yanıta ince ayar yapabilirsiniz.
  • Varsayılan olarak, GitHub Copilot'un deponuzdaki hiçbir dosyaya erişimi yoktur. Dosya hakkında soru sormak için önce düzenleyicide dosyayı açın.
  • GitHub Copilot'ın yanıtlarını hazırlarken depodaki tüm dosyalara erişmesine izin vermek için sorunuza ile @workspacebaşlayın. Daha fazla bilgi için bkz. Use the @workspace agent.
  • Sohbet oturumunda, GitHub Copilot değişiklikleri önerebilir ve (ile @workspace) değişikliklerin yapılacağı yeri bile önerebilir, ancak değişiklikleri sizin için yapmasına izin verilmez. Önerilen değişiklikleri eklemek ve test etmek size bağlı.

Elde ettiğiniz yanıta ince ayar yapmak için söyleyebileceğiniz diğer bazı şeyler şunlardır:

  • @workspace MONGODB_URI nerede tanımlanır?
  • Değişikliği hangi dosyada yapabilirim?
  • Bu değişiklik yerel olarak çalışırken uygulamamı bozacak mı?

Sonraki adımlar