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 7.0 uygulaması kullanılıyor olsa da, işlem ASP.NET Core ve ASP.NET Framework'ün diğer sürümleri için aynıdır.

Bu öğretici için aşağıdakiler gereklidir:

Örnek uygulama

Bu öğreticide kullanılan örnek uygulamayı keşfetmek için depodan https://github.com/Azure-Samples/msdocs-app-service-sqldb-dotnetcore indirin veya aşağıdaki Git komutunu kullanarak kopyalayın:

git clone https://github.com/Azure-Samples/msdocs-app-service-sqldb-dotnetcore.git
cd msdocs-app-service-sqldb-dotnetcore

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 → Yakınınızda herhangi bir Azure bölgesi.
  3. msdocs-core-sql-XYZ →, burada XYZ herhangi bir rastgele karakterdir. Bu ad Azure genelinde benzersiz olmalıdır.
  4. .NET 7 (STS)çalışma zamanı yığını.
  5. Redis için Azure Cache eklensin mi? → Evet.
  6. Barındırma planıBasic. 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şiktir ve arka uç ağ trafiğini yalıttır.
  • Özel uç noktalar , veritabanı sunucusu ve sanal ağdaki Redis önbelleği için Erişim uç noktaları →.
  • ağ arabirimleri → Özel IP adreslerini temsil eder ve özel uç noktaların her biri için bir tane olur.
  • 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

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ının sol menüsünde Yapılandırma'yı seçin.

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

2. Adım:

  1. Sayfanın en altına kaydırın ve Bağlanion 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.
  2. Ayrıca, 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.
  3. İsterseniz, her ayarın sağındaki Düzenle düğmesini seçip değerini görebilir veya kopyalayabilirsiniz. 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şlatacaktır.

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
  3. Çatal'ı seçin.
  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: App Service sayfasının sol menüsünde Dağıtım Merkezi'ni seçin.

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

3. 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. Dal'da ana'yı seçin.
  6. Üstteki menüde Kaydet'i seçin. App Service, .github/workflows dizinde seçilen GitHub deposuna bir iş akışı dosyası işler.

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

4. Adım: Çatallanmış örneğin GitHub sayfasına dönün, tuşa basarak tarayıcıda Visual Studio Code'ı . açın.

GitHub'da Visual Studio Code tarayıcı deneyimini açmayı gösteren ekran görüntüsü.

5. Adım: Tarayıcıda Visual Studio Code'da:

  1. Gezginde DotNetCoreSqlDb/appsettings.json açın.
  2. daha önce App Service'te oluşturulan bağlantı dizesi eşleşen bağlantı dizesi adını MyDbConnectionAZURE_SQL_CONNECTIONSTRINGolarak değiştirin.

appsettings.json'da bağlantı dizesi adın değiştiğini gösteren ekran görüntüsü.

6. Adım:

  1. Gezginde DotNetCoreSqlDb/Program.cs açın.
  2. yönteminde options.UseSqlServer bağlantı dizesi adını MyDbConnection olarak AZURE_SQL_CONNECTIONSTRINGdeğiştirin. Bağlantı dizesi burada örnek uygulama tarafından kullanılır.
  3. builder.Services.AddDistributedMemoryCache(); yöntemini kaldırın ve aşağıdaki kodla değiştirin. Kodunuzu bellek içi önbellek kullanmaktan Azure'daki Redis önbelleğine değiştirir ve daha önce kullanarak AZURE_REDIS_CONNECTIONSTRING bunu yapar.
builder.Services.AddStackExchangeRedisCache(options =>
{
options.Configuration = builder.Configuration["AZURE_REDIS_CONNECTIONSTRING"];
options.InstanceName = "SampleInstance";
});

Program.cs bağlantı dizesi adın değiştiğini gösteren ekran görüntüsü.

7. Adım:

  1. Gezginde .github/workflows/main_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 7.0.14Entity 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 -p DotNetCoreSqlDb/DotNetCoreSqlDb.csproj -o ${{env.DOTNET_ROOT}}/myapp/migrate. 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ü.

8. Adım:

  1. Kaynak Denetimi uzantısını seçin.
  2. Metin kutusuna gibi Configure DB & Redis & add migration bundlebir işleme iletisi yazın.
  3. İşleme ve Gönderme'yi seçin.

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

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

10. 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 Tamamlandı durumunu göstermesini bekleyin. Bu işlem birkaç 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ında, soldaki menüdeN SSH'yi 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. ile ./migrateGitHub iş akışı tarafından oluşturulan geçiş paketini çalıştırın. Başarılı olursa, App Service SQL Veritabanı başarıyla bağlanıyor. 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.

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

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ükleri'ni seçin.
  2. Uygulama günlüğü'nin altında Dosya Sistemi'ne 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ü. :

Sık sorulan sorular

Bu kurulumun maliyeti ne kadardır?

Kaynak oluşturma 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.

Sonraki adımlar

Ö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: