Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Nota
Menjalankan dari paket tidak didukung untuk aplikasi Python. Saat menyebarkan file ZIP kode Python, Anda perlu mengatur bendera untuk mengaktifkan otomatisasi build Azure. Otomatisasi build akan membuat lingkungan virtual Python untuk aplikasi Anda dan menginstal persyaratan dan paket yang diperlukan. Untuk informasi selengkapnya, lihat otomatisasi build.
Menjalankan dari paket juga tidak didukung untuk aplikasi Java di Azure App Service. Runtime Java bawaan (Java SE, Tomcat, dan JBoss EAP) memerlukan akses tulis ke direktori aplikasi saat startup, sementara fitur 'Eksekusi dari paket' memasang konten aplikasi sebagai sistem berkas hanya-baca.
Di Azure App Service, Anda dapat menjalankan aplikasi langsung dari file paket ZIP penyebaran. Artikel ini memperlihatkan cara mengaktifkan fungsionalitas ini di aplikasi Anda.
Semua metode penyebaran lainnya di App Service memiliki kesamaan, yaitu file unzip Anda disebarkan ke D:\home\site\wwwroot di aplikasi Anda (atau /home/site/wwwroot untuk aplikasi Linux). Sejak direktori yang sama digunakan oleh aplikasi Anda pada saat runtime, penyebaran dapat gagal karena konflik penguncian file, dan aplikasi dapat berperilaku tidak terduga karena beberapa file belum diperbarui. Untuk mengaktifkan pengaturan ini, Anda tidak perlu menetapkan nilai apa pun ke WEBSITE_RUN_FROM_PACKAGE variabel, atau Anda dapat menghapusnya sepenuhnya.
Sebaliknya, ketika Anda menjalankan langsung dari paket ZIP, file dalam paket tidak disalin ke direktori wwwroot . Sebaliknya, paket ZIP itu sendiri dipasang langsung sebagai direktori baca-saja wwwroot. Untuk mengaktifkan pengaturan ini, atur WEBSITE_RUN_FROM_PACKAGE=1 atau berikan URL file ZIP. Ada beberapa manfaat menjalankan langsung dari paket:
- Menghilangkan konflik kunci file antara penyebaran dan waktu eksekusi.
- Memastikan hanya aplikasi yang disebarkan penuh yang berjalan setiap saat.
- Dapat diterapkan pada aplikasi produksi (dengan memulai ulang).
- Meningkatkan kinerja penerapan Azure Resource Manager.
- Dapat mengurangi waktu mulai yang lambat, terutama untuk fungsi JavaScript dengan paket npm dalam jumlah besar.
Nota
Saat ini, hanya file paket ZIP yang didukung.
Membuat paket ZIP proyek
Penting
Saat Anda membuat paket ZIP untuk penyebaran, jangan sertakan direktori akar. Hanya sertakan file dan direktori di direktori root. Jika Anda mengunduh repositori GitHub sebagai file ZIP, Anda tidak dapat menyebarkan file tersebut as-is ke App Service. GitHub menambahkan direktori berlapis di tingkat atas, yang tidak berfungsi dengan App Service.
Di jendela terminal lokal, arahkan ke direktori akar proyek aplikasi Anda.
Direktori ini harus berisi file entri ke aplikasi web Anda, seperti index.html, , index.phpdan app.js. Ini juga dapat berisi file manajemen paket seperti project.json, , composer.json, package.jsonbower.json, dan requirements.txt.
Jika Anda tidak ingin App Service menjalankan otomatisasi penyebaran untuk Anda, jalankan semua tugas build. Misalnya: npm, , bowergulp, composer, dan pip. Pastikan Anda memiliki semua file yang Anda butuhkan untuk menjalankan aplikasi. Langkah ini diperlukan jika Anda ingin menjalankan paket Anda secara langsung.
Buat arsip ZIP dari semua yang ada di proyek Anda. Untuk proyek dotnet, tambahkan semua yang ada di dalam direktori hasil perintah dotnet publish, kecuali direktori hasil itu sendiri. Misalnya, masukkan perintah berikut di terminal Anda untuk membuat paket ZIP yang menyertakan konten direktori saat ini:
# Bash
zip -r <file-name>.zip .
# PowerShell
Compress-Archive -Path * -DestinationPath <file-name>.zip
Mengaktifkan menjalankan dari paket ZIP
Pengaturan WEBSITE_RUN_FROM_PACKAGE aplikasi memungkinkan aplikasi tersebut dijalankan dari paket ZIP. Untuk mengaturnya, jalankan perintah berikut dengan 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" memungkinkan Anda menjalankan aplikasi dari paket ZIP lokal ke aplikasi Anda. Anda juga dapat menjalankan aplikasi dari paket jarak jauh.
Jalankan paket ZIP
Cara term mudah untuk menjalankan paket ZIP di App Service Anda adalah dengan perintah Azure CLI az webapp deployment source config-zip. Contohnya:
az webapp deploy --resource-group <group-name> --name <app-name> --src-path <filename>.zip
WEBSITE_RUN_FROM_PACKAGE Karena pengaturan aplikasi diatur, perintah ini tidak mengekstrak konten paket ZIP ke direktori D:\home\site\wwwroot aplikasi Anda. Sebaliknya, ia mengunggah file ZIP as-is ke D:\home\data\SitePackages, dan membuat packagename.txt di direktori yang sama yang berisi nama paket ZIP untuk dimuat saat runtime. Jika Anda mengunggah paket ZIP dengan cara yang berbeda (seperti FTP), Anda perlu membuat direktori D:\home\data\SitePackages dan file packagename.txt secara manual.
Perintah ini juga menghidupkan ulang aplikasi. Karena WEBSITE_RUN_FROM_PACKAGE telah diatur, App Service memasang paket yang telah diunggah sebagai direktori wwwroot hanya-baca dan langsung menjalankan aplikasi dari direktori tersebut.
Jalankan dari URL eksternal sebagai gantinya
Anda juga dapat menjalankan paket ZIP dari URL eksternal, seperti Azure Blob Storage. Anda dapat menggunakan Azure Storage Explorer untuk mengunggah file paket ZIP ke akun penyimpanan Blob Anda. Anda harus menggunakan kontainer penyimpanan privat dengan Tanda Tangan Akses Bersama (SAS) atau menggunakan identitas terkelola untuk mengaktifkan runtime App Service untuk mengakses paket ZIP dengan aman.
Nota
Saat ini, sumber daya App Service yang ada yang menjalankan paket ZIP lokal tidak dapat dimigrasikan untuk dijalankan dari paket ZIP jarak jauh. Anda harus membuat sumber daya App Service baru yang dikonfigurasi untuk dijalankan dari URL eksternal.
Setelah Anda mengunggah file ke penyimpanan Blob dan memiliki URL SAS untuk file tersebut, setel pengaturan aplikasi WEBSITE_RUN_FROM_PACKAGE ke URL. Pastikan URL diakhir dengan .zip. Contoh berikut melakukannya dengan menggunakan 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"
Jika Anda menerbitkan paket yang diperbarui dengan nama yang sama ke penyimpanan Blob, Anda perlu memulai ulang aplikasi sehingga paket yang diperbarui dimuat ke dalam App Service.
Mengakses paket di Azure Blob Storage menggunakan identitas terkelola
Anda dapat mengonfigurasi Azure Blob Storage untuk otorisasi permintaan dengan Microsoft Entra ID. Konfigurasi ini berarti bahwa alih-alih menghasilkan kunci SAS yang memiliki waktu kedaluwarsa, Anda dapat mengandalkan identitas terkelola aplikasi.
Secara default, identitas yang ditetapkan sistem aplikasi digunakan. Jika Anda ingin menentukan identitas yang ditetapkan pengguna, Anda dapat mengatur pengaturan aplikasi WEBSITE_RUN_FROM_PACKAGE_BLOB_MI_RESOURCE_ID ke ID sumber daya dari identitas tersebut. Pengaturan juga dapat menerima SystemAssigned sebagai nilai, yang setara dengan menghilangkan pengaturan.
Untuk memungkinkan paket diambil menggunakan identitas:
Pastikan blob dikonfigurasi untuk akses privat.
Berikan identitas peran Storage Blob Data Reader dengan cakupan atas blob paket. Lihat Menetapkan peran Azure untuk akses ke data blob untuk detail tentang membuat penetapan peran.
Atur pengaturan aplikasi
WEBSITE_RUN_FROM_PACKAGEke URL blob paket. URL ini biasanya dari bentukhttps://<storage-account-name>.blob.core.windows.net/<container-name>/<path-to-package>atau sejenisnya.Jika Anda ingin menentukan identitas yang ditetapkan pengguna, Anda dapat mengatur pengaturan aplikasi
WEBSITE_RUN_FROM_PACKAGE_BLOB_MI_RESOURCE_IDke ID sumber daya dari identitas tersebut. Pengaturan juga dapat menerima SystemAssigned sebagai nilai, meskipun ini sama dengan menghilangkan pengaturan sama sekali. ID sumber daya adalah representasi standar untuk sumber daya di Azure. Untuk identitas terkelola yang ditetapkan pengguna, yang akan adalah/subscriptions/subid/resourcegroups/rg-name/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity-name. ID sumber daya identitas terkelola yang ditetapkan pengguna dapat diperoleh di Pengaturan>Properti>ID untuk identitas terkelola yang ditetapkan pengguna.
Menyebarkan file WebJob saat menjalankan dari paket
Ada dua cara untuk menyebarkan file WebJob saat Anda mengaktifkan menjalankan aplikasi dari paket:
-
Sebarkan dalam paket ZIP yang sama dengan aplikasi Anda: Sertakan seperti yang biasa Anda lakukan di
<project-root>\app_data\jobs\...(yang memetakan ke jalur\site\wwwroot\app_data\jobs\...penyebaran seperti yang ditentukan dalam mulai cepat WebJobs). -
Sebarkan secara terpisah dari paket ZIP aplikasi Anda: Karena jalur
\site\wwwroot\app_data\jobs\...penyebaran yang biasa sekarang bersifat baca-saja, Anda tidak dapat menyebarkan file WebJob di sana. Sebagai gantinya, sebarkan file WebJob ke\site\jobs\..., yang tidak bersifat baca saja. WebJobs disebarkan ke\site\wwwroot\app_data\jobs\...dan\site\jobs\..., dan keduanya berjalan.
Nota
Ketika \site\wwwroot menjadi baca-saja, operasi seperti pembuatan disable.job akan gagal.
Penyelesaian Masalah
- Menjalankan langsung dari paket membuat
wwwroothanya-baca. Aplikasi Anda akan menerima kesalahan jika mencoba menulis file ke direktori ini. - Format TAR dan GZIP tidak didukung.
- File ZIP bisa paling banyak 1 GB.
- Fitur ini tidak kompatibel dengan cache lokal.
- Untuk meningkatkan performa cold-start, gunakan opsi Zip lokal (
WEBSITE_RUN_FROM_PACKAGE=1).