Aracılığıyla paylaş


Öğretici: ASP.NET Core ve Azure SQL Veritabanı uygulamasını Azure Uygulaması Hizmetine dağıtma

Bu öğreticide, Azure Uygulaması Hizmeti'ne veri temelli ASP.NET Core uygulaması dağıtmayı ve bir Azure SQL Veritabanı bağlanmayı öğreneceksiniz. Ayrıca uygulamanızda önbelleğe alma kodunu etkinleştirmek için bir Redis için Azure Cache dağıtacaksınız. Azure Uygulaması Hizmeti, Windows veya Linux'ta kolayca uygulama dağıtabilen yüksek oranda ölçeklenebilir, kendi kendine düzeltme eki uygulamalı bir web barındırma hizmetidir. Bu öğreticide ASP.NET Core 8.0 uygulaması kullanılıyor olsa da, işlem ASP.NET Core'un diğer sürümleri için aynıdır.

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

  • Varsayılan olarak güvenli bir App Service, SQL Veritabanı ve Redis önbellek mimarisi oluşturma
  • Örnek bir veri temelli ASP.NET Core uygulaması dağıtma
  • bağlantı dizesi ve uygulama ayarlarını kullanma
  • Geçiş paketini karşıya yükleyerek veritabanı şeması oluşturma
  • Azure’daki tanılama günlüklerinin akışını sağlama
  • Uygulamayı Azure portalında yönetme
  • Azure Geliştirici CLI'sı kullanarak sağlama ve dağıtma
  • Yönetilen kimlik kullanarak parolasız SQL bağlantısı kullanma

Önkoşullar

  • Etkin aboneliği olan bir Azure hesabı. Azure hesabınız yoksa ücretsiz olarak bir hesap oluşturabilirsiniz.
  • Bir GitHub hesabı. Ücretsiz olarak da bir tane alabilirsiniz.
  • ASP.NET Core geliştirme bilgisi.
  • (İsteğe bağlı) GitHub Copilot hesabı olan GitHub Copilot'ı denemek için. 30 günlük ücretsiz deneme sürümü mevcuttur.

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-app-service-sqldb-dotnetcore/fork
  3. Yalnızca ana dalı kopyala seçimini kaldırın. Tüm dalları istiyorsun.
  4. Çatal oluştur'u seçin.

Örnek GitHub deposunun çatalının nasıl oluşturulacağını gösteren ekran görüntüsü.

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. Main üzerinde kod>alanı oluştur'u seçin. Kod alanının ayarlanması birkaç dakika sürer.

GitHub'da kod alanı oluşturmayı gösteren ekran görüntüsü.

3. Adım: Codespace terminalinde:

  1. veritabanı geçişlerini ile dotnet ef database updateçalıştırın.
  2. uygulamasını ile dotnet runçalıştırın.
  3. Bildirimi Your application running on port 5093 is available.gördüğünüzde Tarayıcıda Aç'ı seçin. Örnek uygulamayı yeni bir tarayıcı sekmesinde görmeniz gerekir. Uygulamayı durdurmak için yazın Ctrl+C.

GitHub kod alanının içinde örnek uygulamanın nasıl çalıştırılacaklarını gösteren ekran görüntüsü.

İ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.

1. App Service, veritabanı ve önbellek oluşturma

Bu adımda Azure kaynaklarını oluşturursunuz. Bu öğreticide kullanılan adımlar App Service, Azure SQL Veritabanı ve Azure Cache'i 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ı. Web uygulamanızın DNS adının bir parçası olarak biçiminde kullanılan addır https://<app-name>.azurewebsites.net.
  • Uygulamayı dünyada fiziksel olarak çalıştırılacak Bölge.
  • Uygulamanın Çalışma Zamanı yığını . Burası, uygulamanız için kullanılacak .NET sürümünü seçtiğiniz yerdir.
  • 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.

