Aracılığıyla paylaş


Azure App Service'e dosya dağıtma

Bu makalede kodunuzu Azure Uygulaması Hizmetine ZIP, WAR, JAR veya EAR paketi olarak nasıl dağıtabileceğiniz gösterilmektedir. Ayrıca uygulama paketinizden ayrı olarak App Service'e tek tek dosyaların nasıl dağıtılacağı da gösterilir.

Önkoşullar

Bu makaledeki adımları tamamlamak için bir App Service uygulaması oluşturun veya başka bir öğretici için oluşturduğunuz bir uygulamayı kullanın.

Azure hesabınız yoksa, başlamadan önce ücretsiz hesap oluşturun.

Proje ZIP paketi oluşturma

Önemli

Dağıtım için ZIP paketini oluşturduğunuzda kök dizini eklemeyin. Kök dizine yalnızca dosyaları ve dizinleri ekleyin. GitHub deposunu ZIP dosyası olarak indirirseniz, bu dosyayı Olduğu gibi App Service'e dağıtamazsınız. GitHub, en üst seviyede iç içe dizinler ekler, bu da App Service ile uyumlu değildir.

Yerel terminal penceresinde uygulama projenizin kök dizinine gidin.

Bu dizin, index.html, index.php ve app.js gibi web uygulamanızın giriş dosyasını içermelidir. Ayrıca project.json, composer.json, package.json, bower.json ve requirements.txt gibi paket yönetim dosyaları da içerebilir.

App Service'in sizin için dağıtım otomasyonunu çalıştırmasını istemiyorsanız, tüm derleme görevlerini çalıştırın. Örneğin: npm, bower, gulp, composerve pip. Uygulamayı çalıştırmak için ihtiyacınız olan tüm dosyalara sahip olduğunuzdan emin olun. Paketinizi doğrudan çalıştırmak istiyorsanız bu adım gereklidir.

Projenizdeki tüm öğeleri içeren bir ZIP arşivi oluşturun. dotnet projeleri için, dotnet publish komutunun çıkış dizinindeki her şeyi ekleyin, ancak çıkış dizininin kendisini hariç tutun. Örneğin, geçerli dizinin içeriğini içeren bir ZIP paketi oluşturmak için terminalinize aşağıdaki komutu girin:

# Bash
zip -r <file-name>.zip .

# PowerShell
Compress-Archive -Path * -DestinationPath <file-name>.zip

ZIP paketi dağıtma

Bir ZIP paketi dağıttığınızda App Service, içeriğini uygulamanızın varsayılan yolunda açar: D:\home\site\wwwroot Windows ve /home/site/wwwroot Linux için.

Bu ZIP paketi dağıtımı, sürekli tümleştirme tabanlı dağıtımları destekleyen aynı Kudu hizmetini kullanır. Kudu, ZIP paketi dağıtımı için aşağıdaki işlevleri destekler:

  • Önceki bir dağıtımdan kalan dosyaların silinmesi
  • Paket geri yükleme içeren varsayılan derleme işlemini açma seçeneği
  • Dağıtım betiklerini çalıştırma dahil olmak üzere dağıtım özelleştirmesi
  • Dağıtım günlükleri
  • 2.048 megabaytlık paket boyutu sınırı

Uyarı

ZIP paketindeki dosyalar yalnızca zaman damgaları zaten dağıtılmış olanla eşleşmiyorsa kopyalanır.

Kudu'da ZIP dağıtım kullanıcı arayüzü ile dağıtmak

  1. Uygulamanızı Azure portalında açın ve Geliştirme Araçları> ve ardından Git'i seçin.
  2. Kudu'da Araçlar>Zip Push Kurulum seçin.
  3. Proje zip paketi oluşturma bölümünde oluşturduğunuz ZIP paketini karşıya yükleyin. Web sayfasındaki dosya gezgini alanına sürükleyin.

Dağıtım devam ederken, sağ üst köşedeki bir simge ilerleme yüzdesini gösterir. Sayfada, dosya gezgini alanının altındaki işlem için iletiler de görüntülenir. Dağıtım tamamlandığında son iletide "Dağıtım başarılı" ifadesi yer almalıdır.

