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 aboneliğiniz yoksa başlamadan önce birücretsiz Azure hesabı oluşturun.

Proje ZIP paketi oluşturma

Önemli

Dağıtım için ZIP paketini oluştururken kök dizini değil, yalnızca içindeki dosyaları ve dizinleri ekleyin. GitHub deposunu ZIP dosyası olarak indirirseniz, bu dosyayı olduğu gibi App Service'e dağıtamazsınız. GitHub, App Service ile çalışmayan ek iç içe dizinleri en üst düzeye ekler.

Yerel terminal penceresinde uygulama projenizin kök dizinine gidin.

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

App Service'in dağıtım otomasyonunu sizin için çalıştırmasını istemiyorsanız, tüm derleme görevlerini (örneğin, npm, bower, gulp, composerve pip) çalıştırın ve 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. Projeler için dotnet bu, komutun çıkış dizinindeki dotnet publish her şeydir (çıkış dizininin kendisi hariç). Örneğin, geçerli dizinin içeriğini içeren bir ZIP paketi oluşturmak için terminalinizde aşağıdaki komut:

# 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 için, /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 da dahil olmak üzere dağıtım özelleştirmesi.
  • Dağıtım günlükleri.
  • 2048 MB paket boyutu sınırı.

Not

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

Kudu'da zip deploy kullanıcı arabirimi ile

Tarayıcıda https://<app_name>.scm.azurewebsites.net/ZipDeployUI adresine gidin.

Proje zip paketi oluşturma bölümünde oluşturduğunuz ZIP paketini web sayfasındaki dosya gezgini alanına sürükleyerek karşıya yükleyin.

Dağıtım devam ederken sağ üst köşedeki bir simge yüzde cinsinden ilerleme durumunu gösterir. Ayrıca sayfada, gezgin alanının altında işlemin ayrıntılı iletileri de gösterilir. Dağıtım tamamlandığında son iletide ifadesi Deployment successfulyer almalıdır.

Yukarıdaki uç nokta şu anda Linux Uygulama Hizmetleri 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ğıtımı kullanıcı arabirimi olmadan

az webapp deploy komutunu kullanarak web uygulamanıza bir ZIP paketi dağıtın. 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 göndererek. 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 otomasyonı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ındakiyle aynı derleme otomasyonunu etkinleştirmek için Cloud Shell'de aşağıdaki komutu çalıştırarak uygulama ayarını yapın:SCM_DO_BUILD_DURING_DEPLOYMENT

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/EAR paketlerini dağıtma

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

Burada gösterilen dağıtım işlemi paketi uygulamanın içerik paylaşımına doğru adlandırma kuralı ve dizin yapısıyla yerleştirir (bkz . Kudu yayımlama API başvurusu) ve önerilen yaklaşımdır. BUNUN yerine FTP veya WebDeploy kullanarak WAR/JAR/EAR paketleri dağıtırsanız adlandırma veya yapıdaki hatalardan dolayı bilinmeyen hatalar görebilirsiniz.

az webapp deploy komutunu kullanarak Tomcat veya JBoss EAP'ye war paketi dağıtın. 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

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

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 ve tamamen özelleştirilebilir.

Başlangıç betiği dağıtma

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

Kitaplık dosyası dağıtma

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ğıtma

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üvenliği sağlanan 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 korumak için 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-pathkomutunu kullanın--src-url. Aşağıdaki örnekte, Azure Depolama hesabında barındırılan zip dosyasının URL'sini belirtmek için parametresi kullanılır--src-url.

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ımlama API'si başvurusu

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ını kullanmak en iyisidir, 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.

Tuş İzin verilen değerler Açıklama Gerekli Tür
type war|jar|ear|lib|startup|static|zip Dağıtılmakta olan yapıtın türü, varsayılan hedef yolu ayarlar ve web uygulamasına dağıtımın nasıl işleneceğini bildirir.
- type=zip: İçeriğin sıkıştırmasını 'a /home/site/wwwrootaçarak bir ZIP paketi dağıtın. target-path parametresi isteğe bağlıdır.
- type=war: WAR paketini dağıtın. WAR paketi varsayılan olarak öğesine /home/site/wwwroot/app.wardağı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ıldı
- type=ear: öğesine /home/site/wwwroot/app.earear paketi dağıtın. target-path Parametresi yoksayıldı
- type=lib: JAR kitaplık dosyasını dağıtın. Varsayılan olarak, dosya öğesine /home/site/libsdağıtılır. Hedef yol ile target-pathbelirtilebilir.
- type=static: Statik bir dosya (betik gibi) dağıtın. Varsayılan olarak, dosya öğesine /home/site/wwwrootdağı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 ve home/site/wwwroot/startup.sh Linux için'e D:\home\site\scripts\<name-of-source> dağıtılır. Hedef yol ile target-pathbelirtilebilir.
Yes String
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ğıtmak için, ayarını yaparak restart=falseson dağıtım dışında tüm dağıtımlarda yeniden başlatmaları önleyin. Hayır Boolean
clean true|false Yapıtı oraya dağıtmadan önce hedef dağıtımın temizlenip silinmeyeceğini belirtir. Hayır Boolean
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. Bu parametreyi dile özgü varsayılanları devre dışı bırakmak için false ayarlamak. Hayır Boolean
target-path Mutlak yol Yapıtın dağıtılacağı mutlak yol. Örneğin, "/home/site/deployments/tools/driver.jar", "/home/site/scripts/helper.sh". Hayır String

Sonraki adımlar

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.

Diğer kaynaklar