Web Uygulaması + Veritabanı oluşturma sihirbazını bulmak için üst araç çubuğundaki arama kutusunun nasıl kullanılacağını gösteren ekran görüntüsü.

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-core-sql-tutorial adını kullanın.
  2. Bölge: Size yakın herhangi bir Azure bölgesi.
  3. Ad: msdocs-core-sql-XYZ burada XYZ herhangi bir rastgele karakterdir. Bu ad Azure genelinde benzersiz olmalıdır.
  4. Çalışma zamanı yığını: .NET 8 (LTS).
  5. Redis için Azure Cache ekle?: Evet.
  6. Barındırma planı: Temel. Hazır olduğunuzda, daha sonra bir üretim fiyatlandırma katmanına ölçek artırabilirsiniz.
  7. Veritabanı altyapısı olarak SQLAzure'ı seçin. Azure SQL Veritabanı, her zaman SQL Server'ın en son kararlı sürümünde çalışan tam olarak yönetilen bir hizmet olarak platform (PaaS) veritabanı altyapısıdır.
  8. Gözden geçir ve oluştur’u seçin.
  9. Doğrulama tamamlandıktan sonra Oluştur'u seçin.

Web Uygulaması + Veritabanı sihirbazında yeni bir uygulama ve veritabanını yapılandırmayı gösteren ekran görüntüsü.

3. Adım: 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ştirilmiş ve arka uç ağ trafiğini yalıtıyor.
  • Özel uç noktalar: Veritabanı sunucusu ve sanal ağdaki Redis önbelleği için erişim uç noktaları.
  • Ağ arabirimleri: Özel uç noktaların her biri için bir tane olan özel IP adreslerini temsil eder.
  • Azure SQL Veritabanı sunucusu: Yalnızca özel uç noktasının arkasından erişilebilir.
  • Azure SQL Veritabanı: Sunucuda sizin için bir veritabanı ve kullanıcı oluşturulur.
  • Redis için Azure Cache: Yalnızca özel uç noktasının arkasından erişilebilir.
  • Özel DNS bölgeleri: Sanal ağda veritabanı sunucusunun ve Redis önbelleğinin DNS çözümlemesini etkinleştirin.

Dağıtım işleminin tamamlandığını gösteren ekran görüntüsü.

2. bağlantı dizesi doğrulama

İpucu

Varsayılan SQL veritabanı bağlantı dizesi SQL kimlik doğrulamasını kullanır. Daha güvenli ve parolasız kimlik doğrulaması için bkz. SQL Veritabanı bağlantısını yönetilen kimlik kullanacak şekilde değiştirmek Nasıl yaparım??

Oluşturma sihirbazı, SQL veritabanı ve Redis önbelleği için bağlantı dizesi oluşturuldu. Bu adımda, daha sonra için oluşturulan bağlantı dizesi bulun.

1. Adım: App Service sayfasındaki sol menüden Ayarlar>Ortam değişkenleri'ni seçin.

App Service'te yapılandırma sayfasını açmayı gösteren ekran görüntüsü.

2. Adım:

  1. Uygulama ayarları bölümünde AZURE_REDIS_CONNECTIONSTRING bulun. Bu dize, oluşturma sihirbazı tarafından yeni Redis önbelleğinden oluşturuldu. Uygulamanızı ayarlamak için ihtiyacınız olan tek şey bu addır.
  2. Bağlantı dizeleri'ni seçin ve Bağlantı dizeleri bölümünde AZURE_SQL_CONNECTIONSTRING bulun. Bu dize, oluşturma sihirbazı tarafından yeni SQL veritabanından oluşturulmuştur. Uygulamanızı ayarlamak için ihtiyacınız olan tek şey bu addır.
  3. İsterseniz ayarı seçebilir ve değerini görebilir, kopyalayabilir veya düzenleyebilirsiniz. Daha sonra uygulamanızı ve AZURE_REDIS_CONNECTIONSTRINGkullanacak AZURE_SQL_CONNECTIONSTRING şekilde değiştireceksiniz.

Uygulama ayarının nasıl oluşturulacağını gösteren ekran görüntüsü.

3. Ö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: Soldaki menüde Dağıtım>Dağıtım Merkezi'ni seçin.

App Service'te dağıtım merkezini açmayı gösteren ekran görüntüsü.

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'da msdocs-app-service-sqldb-dotnetcore öğesini seçin.
  5. Branch'te starter-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çin Kullanı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 Microsoft Entra (OIDC kimlik doğrulaması) kullanarak kimlik doğrulaması yapmak üzere iş akışı için kullanıcı tarafından atanan bir kimlik oluşturur. Alternatif kimlik doğrulama seçenekleri için bkz . GitHub Actions kullanarak App Service'e dağıtma.