Bu uç nokta şu anda Linux üzerinde App Service için çalışmıyor. Bunun yerine FTP veya ZIP dağıtım API'sini kullanmayı göz önünde bulundurun.

Kudu'da ZIP dağıtma kullanıcı arabirimi olmadan dağıtım yapma

komutunu kullanarak web uygulamanıza bir ZIP paketi dağıtın az webapp deploy . CLI komutu, dosyaları dağıtmak için Kudu yayımlama API'sini kullanır ve tamamen özelleştirilebilir.

Aşağıdaki örnek, sitenize bir ZIP paketi yükler. için --src-pathyerel ZIP paketinizin yolunu belirtin.

az webapp deploy --resource-group <group-name> --name <app-name> --src-path <zip-package-path>

Bu komut, ZIP paketini dağıttığınızda uygulamayı yeniden başlatır.

ZIP dağıtımı için derleme otomasyonlarını etkinleştirme

Varsayılan olarak, dağıtım altyapısı zip paketinin olduğu gibi çalışmaya hazır olduğunu ve herhangi bir derleme otomasyonu çalıştırmadığını varsayar. Git dağıtımında kullanılan derleme otomasyonunu etkinleştirmek için uygulama ayarını ayarlayınSCM_DO_BUILD_DURING_DEPLOYMENT. Azure Cloud Shell'de aşağıdaki komutu çalıştırın:

az webapp config appsettings set --resource-group <group-name> --name <app-name> --settings SCM_DO_BUILD_DURING_DEPLOYMENT=true

Daha fazla bilgi için Kudu belgelerine bakın.

WAR, JAR veya EAR paketlerini dağıtma

Azure CLI, PowerShell veya Kudu yayımlama API'sini kullanarak Java web uygulamanızı çalıştırmak için WAR, JAR veya EAR paketinizi App Service'e dağıtabilirsiniz.

Burada gösterilen dağıtım işlemi, paketi doğru adlandırma kuralı ve dizin yapısıyla uygulamanın içerik paylaşımına yerleştirir. Daha fazla bilgi için Kudu yayımlama API'si başvurusu başlıklı belgeye bakın. Bu yaklaşımı öneririz. BUNUN yerine FTP veya Web Dağıtımı kullanarak WAR, JAR veya EAR paketleri dağıtırsanız adlandırma veya yapıdaki hatalardan dolayı bilinmeyen hatalar görebilirsiniz.

komutunu kullanarak Bir WAR paketini Tomcat veya JBoss EAP'ye dağıtın az webapp deploy . için --src-pathyerel Java paketinizin yolunu belirtin.

az webapp deploy --resource-group <group-name> --name <app-name> --src-path ./<package-name>.war

CLI komutu, paketi dağıtmak için Kudu yayımlama API'sini kullanır ve tamamen özelleştirilebilir.

Tek tek dosyaları dağıtma

tr-TR: az webapp deploy komutunu --type parametresiyle kullanarak web uygulamanıza bir başlangıç betiği, kitaplık ve statik dosya dağıtın.

Bu şekilde bir başlangıç betiği dağıtırsanız App Service, uygulamanızı başlatmak için betiğinizi otomatik olarak kullanır.

CLI komutu, dosyaları dağıtmak için Kudu yayımlama API'sini kullanır. Komut tamamen özelleştirilebilir.

Başlangıç betiği dağıtın

az webapp deploy --resource-group <group-name> --name <app-name> --src-path scripts/startup.sh --type=startup

Kitaplık dosyası dağıtın

az webapp deploy --resource-group <group-name> --name <app-name> --src-path driver.jar --type=lib

Statik dosya dağıtma

az webapp deploy --resource-group <group-name> --name <app-name> --src-path config.json --type=static

Ağ güvenlikli uygulamalara dağıtın

Web uygulamanızın ağ yapılandırmasına bağlı olarak, geliştirme ortamınızdan uygulamaya doğrudan erişim engellenebilir. (Bkz. Ağ güvenlikli sitelere dağıtma ve Ağ güvenliği sağlanan sitelere dağıtma, bölüm 2.) Paketi veya dosyayı doğrudan web uygulamasına göndermek yerine, web uygulamasından erişilebilen bir depolama sisteminde yayımlayabilir ve uygulamayı zip'i depolama konumundan çekmek için tetikleyebilirsiniz.

