Menyebarkan file ke App Service

Artikel ini menunjukkan cara menyebarkan kode Anda sebagai paket ZIP, WAR, JAR, atau EAR ke Azure App Service. Artikel ini juga menunjukkan cara menyebarkan file individual ke App Service, terpisah dari paket aplikasi Anda.

Prasyarat

Untuk menyelesaikan langkah-langkah dalam artikel, buat aplikasi App Service, atau gunakan aplikasi yang Anda buat untuk tutorial lain.

Jika Anda tidak memiliki langganan Azure, buatlah akun gratis sebelum Anda memulai.

Membuat paket ZIP proyek

Catatan

Jika Anda mengunduh file dalam paket ZIP, ekstrak file terlebih dahulu. Misalnya, jika Anda mengunduh paket ZIP dari GitHub, Anda tidak dapat menyebarkan file tersebut apa adanya. GitHub menambahkan direktori berlapis tambahan, yang tidak berfungsi dengan Azure 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.php, dan app.js. Ini juga dapat berisi file manajemen paket seperti project.json,composer.json, package.json, bower.json, dan requirements.txt.

Kecuali Anda ingin Azure App Service menjalankan automasi penyebaran untuk Anda, jalankan semua tugas build (misalnya, npm, bower, gulp, composer, dan, pip) serta 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, folder ini adalah folder keluaran perintah dotnet publish. Perintah berikut menggunakan alat default di terminal Anda:

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

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

Menyebarkan paket ZIP

Saat menyebarkan paket ZIP, App Service mengekstrak kontennya pada jalur default untuk aplikasi Anda (D:\home\site\wwwroot untuk Windows, /home/site/wwwroot untuk Linux).

Penyebaran paket ZIP ini juga menggunakan layanan Kudu yang mendukung penyebaran berbasis integrasi berkelanjutan. Kudu mendukung fungsi berikut untuk penyebaran paket ZIP:

  • Penghapusan file yang tersisa dari penyebaran sebelumnya.
  • Opsi untuk mengaktifkan proses build default, yang mencakup pemulihan paket.
  • Penyesuaian penyebaran, termasuk menjalankan skrip penyebaran.
  • Log penyebaran.
  • Batas ukuran paket 2048 MB.

Untuk informasi selengkapnya, lihat dokumentasi Kudu.

Catatan

File dalam paket ZIP disalin hanya jika tanda waktu mereka tidak sesuai dengan yang telah disebarkan. Membuat zip menggunakan proses build yang menembolokan output dapat mempercepat penyebaran. Lihat Menyebarkan dari file atau url zip, untuk informasi selengkapnya.

Sebarkan paket ZIP ke aplikasi web Anda menggunakan perintah az webapp deploy. Perintah CLI menggunakan API penerbitan Kudu untuk menyebarkan file dan dapat sepenuhnya disesuaikan.

Contoh berikut mendorong paket ZIP ke situs Anda. Tentukan jalur ke paket ZIP lokal Anda untuk --src-path.

az webapp deploy --resource-group <group-name> --name <app-name> --src-path <zip-package-path>

Perintah ini memulai ulang aplikasi setelah menyebarkan paket ZIP.

Tergantung pada konfigurasi jaringan aplikasi web Anda, akses langsung ke situs dari lingkungan lokal Anda dapat diblokir. Untuk menyebarkan kode Anda dalam skenario ini, Anda dapat menerbitkan ZIP Anda ke sistem penyimpanan yang dapat diakses dari aplikasi web dan memicu aplikasi untuk menarik ZIP dari lokasi penyimpanan, alih-alih mendorong ZIP ke aplikasi web. Lihat artikel tentang penyebaran ke jaringan aplikasi web yang aman untuk informasi lebih lanjut.

Contoh berikut menggunakan parameter --src-url untuk menentukan URL akun Azure Storage tempat ZIP harus ditarik oleh situs.

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

Mengaktifkan otomatisasi build untuk menyebarkan ZIP

Secara default, mesin penyebaran mengasumsikan bahwa file ZIP siap untuk dijalankan apa adanya dan tidak menjalankan otomatisasi build apa pun. Untuk mengaktifkan otomatisasi build yang sama seperti dalam penyebaran Git, atur SCM_DO_BUILD_DURING_DEPLOYMENTpengaturan aplikasi dengan menjalankan perintah berikut di Cloud Shell:

az webapp config appsettings set --resource-group <group-name> --name <app-name> --settings SCM_DO_BUILD_DURING_DEPLOYMENT=true

Untuk informasi selengkapnya, lihat dokumentasi Kudu.

Apa yang terjadi pada aplikasi saya selama penyebaran?

Semua metode penyebaran yang didukung secara resmi membuat perubahan pada file di folder /home/site/wwwroot aplikasi Anda. File ini digunakan untuk menjalankan aplikasi Anda. Jadi penyebaran dapat gagal karena file terkunci. Aplikasi mungkin juga berperilaku tidak terduga selama penyebaran karena semua file tidak diperbarui secara bersamaan. Perilaku ini tidak diinginkan untuk aplikasi yang digunakan pelanggan. Ada beberapa cara untuk menghindari masalah ini:

Menyebarkan paket WAR/JAR/EAR

Anda dapat menyebarkan paket WAR, JAR, atau EAR ke App Service untuk menjalankan aplikasi web Java menggunakan Azure CLI, PowerShell, atau API penerbitan Kudu.