GitHub Actions kullanarak CI/CD'yi yapılandırmayı gösteren ekran görüntüsü.

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

GitHub kod alanının içindeki git çekme işlemini gösteren ekran görüntüsü.

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

  1. Sohbet görünümünü ve ardından öğesini seçerek +yeni bir sohbet oturumu başlatın.
  2. "@workspace Uygulama veritabanına ve önbelleğe nasıl bağlanır? " Copilot, sınıfı ve Program.cs'de nasıl yapılandırıldığı hakkında MyDatabaseContext size bazı açıklamalar verebilir.
  3. "Üretim modunda, uygulamanın veritabanı için AZURE_SQL_CONNECTIONSTRING adlı bağlantı dizesi ve AZURE_REDIS_CONNECTIONSTRING* adlı uygulama ayarını kullanmasını istiyorum. Copilot size Seçenek 2'dekine benzer bir kod önerisi verebilir: aşağıdaki GitHub Copilot adımları olmadan ve hatta Program.cs dosyasında değişiklik yapmanızı bile söyleyebilir.
  4. Gezginde Program.cs açın ve kod önerisini ekleyin. GitHub Copilot her seferinde aynı yanıtı vermez ve her zaman doğru değildir. 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?

Yeni bir GitHub Copilot sohbet oturumunda soru sormayı gösteren ekran görüntüsü.

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

  1. Gezginde Program.cs açın.
  2. Açıklamalı kodu (satır 12-21) bulun ve açıklamasını kaldırın. Bu kod kullanarak AZURE_SQL_CONNECTIONSTRING veritabanına bağlanır ve uygulama ayarını AZURE_REDIS_CONNECTIONSTRINGkullanarak Redis önbelleğine bağlanır.

GitHub kod alanının ve Program.cs dosyasının açıldığını gösteren ekran görüntüsü.

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

  1. Gezginde .github/workflows/starter-no-infra_msdocs-core-sql-XYZ dosyasını açın. Bu dosya App Service oluşturma sihirbazı tarafından oluşturuldu.
  2. Adımı vurgulayın dotnet publish ve öğesini seçin .
  3. Copilot'a sorun: "dotnet ef yükleyin, ardından aynı çıkış klasöründe bir geçiş paketi oluşturun."
  4. Öneri kabul edilebilirse Kabul Et'i seçin. GitHub Copilot her seferinde aynı yanıtı vermez ve her zaman doğru değildir. 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?

GitHub iş akışı dosyasında GitHub Copilot kullanımını gösteren ekran görüntüsü.

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

  1. Gezginde .github/workflows/starter-no-infra_msdocs-core-sql-XYZ dosyasını açın. Bu dosya App Service oluşturma sihirbazı tarafından oluşturuldu.
  2. Adımın dotnet publish altında, komutuyla dotnet tool install -g dotnet-ef --version 8.*Entity Framework Core aracını yüklemek için bir adım ekleyin.
  3. Yeni adım altında, dağıtım paketinde veritabanı geçiş paketi oluşturmak için başka bir adım ekleyin: dotnet ef migrations bundle --runtime linux-x64 -o ${{env.DOTNET_ROOT}}/myapp/migrationsbundle. Geçiş paketi, .NET SDK'sı gerekmeden üretim ortamında çalıştırabileceğiniz bağımsız bir yürütülebilir dosyadır. App Service linux kapsayıcısının .NET SDK'sı değil yalnızca .NET çalışma zamanı vardır.

Veritabanı geçiş paketi için GitHub iş akışı dosyasına eklenen adımları gösteren ekran görüntüsü.

6. Adım:

  1. Kaynak Denetimi uzantısını seçin.
  2. Metin kutusuna gibi Configure Azure database and cache connectionsbir 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.

İşlenen ve GitHub'a gönderilen değişiklikleri gösteren ekran görüntüsü.

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

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

Dağıtım merkezinde dağıtım günlüklerini açmayı gösteren ekran görüntüsü.

