Uygulamanızı doğrudan bir ZIP paketinden Azure App Service çalıştırmaRun your app in Azure App Service directly from a ZIP package

Azure App Service, uygulamalarınızı doğrudan BIR dağıtım ZIP paketi dosyasından çalıştırabilirsiniz.In Azure App Service, you can run your apps directly from a deployment ZIP package file. Bu makalede, uygulamanızda bu işlevselliğin nasıl etkinleştirileceği gösterilmektedir.This article shows how to enable this functionality in your app.

App Service diğer tüm dağıtım yöntemlerinin ortak bir şeyi vardır: dosyalarınız uygulamanızda D:\home\site\wwwroot dosyasına dağıtılır (veya Linux uygulamaları için /Home/site/Wwwroot ).All other deployment methods in App Service have something in common: your files are deployed to D:\home\site\wwwroot in your app (or /home/site/wwwroot for Linux apps). Aynı dizin, çalışma zamanında uygulamanız tarafından kullanıldığından, dosya kilidi çakışmaları nedeniyle dağıtımın başarısız olması ve dosyaların bazıları henüz güncelleştirilmemiş olduğundan uygulamanın tahmin edilemeyecek şekilde davranması mümkündür.Since the same directory is used by your app at runtime, it's possible for deployment to fail because of file lock conflicts, and for the app to behave unpredictably because some of the files are not yet updated.

Buna karşılık, doğrudan bir paketten çalıştırdığınızda Paketteki dosyalar Wwwroot dizinine kopyalanmaz.In contrast, when you run directly from a package, the files in the package are not copied to the wwwroot directory. Bunun yerine, ZIP paketinin kendisi doğrudan salt okuma Wwwroot dizini olarak bağlanır.Instead, the ZIP package itself gets mounted directly as the read-only wwwroot directory. Doğrudan bir paketten çalıştırmanın çeşitli avantajları vardır:There are several benefits to running directly from a package:

  • Dağıtım ve çalışma zamanı arasındaki dosya kilidi çakışmalarını ortadan kaldırır.Eliminates file lock conflicts between deployment and runtime.
  • Dilediğiniz zaman yalnızca tam olarak dağıtılan uygulamaların çalıştırılmasını sağlar.Ensures only full-deployed apps are running at any time.
  • , Bir üretim uygulamasına dağıtılabilir (yeniden başlatma ile).Can be deployed to a production app (with restart).
  • Azure Resource Manager dağıtımlarının performansını geliştirir.Improves the performance of Azure Resource Manager deployments.
  • Özellikle büyük NPM paket ağaçları olan JavaScript işlevleri için soğuk başlangıç zamanlarını azaltabilir.May reduce cold-start times, particularly for JavaScript functions with large npm package trees.

Not

Şu anda yalnızca ZIP paketi dosyaları desteklenir.Currently, only ZIP package files are supported.

Proje ZIP dosyası oluşturmaCreate a project ZIP file

Not

Dosyaları bir ZIP dosyasına indirdiyseniz, önce dosyaları ayıklayın.If you downloaded the files in a ZIP file, extract the files first. Örneğin, GitHub 'dan bir ZIP dosyası indirdiyseniz, bu dosyayı olduğu gibi dağıtamazsınız.For example, if you downloaded a ZIP file from GitHub, you cannot deploy that file as-is. GitHub, App Service çalışmayan ek iç içe dizinler ekler.GitHub adds additional nested directories, which do not work with App Service.

Yerel bir Terminal penceresinde, uygulama projenizin kök dizinine gidin.In a local terminal window, navigate to the root directory of your app project.

Bu dizin, index.html, _index. php_ve _app.js_gibi Web uygulamanıza giriş dosyasını içermelidir.This directory should contain the entry file to your web app, such as index.html, index.php, and app.js. Ayrıca, project.json, composer.jsüzerinde package.js, üzerinde _bower.js_ve _requirements.txt_gibi paket yönetim dosyalarını da içerebilir.It can also contain package management files like project.json, composer.json, package.json, bower.json, and requirements.txt.

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.Unless you want App Service to run deployment automation for you, run all the build tasks (for example, npm, bower, gulp, composer, and pip) and make sure that you have all the files you need to run the app. Paketinizi doğrudan çalıştırmakistiyorsanız bu adım gereklidir.This step is required if you want to run your package directly.

Projenizdeki tüm öğeleri içeren bir ZIP arşivi oluşturun.Create a ZIP archive of everything in your project. dotnetProjeler için, bu klasör komutun çıkış klasörüdür dotnet publish .For dotnet projects, this folder is the output folder of the dotnet publish command. Aşağıdaki komut terminalinizdeki varsayılan aracı kullanmaktadır:The following command uses the default tool in your terminal:

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

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

Paketten çalışmayı etkinleştirEnable running from package

