App Service'e dosya dağıtma
Not
1 Haziran 2024'den itibaren, yeni oluşturulan tüm App Service uygulamaları adlandırma kuralını <app-name>-<random-hash>.<region>.azurewebsites.net
kullanarak benzersiz bir varsayılan ana bilgisayar adı oluşturma seçeneğine sahip olacaktır. Mevcut uygulama adları değişmeden kalır.
Örnek: myapp-ds27dh7271aah175.westus-01.azurewebsites.net
Diğer ayrıntılar için App Service Kaynağı için Benzersiz Varsayılan Ana Bilgisayar Adı'na bakın.
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
, composer
ve 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 adresine gidin https://<app_name>.scm.azurewebsites.net/ZipDeployUI
(üstteki nota bakın).
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 successful
yer 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-path
yerel 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-path
yerel 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-path
komutunu kullanın--src-url
. 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ı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.
Anahtar | İ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/wwwroot aç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.war dağıtılır. Hedef yol ile target-path belirtilebilir. - type=jar : adresine bir JAR paketi /home/site/wwwroot/app.jar dağıtın. target-path Parametresi yoksayıldı- type=ear : öğesine /home/site/wwwroot/app.ear ear 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/libs dağıtılır. Hedef yol ile target-path belirtilebilir. - type=static : Statik bir dosya (betik gibi) dağıtın. Varsayılan olarak, dosya öğesine /home/site/wwwroot 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 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-path belirtilebilir. |
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=false son 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.