8. 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ıştırmasının Başarılı durumunu göstermesini bekleyin. Yaklaşık 5 dakika sürer.

GitHub çalıştırmanın devam etmekte olduğunu gösteren ekran görüntüsü.

4. Veritabanı şeması oluşturma

sanal ağ tarafından korunan SQL Veritabanı, dotnet veritabanı geçişlerini çalıştırmanın en kolay yolu App Service kapsayıcısı ile bir SSH oturumundadır.

1. Adım: App Service sayfasına geri dönün, soldaki menüde Geliştirme Araçları>SSH'yi ve ardından Git'i seçin.

Azure portalından uygulamanız için SSH kabuğunu açmayı gösteren ekran görüntüsü.

2. Adım: SSH terminalinde:

  1. cd /home/site/wwwroot'i çalıştırın. Dağıtılan tüm dosyalarınız aşağıdadır.
  2. GitHub iş akışının oluşturduğu geçiş paketini komutuyla ./migrationsbundle -- --environment Productionçalıştırın. Başarılı olursa, App Service SQL Veritabanı başarıyla bağlanıyor. Bunun Program.cs yaptığınız kod değişikliklerine karşılık geldiğini --environment Production unutmayın.

SSH kabuğunda çalıştırılacak komutları ve bunların çıkışını gösteren ekran görüntüsü.

SSH oturumunda, yalnızca içindeki dosyalarda /home yapılan değişiklikler uygulama yeniden başlatmalarının ötesinde kalıcı olabilir. dışındaki /home değişiklikler kalıcı olmaz.

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. Doğrudan adresine https://<app-name>.azurewebsites.netde gidebilirsiniz.

Azure portalından App Service başlatmayı gösteren ekran görüntüsü.

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

App Service'te çalışan .NET Core uygulamasının ekran görüntüsü.

İpucu

Örnek uygulama, edilgen önbellek düzenini uygular. Veri görünümünü ikinci kez ziyaret ettiğinizde veya veri değişiklikleri yaptıktan sonra aynı sayfayı yeniden yüklediğinizde, verileri veritabanı yerine önbellekten yüklediğinden web sayfasındaki işleme süresi çok daha hızlı bir zaman gösterir.

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.

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

  1. Sol menüden App Service günlüklerini izleme'yi>seçin.
  2. Uygulama günlüğü'nin altında Dosya Sistemi'ne ve ardından Kaydet'e tıklayın.

Azure portalında App Service'te yerel günlükleri etkinleştirmeyi gösteren ekran görüntüsü.

2. Adım: Soldaki 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.

Azure portalında günlük akışını görüntülemeyi gösteren ekran görüntüsü.

7. 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.

Azure portalında kaynak grubu arama ve bu gruba gitme adımlarını gösteren ekran görüntüsü.

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

Azure portalında Kaynak Grubunu Sil düğmesinin konumunu gösteren ekran görüntüsü.

3. Adım:

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

Azure portalında kaynak grubunu silmeye yönelik onay iletişim kutusunun ekran görüntüsü. :

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, Azure SQL Veritabanı ve Redis için Azure Cache 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 dotnet-app-service-sqldb-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>.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. 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ştirilmiş ve arka uç ağ trafiğini yalıtıyor.
    • Özel uç noktalar: Veritabanı sunucusu ve sanal ağdaki Redis önbelleği için erişim uç noktaları.
    • Ağ arabirimleri: Özel uç noktaların her biri için bir tane olan özel IP adreslerini temsil eder.
    • Azure SQL Veritabanı sunucusu: Yalnızca özel uç noktasının arkasından erişilebilir.
    • Azure SQL Veritabanı: Sunucuda sizin için bir veritabanı ve kullanıcı oluşturulur.
    • Redis için Azure Cache: Yalnızca özel uç noktasının arkasından erişilebilir.
    • Özel DNS bölgeleri: Sanal ağda veritabanı sunucusunun ve Redis önbelleğinin DNS çözümlemesini etkinleştirin.

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

3. bağlantı dizesi doğrulama

İpucu