Uzak URL genel olarak erişilebilen herhangi bir konum olabilir, ancak bunu korumak için paylaşılan erişim imzası (SAS) anahtarına sahip bir blob depolama kapsayıcısı kullanmak en iyisidir.

az webapp deploy komutunu diğer bölümlerde olduğu gibi kullanın, ancak yerine --src-urlkomutunu kullanın--src-path. Aşağıdaki örnekte, Azure Depolama hesabında barındırılan --src-url bir ZIP dosyasının URL'sini belirtmek için parametresi kullanılır.

az webapp deploy --resource-group <group-name> --name <app-name> --src-url "https://storagesample.blob.core.windows.net/sample-container/myapp.zip?sv=2021-10-01&sb&sig=slk22f3UrS823n4kSh8Skjpa7Naj4CG3 --type zip

Kudu yayın API'si referansı

Kudu API'si publish , CLI komutundan URL sorgu parametreleriyle aynı parametreleri belirtmenize olanak tanır. Kudu REST API'siyle kimlik doğrulaması yapmak için belirteç kimlik doğrulaması öneririz, ancak uygulamanızın dağıtım kimlik bilgileriyle temel kimlik doğrulamasını da kullanabilirsiniz.

Aşağıdaki tabloda kullanılabilir sorgu parametreleri, bunların izin verilen değerleri ve açıklamaları gösterilmektedir.

Anahtar İzin verilen değerler Açıklama Gerekli Türü
type war|jar|ear|lib|startup|static|zip Dağıtılan nesnenin türüdür. Varsayılan hedef yolu ayarlar ve web uygulamasına dağıtımın nasıl işlenmesi gerektiğini bildirir.

type=zip: Bir ZIP paketini /home/site/wwwroot konumuna içeriklerini açarak dağıtın. target-path parametresi isteğe bağlıdır.

type=war: WAR paketini dağıtın. Varsayılan olarak, WAR paketi /home/site/wwwroot/app.war konumuna dağıtılır. Hedef yol ile target-pathbelirtilebilir.

type=jar: adresine bir JAR paketi /home/site/wwwroot/app.jardağıtın. target-path parametresi yoksayılır.

type=ear: /home/site/wwwroot/app.ear öğesine bir EAR paketi dağıtın. target-path parametresi yoksayılır.

type=lib: JAR kitaplık dosyasını dağıtın. Varsayılan olarak, dosya /home/site/libs öğesine dağıtılır. Hedef yol ile target-pathbelirtilebilir.

type=static: Betik gibi statik bir dosya yayınlayın. Varsayılan olarak, dosya /home/site/wwwroot öğesine dağıtılır.

type=startup: App Service'in uygulamanızın başlangıç betiği olarak otomatik olarak kullandığı bir betik dağıtın. Varsayılan olarak, betik Windows için D:\home\site\scripts\<name-of-source> ve Linux için home/site/wwwroot/startup.sh dağıtılır. Hedef yol ile target-pathbelirtilebilir.
Evet Dize
restart true|false Varsayılan olarak, API dağıtım işleminin ()restart=true ardından uygulamayı yeniden başlatır. Birden çok yapıt dağıttığınızda, son dağıtım dışında tüm yeniden başlatmaları restart=false ayarını kullanarak engelleyebilirsiniz. Hayır Boolean (Boole Mantığı)
clean true|false Yapıtı oraya dağıtmadan önce hedef dağıtımın temizlenip silinmeyeceğini belirtir. Hayır Boolean (Boole Mantığı)
ignorestack true|false Yayımlama API'si, sitenizin WEBSITE_STACK dil yığınına bağlı olarak güvenli varsayılanları seçmek için ortam değişkenini kullanır. false parametresini ayarlamak, dile özgü varsayılanları devre dışı bırakır. Hayır Boolean (Boole Mantığı)
target-path Mutlak yol Yapıtın dağıtılacağı mutlak yol. Örneğin, /home/site/deployments/tools/driver.jar veya /home/site/scripts/helper.sh. Hayır Dize

Daha gelişmiş dağıtım senaryoları için Git ile Azure'a dağıtmayı deneyin. Azure'a Git tabanlı dağıtım, sürüm denetimi, paket geri yükleme, MSBuild ve daha fazlasını etkinleştirir.