Aracılığıyla paylaş


Dağıtım en iyi uygulamaları

Not

1 Haziran 2024'den itibaren, yeni oluşturulan App Service uygulamaları adlandırma kuralını <app-name>-<random-hash>.<region>.azurewebsites.netkullanan benzersiz bir varsayılan ana bilgisayar adı oluşturabilir. Mevcut uygulama adları değişmeden kalır. Örneğin:

myapp-ds27dh7271aah175.westus-01.azurewebsites.net

Daha fazla bilgi için bkz . App Service Kaynağı için Benzersiz Varsayılan Ana Bilgisayar Adı.

Her geliştirme ekibinin, herhangi bir bulut hizmetinde verimli bir dağıtım işlem hattı uygulamayı zorlaştırabilecek benzersiz gereksinimleri vardır. Bu makalede Azure Uygulaması Hizmetine dağıtmanın üç ana bileşeni tanıtılır: dağıtım kaynakları, derleme işlem hatları ve dağıtım mekanizmaları. Bu makale ayrıca belirli dil yığınları için bazı en iyi yöntemleri ve ipuçlarını da kapsar.

Dağıtım bileşenleri

Bu bölümde App Service'e dağıtmaya yönelik üç ana bileşen açıklanmaktadır.

Dağıtım kaynağı

Dağıtım kaynağı, uygulama kodunuzun konumudur. Üretim uygulamaları için dağıtım kaynağı genellikle GitHub, Bitbucket veya Azure Repos gibi sürüm denetimi yazılımları tarafından barındırılan bir depodur. Geliştirme ve test senaryoları için dağıtım kaynağı yerel makinenizdeki bir proje olabilir.

Derleme işlem hattı oluşturma

Bir dağıtım kaynağına karar verdikten sonra, sonraki adımınız bir derleme işlem hattı seçmektir. Derleme işlem hattı, dağıtım kaynağından kaynak kodunuzu okur ve uygulamayı çalıştırılabilir duruma getirmek için bir dizi adım çalıştırır.

Adımlar kod derlemeyi, HTML ve JavaScript'i küçültmeyi, testleri çalıştırmayı ve bileşenleri paketlemeyi içerebilir. Derleme işlem hattı tarafından çalıştırılan belirli komutlar dil yığınınıza bağlıdır. Bu işlemleri Azure Pipelines gibi bir derleme sunucusunda veya yerel olarak çalıştırabilirsiniz.

Dağıtım mekanizması

Dağıtım mekanizması , yerleşik uygulamanızı web uygulamanızın /home/site/wwwroot dizinine yerleştirmek için kullanılan eylemdir. /wwwroot dizini, web uygulamanızın tüm örnekleri tarafından paylaşılan bağlı bir depolama konumudur. Dağıtım mekanizması uygulamanızı bu dizine yerleştirdiğinde, örnekleriniz yeni dosyaları eşitlemek için bir bildirim alır.

App Service aşağıdaki dağıtım mekanizmalarını destekler:

  • Kudu uç noktaları: Kudu , Windows App Service'te ayrı bir işlem olarak çalışan açık kaynak geliştirici üretkenlik aracıdır. Linux App Service'te ikinci bir kapsayıcı olarak çalışır. Kudu sürekli dağıtımları işler ve zipdeploy/ gibi dağıtım için HTTP uç noktaları sağlar.
  • FTP ve WebDeploy: Sitenizi veya kullanıcı kimlik bilgilerinizi kullanarak FTP veya WebDeploy aracılığıyla dosyaları karşıya yükleyebilirsiniz. Bu mekanizmalar Kudu'ya gitmez.

Azure Pipelines, Jenkins ve düzenleyici eklentileri gibi dağıtım araçları bu dağıtım mekanizmalarından birini kullanır.

Dağıtım yuvalarını kullanma

Mümkün olduğunda, yeni bir üretim derlemesi dağıttığınızda dağıtım yuvalarını kullanın. Standart App Service Planı katmanı veya daha iyisi ile uygulamanızı bir hazırlama ortamına dağıtabilir, değişikliklerinizi doğrulayabilir ve duman testleri yapabilirsiniz. Hazır olduğunuzda hazırlama ve üretim yuvalarınızı değiştirin. Değiştirme işlemi, üretim ölçeğinizle eşleşmesi için gerekli çalışan örneklerini ısıtır ve bu da kapalı kalma süresini ortadan kaldırır.

Kodu sürekli dağıtma

Projenizde test, Soru-Cevap ve hazırlama için ayrılmış dallar varsa, bu dalların her biri sürekli olarak bir hazırlama yuvasına dağıtılmalıdır. Bu yaklaşım Gitflow tasarımı olarak bilinir. Bu tasarım, paydaşlarınızın dağıtılan dalı kolayca değerlendirmesine ve test etmesine olanak tanır.