Varsayılan SQL veritabanı bağlantı dizesi SQL kimlik doğrulamasını kullanır. Daha güvenli ve parolasız kimlik doğrulaması için bkz. SQL Veritabanı bağlantısını yönetilen kimlik kullanacak şekilde değiştirmek Nasıl yaparım??

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 ve AZURE_REDIS_CONNECTIONSTRINGayarlarını AZURE_SQL_CONNECTIONSTRING bulun. Gizli dizileri güvende tutmak için yalnızca ayar adları görüntülenir. AZD çıkışında aşağıdakine benzerler:

     App Service app has the following connection strings:
    
             - AZURE_SQL_CONNECTIONSTRING
             - AZURE_REDIS_CONNECTIONSTRING
     

    AZURE_SQL_CONNECTIONSTRINGAzure'daki SQL Veritabanı bağlantı dizesi ve AZURE_REDIS_CONNECTIONSTRING Azure Redis önbelleğine bağlantı dizesi içerir. Bunları 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. Örnek çatalınızın GitHub kod alanında Sohbet görünümünü ve ardından öğesini seçerek +yeni bir sohbet oturumu başlatın.

  2. "@workspace Uygulama veritabanına ve önbelleğe nasıl bağlanır? " Copilot, sınıfı ve Program.cs'de nasıl yapılandırıldığı hakkında MyDatabaseContext size bazı açıklamalar verebilir.

  3. "Üretim modunda, uygulamanın veritabanı için AZURE_SQL_CONNECTIONSTRING adlı bağlantı dizesi ve AZURE_REDIS_CONNECTIONSTRING* adlı uygulama ayarını kullanmasını istiyorum. Copilot size Seçenek 2'dekine benzer bir kod önerisi verebilir: aşağıdaki GitHub Copilot adımları olmadan ve hatta Program.cs dosyasında değişiklik yapmanızı bile söyleyebilir.

  4. Gezginde Program.cs açın ve kod önerisini ekleyin.

    GitHub Copilot her seferinde aynı yanıtı vermez ve her zaman doğru değildir. 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?

Bu değişiklikleri dağıtmadan önce yine de bir geçiş paketi oluşturmanız gerekir.

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

4. Veritabanı şeması oluşturma

sanal ağ tarafından korunan SQL Veritabanı, veritabanı geçişlerini çalıştırmanın en kolay yolu App Service kapsayıcısı ile bir SSH oturumudur. Ancak, App Service Linux kapsayıcılarında .NET SDK'sı yoktur, bu nedenle veritabanı geçişlerini çalıştırmanın en kolay yolu kendi içinde geçiş paketini karşıya yüklemektir.

  1. Aşağıdaki komutla projeniz için bir geçiş paketi oluşturun:

    dotnet ef migrations bundle --runtime linux-x64 -o migrationsbundle
    

    İpucu

    Örnek uygulama (bkz . DotNetCoreSqlDb.csproj), bu migrationsbundle dosyasını içerecek şekilde yapılandırılmıştır. azd package Aşama sırasında migrationsbundle dağıtım paketine eklenir.

  2. tüm değişiklikleri ile dağıtın azd up.

    azd up
    
  3. azd çıkışında SSH oturumunun URL'sini bulun ve tarayıcıda oturuma gidin. Çıktıda şöyle görünür:

     Open SSH session to App Service container at: https://<app-name>.scm.azurewebsites.net/webssh/host
     
  4. SSH terminalinde aşağıdaki komutları çalıştırın:

    cd /home/site/wwwroot
    ./migrationsbundle -- --environment Production
    

    Başarılı olursa App Service veritabanına başarıyla bağlanıyor. Bunun Program.cs yaptığınız kod değişikliklerine karşılık geldiğini --environment Production unutmayın.

SSH oturumunda, yalnızca içindeki dosyalarda /home yapılan değişiklikler uygulama yeniden başlatmalarının ötesinde kalıcı olabilir. dışındaki /home değişiklikler kalıcı olmaz.

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

6. 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: https://<app-name>.azurewebsites.net/
     
  2. Listeye birkaç görev ekleyin.

    Azure'da çalışan SQL Veritabanı görevleri gösteren ASP.NET Core web uygulamasının ekran görüntüsü.

    Tebrikler, Azure Uygulaması Hizmeti'nde Azure SQL Veritabanı güvenli bağlantısı olan bir web uygulaması çalıştırıyorsunuz.

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

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