Proses penyebaran menempatkan paket pada drive file bersama dengan tepat (lihat Referensi API penerbitan Kudu). Oleh karena itu, penyebaran paket WAR/JAR/EAR menggunakan FTP atau WebDeploy tidak disarankan.

Sebarkan paket WAR ke Tomcat atau JBoss EAP menggunakan perintah az webapp deploy. Tentukan jalur ke paket Java lokal Anda untuk --src-path.

az webapp deploy --resource-group <group-name> --name <app-name> --src-path ./<package-name>.war

Tergantung pada konfigurasi jaringan aplikasi web Anda, akses langsung ke situs dari lingkungan lokal Anda dapat diblokir. Untuk menyebarkan kode Anda dalam skenario ini, Anda dapat menerbitkan ZIP Anda ke sistem penyimpanan yang dapat diakses dari aplikasi web dan memicu aplikasi untuk menarik ZIP dari lokasi penyimpanan, alih-alih mendorong ZIP ke aplikasi web. Lihat artikel tentang penyebaran ke jaringan aplikasi web yang aman untuk informasi lebih lanjut.

Contoh berikut menggunakan parameter --src-url untuk menentukan URL akun Azure Storage tempat ZIP harus ditarik oleh aplikasi web.

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

Perintah CLI menggunakan API penerbitan Kudu untuk menyebarkan paket dan dapat sepenuhnya disesuaikan.

Menyebarkan file individual

Menyebarkan skrip startup, pustaka, dan file statis ke aplikasi web Anda menggunakan perintah az webapp deploy dengan parameter --type.

Jika menyebarkan skrip startup dengan cara ini, App Service secara otomatis menggunakan skrip Anda untuk memulai aplikasi.

Perintah CLI menggunakan API penerbitan Kudu untuk menyebarkan file dan dapat sepenuhnya disesuaikan.

Menyebarkan skrip startup

az webapp deploy --resource group <group-name> --name <app-name> --src-path scripts/startup.sh --type=startup

Menyebarkan file pustaka

az webapp deploy --resource group <group-name> --name <app-name> --src-path driver.jar --type=lib

Menyebarkan file statis

az webapp deploy --resource group <group-name> --name <app-name> --src-path config.json --type=static

Referensi API penerbitan Kudu

API Kudu publish memungkinkan Anda menentukan parameter yang sama dari perintah CLI sebagai parameter kueri URL. Untuk mengautentikasi dengan API Kudu, Anda dapat menggunakan autentikasi dasar dengan info masuk penyebaran aplikasi Anda.

Tabel di bawah ini menunjukkan parameter kueri yang tersedia, nilai yang diizinkan, serta deskripsinya.

Kunci Nilai yang diizinkan Deskripsi Diperlukan Jenis
type war|jar|ear|lib|startup|static|zip Jenis artefak yang disebarkan, menetapkan jalur target default dan menginformasikan aplikasi web bagaimana penyebaran harus ditangani.
- type=zip: Menyebarkan paket ZIP dengan mengekstrak konten ke /home/site/wwwroot. Parameter path bersifat opsional.
- type=war: Menyebarkan paket WAR. Secara default, paket WAR disebarkan ke /home/site/wwwroot/app.war. Jalur target dapat ditentukan dengan path.
- type=jar: Menyebarkan paket JAR ke /home/site/wwwroot/app.jar. Parameter path diabaikan
- type=ear: Menyebarkan paket EAR ke /home/site/wwwroot/app.ear. Parameter path diabaikan
- type=lib: Menyebarkan file pustaka JAR. Secara default, file tersebut disebarkan ke /home/site/libs. Jalur target dapat ditentukan dengan path.
- type=static: Menyebarkan file statis (misalnya skrip). Secara default, file tersebut disebarkan ke /home/site/scripts. Jalur target dapat ditentukan dengan path.
- type=startup: Menyebarkan skrip yang secara otomatis digunakan oleh App Service sebagai skrip startup untuk aplikasi Anda. Secara default, skrip tersebut disebarkan ke D:\home\site\scripts\<name-of-source> untuk Windows dan home/site/wwwroot/startup.sh untuk Linux. Jalur target dapat ditentukan dengan path.
Ya String
restart true|false Secara default, API memulai ulang aplikasi setelah operasi penyebaran selesai (restart=true). Untuk menyebarkan beberapa artefak, cegah hidupkan ulang pada semua kecuali penyebaran akhir melalui pengaturan restart=false. Tidak Boolean
clean true|false Tentukan apakah akan membersihkan (menghapus) penyebaran target sebelum menyebarkan artefak di sana. Tidak Boolean
ignorestack true|false API penerbitan menggunakan variabel lingkungan WEBSITE_STACK untuk memilih default yang aman tergantung pada tumpukan bahasa situs Anda. Mengatur parameter ini menjadi false menonaktifkan default khusus bahasa. Tidak Boolean
path "<absolute-path>" Jalur mutlak untuk penyebaran artefak. Misalnya, "/home/site/deployments/tools/driver.jar", "/home/site/scripts/helper.sh". Tidak String

Langkah berikutnya

Untuk skenario penyebaran yang lebih canggih, coba sebarkan ke Microsoft Azure dengan Git. Penyebaran berbasis Git ke Microsoft Azure memungkinkan kontrol versi, pemulihan paket, MSBuild, dan banyak lagi.

Sumber daya lainnya