Üretim yuvanız için sürekli dağıtım hiçbir zaman etkinleştirilmemelidir. Bunun yerine, üretim dalınız (genellikle ana) üretim dışı bir yuvaya dağıtılmalıdır. Temel dalı serbest bırakmaya hazır olduğunuzda, bunu üretim yuvasına değiştirin. Üretime dağıtmak yerine üretime geçiş yapmak kapalı kalma süresini önler ve değişiklikleri yeniden değiştirerek geri almanızı sağlar.

Geliştirme, Hazırlama ve Ana dallar ile dağıtıldıkları yuvalar arasındaki akışı gösteren diyagram.

Kapsayıcıları sürekli dağıtma

Docker veya diğer kapsayıcı kayıt defterlerinden özel kapsayıcılar için, kapalı kalma süresini önlemek için görüntüyü bir hazırlama yuvasına dağıtın ve üretime geçin. Otomasyon, kod dağıtımından daha karmaşıktır. Görüntüyü bir kapsayıcı kayıt defterine göndermeniz ve web uygulamasında görüntü etiketini güncelleştirmeniz gerekir.

Yuvaya dağıtmak istediğiniz her dal için, dala yapılan her işlemede bu görevleri gerçekleştirmek için otomasyonu ayarlayın.

  1. Görüntüyü derleyin ve etiketleyin. Derleme işlem hattının bir parçası olarak, görüntüyü git işleme kimliği, zaman damgası veya diğer tanımlanabilir bilgilerle etiketleyin. Varsayılan en son etiketi kullanmamak en iyisidir. Aksi takdirde, şu anda dağıtılan kodu izlemek zordur ve bu da hata ayıklamayı daha zor hale getirir.
  2. Etiketli görüntüyü gönderme. Görüntü derlenip etiketlendikten sonra işlem hattı görüntüyü kapsayıcı kayıt defterine gönderir. Sonraki adımda dağıtım yuvası, kapsayıcı kayıt defterinden etiketli görüntüyü çeker.
  3. Dağıtım yuvasını yeni görüntü etiketiyle güncelleştirin. Bu özellik güncelleştirildiğinde, site otomatik olarak yeniden başlatılır ve yeni kapsayıcı görüntüsünü çeker.

Diyagramda Web Uygulaması, Container Registry ve depo dallarını temsil eden yuva kullanım görseli gösterilmektedir.

Bu makalede yaygın otomasyon çerçeveleri için örnekler yer alır.

Azure DevOps kullanma

App Service, Dağıtım Merkezi aracılığıyla kapsayıcılar için yerleşik sürekli teslime sahiptir. Azure portalında uygulamanıza gidin. Dağıtım'ın altında Dağıtım Merkezi'ni seçin. Deponuzu ve dalınızı seçmek için yönergeleri izleyin. Bu yaklaşım, seçilen dalınıza yeni işlemeler gönderildiğinde kapsayıcınızı otomatik olarak derlemek, etiketlemek ve dağıtmak için bir DevOps derleme ve yayın işlem hattı yapılandırır.

GitHub Actions'i kullanma

GitHub Actions ile kapsayıcı dağıtımınızı da otomatikleştirebilirsiniz. İş akışı dosyası kapsayıcıyı işleme kimliğiyle derleyip etiketler, kapsayıcı kayıt defterine gönderir ve belirtilen web uygulamasını yeni görüntü etiketiyle güncelleştirir.

on:
  push:
    branches:
    - <your-branch-name>

name: Linux_Container_Node_Workflow

jobs:
  build-and-deploy:
    runs-on: ubuntu-latest
    steps:
    # checkout the repo
    - name: 'Checkout GitHub Action'
      uses: actions/checkout@main

    - uses: azure/docker-login@v1
      with:
        login-server: contoso.azurecr.io
        username: ${{ secrets.REGISTRY_USERNAME }}
        password: ${{ secrets.REGISTRY_PASSWORD }}

    - run: |
        docker build . -t contoso.azurecr.io/nodejssampleapp:${{ github.sha }}
        docker push contoso.azurecr.io/nodejssampleapp:${{ github.sha }} 

    - uses: azure/webapps-deploy@v2
      with:
        app-name: 'node-rnc'
        publish-profile: ${{ secrets.azureWebAppPublishProfile }}
        images: 'contoso.azurecr.io/nodejssampleapp:${{ github.sha }}'

Diğer otomasyon sağlayıcılarını kullanma