WEBSITE_RUN_FROM_PACKAGEUygulama ayarı bir paketten çalıştırmaya izin vermez.The WEBSITE_RUN_FROM_PACKAGE app setting enables running from a package. Bunu ayarlamak için, Azure CLı ile aşağıdaki komutu çalıştırın.To set it, run the following command with Azure CLI.

az webapp config appsettings set --resource-group <group-name> --name <app-name> --settings WEBSITE_RUN_FROM_PACKAGE="1"

WEBSITE_RUN_FROM_PACKAGE="1" Uygulamanızı yerel bir paketten uygulamanıza çalıştırmanızı sağlar.WEBSITE_RUN_FROM_PACKAGE="1" lets you run your app from a package local to your app. Ayrıca, uzak bir paketten da çalıştırabilirsiniz.You can also run from a remote package.

Paketi çalıştırınRun the package

App Service bir paketi çalıştırmanın en kolay yolu Azure CLı az WebApp Deployment Source config-ZIP komutıdır.The easiest way to run a package in your App Service is with the Azure CLI az webapp deployment source config-zip command. Örneğin:For example:

az webapp deployment source config-zip --resource-group <group-name> --name <app-name> --src <filename>.zip

WEBSITE_RUN_FROM_PACKAGEUygulama ayarı ayarlandığı için, bu komut paket içeriğini uygulamanızın D:\home\site\wwwroot dizinine ayıklamaz.Because the WEBSITE_RUN_FROM_PACKAGE app setting is set, this command doesn't extract the package content to the D:\home\site\wwwroot directory of your app. Bunun yerine, ZIP dosyasını D:\home\data\sitepackages dizinine yükler ve aynı dizinde, çalışma ZAMANıNDA yüklenecek ZIP paketinin adını içeren bir packagename.txt oluşturur.Instead, it uploads the ZIP file as-is to D:\home\data\SitePackages, and creates a packagename.txt in the same directory, that contains the name of the ZIP package to load at runtime. ZIP paketinizi farklı bir şekilde (örneğin, FTP) yüklerseniz, D:\home\data\sitepackages dizinini ve packagename.txt dosyasını el ile oluşturmanız gerekir.If you upload your ZIP package in a different way (such as FTP), you need to create the D:\home\data\SitePackages directory and the packagename.txt file manually.

Komut ayrıca uygulamayı yeniden başlatır.The command also restarts the app. WEBSITE_RUN_FROM_PACKAGEAyarlandığı için, App Service karşıya yüklenen paketi salt okunurdur ve sonra bu bağlı dizinden doğrudan çalıştırır.Because WEBSITE_RUN_FROM_PACKAGE is set, App Service mounts the uploaded package as the read-only wwwroot directory and runs the app directly from that mounted directory.

Bunun yerine dış URL 'den ÇalıştırRun from external URL instead

Ayrıca, Azure Blob depolama gibi bir dış URL 'den paket de çalıştırabilirsiniz.You can also run a package from an external URL, such as Azure Blob Storage. Paket dosyalarını BLOB depolama hesabınıza yüklemek için Azure Depolama Gezgini kullanabilirsiniz.You can use the Azure Storage Explorer to upload package files to your Blob storage account. App Service çalışma zamanının pakete güvenli bir şekilde erişmesini sağlamak için, paylaşılan erişim imzası (SAS) ile özel bir depolama kapsayıcısı kullanmanız gerekir.You should use a private storage container with a Shared Access Signature (SAS) to enable the App Service runtime to access the package securely.

Dosyanızı blob depolamaya yükledikten ve dosya için bir SAS URL 'sine sahip olduktan sonra WEBSITE_RUN_FROM_PACKAGE uygulama AYARıNı URL olarak ayarlayın.Once you upload your file to Blob storage and have an SAS URL for the file, set the WEBSITE_RUN_FROM_PACKAGE app setting to the URL. Aşağıdaki örnek, Azure CLı kullanarak bunu yapar:The following example does it by using Azure CLI:

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"

Aynı ada sahip güncelleştirilmiş bir paketi BLOB depolama alanına yayımlarsanız, güncelleştirilmiş paketin App Service ' ye yüklenmesi için uygulamanızı yeniden başlatmanız gerekir.If you publish an updated package with the same name to Blob storage, you need to restart your app so that the updated package is loaded into App Service.

Sorun gidermeTroubleshooting

  • Doğrudan bir paketten çalıştırmak wwwroot salt okunurdur.Running directly from a package makes wwwroot read-only. Uygulamanız, bu dizine dosya yazmayı denediğinde bir hata alır.Your app will receive an error if it tries to write files to this directory.
  • TAR ve GZIP biçimleri desteklenmez.TAR and GZIP formats are not supported.
  • Bu özellik Yerel önbellekile uyumlu değil.This feature is not compatible with local cache.
  • İyileştirilmiş soğuk başlangıç performansı için yerel ZIP seçeneğini ( WEBSITE_RUN_FROM_PACKAGE = 1) kullanın.For improved cold-start performance, use the local Zip option (WEBSITE_RUN_FROM_PACKAGE=1).

Diğer kaynaklarMore resources