Azure Uygulaması Hizmeti, uygulamanızla ilgili sorunları tanılamanıza yardımcı olmak için konsol günlüklerini yakalayabilir. Kolaylık olması için AZD şablonu yerel dosya sisteminde günlüğe kaydetmeyi zaten etkinleştirdi ve günlükleri Log Analytics çalışma alanına gönderiyor.

Örnek uygulama, aşağıdaki kod parçacığında gösterildiği gibi bu özelliği göstermek için standart günlük deyimlerini içerir:

public async Task<IActionResult> Index()
{
    var todoItems = await _cache.GetAsync(_TodoItemsCacheKey);
    if (todoItems != null)
    {
        _logger.LogInformation("Data from cache.");
        var todoList = JsonConvert.DeserializeObject<List<Todo>>(Encoding.UTF8.GetString(todoItems));
        return View(todoList);
    }
    else
    {
        _logger.LogInformation("Data from database.");
        var todoList = await _context.Todo.ToListAsync();
        var serializedTodoList = JsonConvert.SerializeObject(todoList);
        await _cache.SetAsync(_TodoItemsCacheKey, Encoding.UTF8.GetBytes(serializedTodoList));
        return View(todoList);
    }
}

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: https://portal.azure.com/#@/resource/subscriptions/<subscription-guid>/resourceGroups/<group-name>/providers/Microsoft.Web/sites/<app-name>/logStream

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

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

8. 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 SQL Veritabanı için portal dağıtım görünümünde Çakışma durumu gösterilir

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

InternalServerError: An unexpected error occured while processing the request.

Bu hata büyük olasılıkla aboneliğinizde seçtiğiniz bölge için bir sınırdan kaynaklanır. Dağıtımınız için farklı bir bölge seçmeyi deneyin.

Azure portalında web uygulamasının günlük akışı kullanıcı arabirimi ağ hatalarını gösterir

Şu hatayı görebilirsiniz:

Unable to open a connection to your app. This may be due to any network security groups or IP restriction rules that you have placed on your app. To use log streaming, please make sure you are able to access your app directly from your current network.

Bu genellikle uygulama ilk başlatıldığında geçici bir hatadır. Birkaç dakika bekleyin ve yeniden kontrol edin.

Tarayıcıdaki SSH oturumu SSH CONN CLOSED

Linux kapsayıcısının başlatılması birkaç dakika sürer. Birkaç dakika bekleyin ve yeniden kontrol edin.

Portal günlük akışı sayfasında günlük gösterilse Connected! de günlük yok

Tanılama günlüklerini yapılandırdıktan sonra uygulama yeniden başlatılır. Değişikliklerin tarayıcıda geçerli olması için sayfayı yenilemeniz gerekebilir.

Sık sorulan sorular

Bu kurulumun maliyeti ne kadardır?

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

  • App Service planı Temel katmanda oluşturulur ve ölçeği artırılabilir veya azaltılabilir. Bkz. App Service fiyatlandırması.
  • Azure SQL Veritabanı, standart seri donanımda en düşük çekirdeklerle genel amaçlı, sunucusuz katmanda oluşturulur. Küçük bir maliyet vardır ve diğer bölgelere dağıtılabilir. Maksimum boyutunu azaltarak maliyeti daha da küçültebilir veya hizmet katmanını, işlem katmanını, donanım yapılandırmasını, çekirdek sayısını, veritabanı boyutunu ve bölge yedekliliğini ayarlayarak ölçeği artırabilirsiniz. Bkz. Azure SQL Veritabanı fiyatlandırması.
  • Redis için Azure Cache temel katmanda en düşük önbellek boyutuyla oluşturulur. Bu katmanla ilişkili küçük bir maliyet vardır. Daha yüksek kullanılabilirlik, kümeleme ve diğer özellikler için ölçeğini daha yüksek performans katmanlarına artırabilirsiniz. Bkz. Redis için Azure Cache fiyatlandırma.
  • Eşleme gibi ek işlevler yapılandırmadığınız sürece sanal ağ ücret ödemez. Bkz. Azure Sanal Ağ fiyatlandırması.
  • Özel DNS bölgesi küçük bir ücrete tabi. Bkz. Azure DNS fiyatlandırması.

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

  • Komut satırı aracından temel erişim için uygulamanın SSH terminalinden çalıştırabilirsiniz sqlcmd . Uygulamanın kapsayıcısı ile sqlcmdbirlikte gelmez, bu nedenle el ile yüklemeniz gerekir. Yüklü istemcinin uygulama yeniden başlatmalarında kalıcı olmadığını unutmayın.
  • SQL Server Management Studio istemcisinden veya Visual Studio'dan 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.

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ı sırasında hata ayıklama Nasıl yaparım??

