Dosyaları App Service dağıtma
Bu makalede, kodunuzu posta, WAR, JAR veya EAR paketi olarak Azure App Serviceiçin nasıl dağıtacağınız gösterilmektedir. Ayrıca, tek tek dosyaların uygulama paketinizden ayrı App Service nasıl dağıtılacağını gösterir.
Önkoşullar
Bu makaledeki adımları tamamlayabilmeniz için bir App Service uygulaması oluşturunveya başka bir öğretici için oluşturduğunuz uygulamayı kullanın.
Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun.
Proje ZIP paketi oluşturma
Not
Dosyaları bir ZIP paketine indirdiyseniz, önce dosyaları ayıklayın. örneğin, GitHub bir zıp paketini indirdiyseniz, bu dosyayı olduğu gibi dağıtamazsınız. GitHub, App Service birlikte çalışmayan, ek iç içe dizinler ekler.
Yerel bir 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.jsüzerinde package.js, üzerinde bower.js ve requirements.txt gibi paket yönetim dosyalarını da içerebilir.
Dağıtım otomasyonunu sizin için çalıştırmak App Service istemiyorsanız, tüm derleme görevlerini çalıştırın (örneğin,,,, npm bower gulp composer ve pip ) ve uygulamayı çalıştırmak için ihtiyacınız olan tüm dosyalara sahip olduğunuzdan emin olun. Paketinizi doğrudan çalıştırmakistiyorsanız bu adım gereklidir.
Projenizdeki tüm öğeleri içeren bir ZIP arşivi oluşturun. dotnetProjeler için, bu klasör komutun çıkış klasörüdür dotnet publish . Aşağıdaki komut terminalinizdeki varsayılan aracı kullanmaktadır:
# Bash
zip -r <file-name>.zip .
# PowerShell
Compress-Archive -Path * -DestinationPath <file-name>.zip
ZIP paketi dağıtma
bir zıp paketini dağıttığınızda App Service, uygulamanızın varsayılan yolundaki ( D:\home\site\wwwroot Linux için Windows), içerik paketini kaldırır /home/site/wwwroot .
Bu ZIP paketi dağıtımı, sürekli tümleştirme tabanlı dağıtımları destekleyen 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üklemeyi içeren varsayılan derleme işlemini açma seçeneği.
- Dağıtım komut dosyalarını çalıştırma dahil dağıtım özelleştirmesi.
- Dağıtım günlükleri.
- 2048 MB 'lık paket boyutu sınırı.
Daha fazla bilgi için bkz. kudu belgeleri.
Not
ZIP paketindeki dosyalar yalnızca, zaman damgaları zaten dağıtıldıklarıyla eşleşmezse kopyalanır. Çıkışları önbelleğe alan bir yapı işlemi kullanarak bir ZIP oluşturmak daha hızlı dağıtımlar oluşmasına neden olabilir. Daha fazla bilgi için bkz. bir zip dosyasından veya URL 'Den dağıtma.
Az WebApp Deploy komutunu kullanarak Web UYGULAMANıZA bir ZIP paketi dağıtın. CLı komutu, dosyaları dağıtmak için kudu PUBLISH API 'yi kullanır ve tamamen özelleştirilebilir.
Aşağıdaki örnek, bir ZIP paketini sitenize iter. İçin yerel posta paketinizin yolunu belirtin --src-path .
az webapp deploy --resource-group <group-name> --name <app-name> --src-path <zip-package-path>
Bu komut, ZIP paketini dağıttıktan sonra uygulamayı yeniden başlatır.
Web uygulamalarınızı ağ yapılandırmasına bağlı olarak, yerel ortamınız üzerinden siteye doğrudan erişim engellenmiş olabilir. Kodunuzu bu senaryoda dağıtmak için ZIP'inizi web uygulamasından erişilebilen bir depolama sistemine yayımlayın ve ZIP'i web uygulamasına itmek yerine uygulamayı depolama konumdan çekmesi için tetiklersiniz. Daha fazla bilgi için ağ güvenliğine sahip web uygulamalarına dağıtım hakkında bu makaleye bakın.
aşağıdaki örnek, --src-url bir Azure Depolama hesabının URL 'sini belirtmesi gereken URL 'yi belirtmek için parametresini kullanır.
az webapp deploy --resource-group <grou-name> --name <app-name> --src-url "https://storagesample.blob.core.windows.net/sample-container/myapp.zip?sv=2021-10-01&sb&sig=slk22f3UrS823n4kSh8Skjpa7Naj4CG3
ZIP dağıtımı için derleme Otomasyonu 'nu etkinleştir
Varsayılan olarak, dağıtım altyapısı bir ZIP paketinin olduğu gibi çalıştırılmaya hazır olduğunu varsayar ve herhangi bir derleme Otomasyonu çalıştırmaz. Bir Git dağıtımındaolduğu gibi aynı derleme Otomasyonu 'nu etkinleştirmek için SCM_DO_BUILD_DURING_DEPLOYMENT Cloud Shellaşağıdaki komutu çalıştırarak uygulama ayarını ayarlayı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 bkz. kudu belgeleri.
Dağıtım sırasında uygulamama ne olur?
Resmi olarak desteklenen tüm dağıtım yöntemleri, uygulamanın /home/site/wwwroot klasöründeki dosyalarda değişiklik yapın. Bu dosyalar, uygulamalarınızı çalıştırmak için kullanılır. Bu nedenle, kilitli dosyalar nedeniyle dağıtım başarısız olabilir. Dosyaların hepsi aynı anda güncelleştirilmez olduğundan, uygulama dağıtım sırasında tahmin edilemez şekilde davranabilirsiniz. Bu davranış, müşteriye yönelik bir uygulama için istenmeyen bir davranıştır. Bu sorunlardan kaçınmanın birkaç yolu vardır:
- Paketinden çıkarmadan, uygulamanızıdoğrudan ZIP paketinden çalıştırın.
- Dağıtım sırasında uygulamayı durdurun veya çevrimdışı modu etkinleştirin. Daha fazla bilgi için bkz. Dağıtım sırasında kilitli dosyalarla ilgilenin.
- Otomatik değiştirme açık bir hazırlama yuvasına dağıtın.
WAR/JAR/EAR paketlerini dağıtma
Azure CLı, PowerShell veya kudu yayımlama API 'sini kullanarak Java Web uygulamanızı çalıştırmak için War, jarveya Ear paketinizi App Service yükleyebilirsiniz.
Dağıtım işlemi, paketi paylaşılan dosya sürücüsüne doğru şekilde koyar (bkz. kudu PUBLISH API başvurusu). Bu nedenle, FTP veya WebDeploy kullanarak War/jar/Ear paketlerini dağıtmak önerilmez.
Az WebApp Deploy komutunu kullanarak Tomcat veya JPATRON EAP 'ye BIR War paketi dağıtın. İçin yerel Java paketinizin yolunu belirtin --src-path .
az webapp deploy --resource-group <group-name> --name <app-name> --src-path ./<package-name>.war
Web uygulamalarınızı ağ yapılandırmasına bağlı olarak, yerel ortamınız üzerinden siteye doğrudan erişim engellenmiş olabilir. Kodunuzu bu senaryoda dağıtmak için ZIP'inizi web uygulamasından erişilebilen bir depolama sistemine yayımlayın ve ZIP'i web uygulamasına itmek yerine uygulamayı depolama konumdan çekmesi için tetiklersiniz. Daha fazla bilgi için ağ güvenliğine sahip web uygulamalarına dağıtım hakkında bu makaleye bakın.
aşağıdaki örnek, --src-url web uygulamasının ZIP 'i çekmesini gerektiren bir Azure Depolama hesabının URL 'sini belirtmek için parametresini kullanır.
az webapp deploy --resource-group <grou-name> --name <app-name> --src-url "https://storagesample.blob.core.windows.net/sample-container/myapp.war?sv=2021-10-01&sb&sig=slk22f3UrS823n4kSh8Skjpa7Naj4CG3
CLı komutu, paketi dağıtmak için kudu PUBLISH API 'yi kullanır ve tamamen özelleştirilebilir.
Ayrı dosyaları dağıt
Parametresi ile az WebApp Deploy komutunu kullanarak Web uygulamanıza bir başlangıç betiği, kitaplık ve statik dosya dağıtın --type .
Bir başlangıç betiğini bu şekilde dağıtırsanız, App Service uygulamanızı başlatmak için komut dosyanızı otomatik olarak kullanır.
CLı komutu, dosyaları dağıtmak için kudu PUBLISH API 'yi 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
Kudu Publish API başvurusu
publishKudu API 'si, CLI komutundan URL sorgu parametreleri olarak aynı parametreleri belirtmenize olanak tanır. Kudu API 'SI ile kimlik doğrulaması yapmak için, uygulamanızın dağıtım kimlik bilgileriyletemel kimlik doğrulaması kullanabilirsiniz.
Aşağıdaki tabloda, kullanılabilir sorgu parametreleri, izin verilen değerler 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 yapıt türü, varsayılan hedef yolu ayarlar ve web uygulamasına dağıtımın nasıl iş gerektiğini bilgi sağlar. - type=zip: İçeriğin dalını çıkararak bir ZIP paketi /home/site/wwwroot dağıtın. path parametresi isteğe bağlıdır. - type=war: Bir WAR paketi dağıtın. Varsayılan olarak, WAR paketi'ne /home/site/wwwroot/app.war dağıtılır. Hedef yol ile path belirtilebilir. - type=jar: jar paketini 'ye /home/site/wwwroot/app.jar dağıtın. parametresi path yoksayılır - type=ear: bir EAR paketini 'ye /home/site/wwwroot/app.ear dağıtın. parametresi path yoksayılır - type=lib: Bir JAR kitaplık dosyası dağıtın. Varsayılan olarak, dosya 'ye /home/site/libs dağıtılır. Hedef yol ile path belirtilebilir. - type=static: Statik bir dosya (örn. bir betik) dağıtın. Varsayılan olarak, dosya 'ye /home/site/scripts dağıtılır. Hedef yol ile path belirtilebilir. - type=startup: Uygulamanızın başlangıç App Service otomatik olarak kullanan bir betik dağıtın. Varsayılan olarak betik, linux ve D:\home\site\scripts\<name-of-source> Windows home/site/wwwroot/startup.sh için 'ye dağıtılır. Hedef yol ile path belirtilebilir. |
Evet | Dize |
restart |
true|false |
Varsayılan olarak, API dağıtım işlemi () sonra uygulamayı yeniden restart=true başlatıyor. Birden çok yapıt dağıtmak için, ayarını kullanarak son dağıtımdan sonra yeniden başlatmaları restart=false önlenin. |
No | Boole |
clean |
true|false |
Yapıyı dağıtmadan önce hedef dağıtımın temiz olup olmadığını (silin) belirtir. | No | Boole |
ignorestack |
true|false |
Yayımlama API'si, sitenizin dil yığınına bağlı olarak güvenli varsayılanları WEBSITE_STACK seçmek için ortam değişkenini kullanır. Bu parametreyi olarak false ayarlarsanız dile özgü tüm varsayılanlar devre dışıdır. |
No | Boole |
path |
"<absolute-path>" |
Yapıt dağıtın mutlak yolu. Örneğin, "/home/site/deployments/tools/driver.jar" , "/home/site/scripts/helper.sh" . |
Hayır | Dize |
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ı sağlar.