Daha önce listelenen adımlar CircleCI veya Travis CI gibi diğer otomasyon yardımcı programları için geçerlidir. Ancak son adımda dağıtım yuvalarını yeni görüntü etiketleriyle güncelleştirmek için Azure CLI'yi kullanmanız gerekir. Otomasyon betiğinizde Azure CLI'yı kullanmak için aşağıdaki komutu kullanarak bir Hizmet Sorumlusu oluşturun.

az ad sp create-for-rbac --name "myServicePrincipal" --role contributor \
   --scopes /subscriptions/{subscription}/resourceGroups/{resource-group} \
   --sdk-auth

Betiğinizde, asıl bilgileri sağlayarak kullanarak az login --service-principaloturum açın. Daha sonra kapsayıcı adını, etiketini, kayıt defteri URL'sini ve kayıt defteri parolasını ayarlamak için kullanabilirsiniz az webapp config container set . Daha fazla bilgi için bkz . Circle CI üzerinde Azure CLI'da oturum açma.

Dile özgü dikkat edilmesi gerekenler

Java, Node ve .NET uygulamaları için aşağıdaki noktaları göz önünde bulundurun.

Java

JAR uygulamalarını dağıtmak için Kudu zipdeploy API'sini kullanın. WAR uygulamaları için wardeploy kullanın. Jenkins kullanıyorsanız bu API'leri doğrudan dağıtım aşamanızda kullanabilirsiniz. Daha fazla bilgi için bkz. Jenkins ile Azure Uygulaması Hizmetine Dağıtma.

Düğüm

Varsayılan olarak, Kudu Node uygulamanız (npm install) için derleme adımlarını çalıştırır. Azure DevOps gibi bir derleme hizmeti kullanıyorsanız Kudu derlemesi gereksizdir. Kudu derlemesini devre dışı bırakmak için değerini SCM_DO_BUILD_DURING_DEPLOYMENTiçeren bir falseuygulama ayarı oluşturun.

.NET

Varsayılan olarak, Kudu .NET uygulamanızdotnet build () için derleme adımlarını çalıştırır. Azure DevOps gibi bir derleme hizmeti kullanıyorsanız Kudu derlemesi gereksizdir. Kudu derlemesini devre dışı bırakmak için değerini SCM_DO_BUILD_DURING_DEPLOYMENTiçeren bir falseuygulama ayarı oluşturun.

Dağıtımla ilgili dikkat edilmesi gereken diğer noktalar

Diğer önemli noktalar yerel önbellek ve yüksek CPU veya bellektir.

Yerel önbellek

Azure Uygulaması Hizmeti içeriği Azure Depolama'da depolanır ve içerik paylaşımı olarak dayanıklı bir şekilde ortaya çıkar. Ancak bazı uygulamaların yalnızca yüksek kullanılabilirlikle çalıştırabilecekleri yüksek performanslı, salt okunur bir içerik deposuna ihtiyacı vardır. Bu uygulamalar yerel önbelleğin kullanılmasından yararlanabilir. Daha fazla bilgi için bkz. Azure Uygulaması Service Local Cache'e genel bakış.

Not

WordPress gibi içerik yönetimi siteleri için yerel önbellek önerilmez.

Kapalı kalma süresini önlemek için her zaman dağıtım yuvalarıyla yerel önbelleği kullanın. Bu özellikleri birlikte kullanma hakkında bilgi için bkz . En iyi yöntemler.

Yüksek CPU veya bellek

App Service Planınız kullanılabilir CPU veya belleğin %90'ını kullanıyorsa, temel alınan sanal makine dağıtımınızı işlemede sorun yaşayabilir. Bu durum oluştuğunda, dağıtımı gerçekleştirmek için örnek sayınızın ölçeğini geçici olarak artırın. Dağıtım tamamlandıktan sonra örnek sayısını önceki değerine döndürebilirsiniz.

Daha fazla bilgi için, kaynağınıza özgü eyleme dönüştürülebilir en iyi yöntemleri bulmak için App Service Tanılama'yı ziyaret edin.

  1. Azure portalında Web Uygulamanıza gidin.

  2. Sol gezinti bölmesinden App Service Tanılama'yı açan Sorunları tanıla ve çöz'e tıklayın.

  3. Kullanılabilirlik ve Performans'ı seçin veya Yüksek CPU Analizi gibi diğer seçenekleri keşfedin.

    Bu en iyi yöntemlerle ilgili olarak uygulamanızın geçerli durumunu görüntüleyin.

Kaynağınız için App Service Tanılama'yı doğrudan açmak için de bu bağlantıyı kullanabilirsiniz: https://portal.azure.com/?websitesextension_ext=asd.featurePath%3Ddetectors%2FParentAvailabilityAndPerformance#@microsoft.onmicrosoft.com/resource/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{siteName}/troubleshoot.