Otomatik olarak oluşturulan GitHub iş akışı dosyasında bir adım başarısız olursa, daha ayrıntılı çıkış oluşturmak için başarısız olan komutu değiştirmeyi deneyin. Örneğin, seçeneğini ekleyerek -v herhangi bir dotnet komuttan daha fazla çıktı alabilirsiniz. App Service'e başka bir dağıtım tetiklemek için değişikliklerinizi işleyin ve gönderebilirsiniz.

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

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

bunun yerine SQL Veritabanı bağlantısını yönetilen kimlik kullanacak şekilde değiştirmek Nasıl yaparım??

SQL veritabanına varsayılan bağlantı dizesi, Service Connector tarafından defaultConnector adıyla yönetilir ve SQL kimlik doğrulamasını kullanır. Bunu yönetilen kimlik kullanan bir bağlantıyla değiştirmek için, yer tutucuları değiştirdikten sonra cloud shell'de aşağıdaki komutları çalıştırın:

az extension add --name serviceconnector-passwordless --upgrade
az sql server update --enable-public-network true
az webapp connection delete sql --connection defaultConnector --resource-group <group-name> --name <app-name>
az webapp connection create sql --connection defaultConnector --resource-group <group-name> --name <app-name> --target-resource-group <group-name> --server <database-server-name> --database <database-name> --client-type dotnet --system-identity --config-connstr true
az sql server update --enable-public-network false

Komut az webapp connection create sql --client-type dotnet --system-identity --config-connstr varsayılan olarak aşağıdakileri yapar:

  • Kullanıcınızı SQL veritabanı sunucusunun Microsoft Entra ID yöneticisi olarak ayarlar.
  • Sistem tarafından atanan bir yönetilen kimlik oluşturun ve veritabanına erişim verir.
  • Öğreticinin sonunda uygulamanızın zaten kullandığı adlı AZURE_SQL_CONNECTIONGSTRINGparolasız bir bağlantı dizesi oluşturur.

Uygulamanızın artık SQL veritabanına bağlantısı olmalıdır. Daha fazla bilgi için bkz . Öğretici: Yönetilen kimlik kullanarak gizli diziler olmadan App Service'ten Azure veritabanlarına bağlanma.

İpucu

Genel ağ bağlantısını etkinleştirmek istemiyor musunuz? Aboneliğinizde Sahip rolü ataması varsa, sanal ağınızla tümleştirilmiş bir Azure cloud shell'den komutları çalıştırarak atlayabilirsinizaz sql server update --enable-public-network true.

Kimliğe sanal ağ tarafından güvenliği sağlanan veritabanına gerekli erişimi vermek için veritabanı az webapp connection create sql sunucusuna Entra Id kimlik doğrulaması ile doğrudan bağlantı gerekir. Varsayılan olarak, Azure Cloud Shell'in ağ güvenliğine sahip veritabanına bu erişimi yoktur.

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 etmiş olabilirsiniz. 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ı.

İşte, elde ettiğiniz yanıta ince ayar yapmak için söyleyebileceğiniz diğer bazı şeyler.

  • Bu kodun yalnızca üretim modunda çalışmasını istiyorum.
  • Bu kodun yerel olarak değil yalnızca Azure Uygulaması Hizmetinde çalışmasını istiyorum.
  • --output-path parametresi desteklenmiyor gibi görünüyor.

Özel bir etki alanı ve sertifikayla uygulamanızın güvenliğini sağlamayı öğrenmek için sonraki öğreticiye ilerleyin.

Alternatif olarak, diğer kaynaklara da göz atın: