Doğrudan zip paketinden Azure App Service içinde uygulama çalıştırma
Bu Azure App Service,uygulamalarınızı doğrudan bir dağıtım ZIP paketi dosyasından çalıştırabilirsiniz. Bu makalede bu işlevi uygulamanıza nasıl etkinleştirebilirsiniz?
App Service diğer tüm dağıtım yöntemleri ortaktır: dosyalarınız uygulamanıza D:\home\site\wwwroot (veya Linux uygulamaları için /home/site/wwwroot) dağıtılır. Aynı dizin çalışma zamanında uygulamanız tarafından kullandığından, dosya kilidi çakışmaları nedeniyle dağıtımın başarısız olması ve bazı dosyalar henüz güncelleştirilmedik için uygulamanın tahmin edilemez şekilde davranması mümkündür.
Buna karşılık, doğrudan bir paketten çalıştırabilirsiniz, paket dosyaları wwwroot dizinine kopyalanmaz. Bunun yerine ZIP paketinin kendisi doğrudan salt okunur wwwroot dizini olarak takılmış olur. Doğrudan bir paketten çalıştırmanın çeşitli avantajları vardır:
- Dağıtım ve çalışma zamanı arasındaki dosya kilidi çakışmalarını ortadan kaldırma.
- Herhangi bir anda yalnızca tam olarak dağıtılan uygulamaların çalışmalarını sağlar.
- Bir üretim uygulamasına dağıtılabilir (yeniden başlatma ile).
- Dağıtımların performansını Azure Resource Manager artırır.
- Özellikle büyük npm paket ağaçları olan JavaScript işlevleri için soğuk başlangıç sürelerini azaltabilirsiniz.
Not
Şu anda yalnızca ZIP paket dosyaları de desteklenebildi.
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
Paketten çalıştırmayı etkinleştirme
Uygulama WEBSITE_RUN_FROM_PACKAGE ayarı bir paketten çalıştırmayı etkinleştirir. Ayarlamak için Azure CLI ile aşağıdaki komutu çalıştırın.
az webapp config appsettings set --resource-group <group-name> --name <app-name> --settings WEBSITE_RUN_FROM_PACKAGE="1"
WEBSITE_RUN_FROM_PACKAGE="1" , uygulamanıza yerel bir paketten uygulamanıza uygulama çalıştırmanıza olanak sağlar. Uzak bir paketten de çalıştırabilirsiniz.
Paketi çalıştırma
Uygulama uygulamanıza paket çalıştırmanın en kolay App Service Azure CLI az webapp deployment source config-zip komutuyladır. Örneğin:
az webapp deployment source config-zip --resource-group <group-name> --name <app-name> --src <filename>.zip
Uygulama ayarı ayar olduğundan, bu komut paket içeriğini WEBSITE_RUN_FROM_PACKAGE uygulamanın D:\home\site\wwwroot dizinine ayıklamaz. Bunun yerine, ZIP dosyasını olduğu gibi D:\home\data\SitePackages dizinine yükler ve çalışma zamanında yüklemek için ZIP paketinin adını içeren aynı dizinde bir packagename.txt oluşturur. ZIP paketinizi farklı bir şekilde (FTPgibi) karşıya yüklersanız, D:\home\data\SitePackages dizinini vepackagename.txtdosyası oluşturmanız gerekir.
Komut ayrıca uygulamayı yeniden başlatıyor. ayar olduğundan, App Service paketi salt okunur wwwroot dizini olarak bağlar ve uygulamayı doğrudan bağlı WEBSITE_RUN_FROM_PACKAGE dizinden çalıştırır.
Bunun yerine dış URL'den çalıştır
Paketi Azure Blob depolama alanı gibi bir dış URL'den de Depolama. Blob depolama hesabınıza Azure Depolama Gezgini yüklemek için bu dosyayı kullanabilirsiniz. Paylaşılan Erişim İmzası (SAS) ile özel bir depolama kapsayıcısı veya yönetilen kimlik kullanarak App Service güvenli bir şekilde erişmesini sağlayabilirsiniz.
Dosyanızı Blob depolamaya yükledikten ve dosya için bir SAS URL'niz olduktan sonra, WEBSITE_RUN_FROM_PACKAGE uygulama ayarını URL olarak ayarlayın. Aşağıdaki örnek Bunu Azure CLI kullanarak yapar:
az webapp config appsettings set --name <app-name> --resource-group <resource-group-name> --settings WEBSITE_RUN_FROM_PACKAGE="https://myblobstorage.blob.core.windows.net/content/SampleCoreMVCApp.zip?st=2018-02-13T09%3A48%3A00Z&se=2044-06-14T09%3A48%3A00Z&sp=rl&sv=2017-04-17&sr=b&sig=bNrVrEFzRHQB17GFJ7boEanetyJ9DGwBSV8OM3Mdh%2FM%3D"
Blob depolamada aynı adla güncelleştirilmiş bir paket yayımlarsanız, güncelleştirilmiş paketin blob depolama alanına yüklenmesi için App Service.
Yönetilen kimlik kullanarak Azure Blob Depolama paketi getirme
Azure Blob Depolama Azure AD ile istekleri yetkilendirmek için yalıtabilirsiniz. Başka bir anlama gelir; süre sonu ile bir SAS anahtarı oluşturmak yerine uygulamanın yönetilen kimliğine güvenebilirsiniz. Varsayılan olarak, uygulamanın sistem tarafından atanan kimliği kullanılır. Kullanıcı tarafından atanan bir kimlik belirtmek isterseniz, uygulama ayarını bu WEBSITE_RUN_FROM_PACKAGE_BLOB_MI_RESOURCE_ID kimliğin kaynak kimliği olarak ayarlayın. Ayar bir değer olarak "SystemAssigned" değerini de kabul eder, ancak bu ayar tamamen at ile aynıdır.
Kimliği kullanarak paketin getirilsin sağlamak için:
Blob'un özel erişim için yapılandırıldığından emin olmak.
Kimlik, Depolama blobu üzerinde kapsam ile Blob Veri Okuyucusu rolüne sahip olur. Rol ataması oluşturma hakkında ayrıntılı bilgi için bkz. Blob verilerine erişim için Azure rolü atama.
Uygulama
WEBSITE_RUN_FROM_PACKAGEayarını paketin blob URL'si olarak ayarlayın. Bu büyük olasılıkla "https://{storage-account-name}.blob.core.windows.net/{container-name}/{path-to-package}" şeklinde veya benzer bir şekilde olur.
Sorun giderme
- Doğrudan bir paketten çalıştırarak
wwwrootsalt okunur olabilir. Bu dizine dosya yazmayı denerse, uygulamanız bir hata alır. - TAR ve GZIP biçimleri desteklenmiyor.
- ZIP dosyası en fazla 1 GB olabilir
- Bu özellik yerel önbellek ile uyumlu değildir.
- Gelişmiş soğuk başlatma performansı için yerel Zip seçeneğini (
WEBSITE_RUN_FROM_PACKAGE=1) kullanın.