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, buat Akun gratis Azure sebelum memulai.

Membuat paket ZIP proyek

Penting

Saat membuat paket ZIP untuk penyebaran, jangan sertakan direktori akar, tetapi hanya file dan direktori di dalamnya. Jika Anda mengunduh repositori GitHub sebagai file ZIP, Anda tidak dapat menyebarkan file tersebut apa adanya ke App Service. GitHub menambahkan direktori berlapis tambahan 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.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 dotnet proyek, ini adalah segalanya dalam direktori dotnet publish output perintah (tidak termasuk direktori output itu sendiri). Misalnya, perintah berikut di terminal Anda untuk membuat paket ZIP konten direktori saat ini:

# 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.

Catatan

File dalam paket ZIP disalin hanya jika tanda waktu mereka tidak sesuai dengan yang telah disebarkan.

Dengan Zip deploy UI di Kudu

Di browser, buka https://<app_name>.scm.azurewebsites.net/ZipDeployUI.

Unggah paket ZIP yang Anda buat di Buat paket ZIP proyek dengan menyeretnya ke area file explorer pada halaman web.

Saat penyebaran sedang berlangsung, ikon di pojok kanan atas menunjukkan persentase kemajuan. Halaman ini juga menampilkan pesan verbose untuk operasi di bawah area penjelajah. Ketika penyebaran selesai, pesan terakhir harus mengatakan Deployment successful.

Titik akhir di atas tidak berfungsi untuk Linux App Services saat ini. Pertimbangkan untuk menggunakan FTP atau API penyebaran ZIP sebagai gantinya.

Tanpa zip menyebarkan UI di Kudu

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.

Mengaktifkan otomatisasi build untuk penyebaran 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.

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 yang ditampilkan di sini menempatkan paket pada berbagi konten aplikasi dengan konvensi penamaan dan struktur direktori yang tepat (lihat Referensi API penerbitan Kudu), dan ini adalah pendekatan yang direkomendasikan. Jika Anda menyebarkan paket WAR/JAR/EAR menggunakan FTP atau WebDeploy, Anda mungkin melihat kegagalan yang tidak diketahui karena kesalahan dalam penamaan atau struktur.

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

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

Menyebarkan ke aplikasi yang diamankan jaringan

Bergantung pada konfigurasi jaringan aplikasi web Anda, akses langsung ke aplikasi dari lingkungan pengembangan Anda mungkin diblokir (lihat Menyebarkan ke situs yang diamankan Jaringan dan Menyebarkan ke situs yang diamankan Jaringan, Bagian 2). Alih-alih mendorong paket atau file ke aplikasi web secara langsung, Anda dapat menerbitkannya ke sistem penyimpanan yang dapat diakses dari aplikasi web dan memicu aplikasi untuk menarik ZIP dari lokasi penyimpanan.

URL jarak jauh dapat menjadi lokasi yang dapat diakses publik, tetapi yang terbaik adalah menggunakan kontainer penyimpanan blob dengan kunci SAS untuk melindunginya.

Gunakan perintah seperti yang az webapp deploy Anda lakukan di bagian lain, tetapi gunakan --src-url alih-alih --src-path. Contoh berikut menggunakan --src-url parameter untuk menentukan URL file ZIP yang dihosting di akun Azure Storage.

az webapp deploy --resource-group <group-name> --name <app-name> --src-url "https://storagesample.blob.core.windows.net/sample-container/myapp.zip?sv=2021-10-01&sb&sig=slk22f3UrS823n4kSh8Skjpa7Naj4CG3 --type zip

Referensi API penerbitan Kudu

API Kudu publish memungkinkan Anda menentukan parameter yang sama dari perintah CLI sebagai parameter kueri URL. Untuk mengautentikasi dengan Kudu REST API, sebaiknya gunakan autentikasi token, tetapi Anda juga dapat menggunakan autentikasi dasar dengan kredensial penyebaran aplikasi Anda.

Tabel berikut ini memperlihatkan parameter kueri yang tersedia, nilai yang diizinkan, dan deskripsinya.

Tombol Nilai yang diizinkan Deskripsi Wajib Tipe
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 target-path bersifat opsional.
- type=war: Menyebarkan paket WAR. Secara default, paket WAR disebarkan ke /home/site/wwwroot/app.war. Jalur target dapat ditentukan dengan target-path.
- type=jar: Menyebarkan paket JAR ke /home/site/wwwroot/app.jar. Parameter target-path diabaikan
- type=ear: Menyebarkan paket EAR ke /home/site/wwwroot/app.ear. Parameter target-path diabaikan
- type=lib: Menyebarkan file pustaka JAR. Secara default, file tersebut disebarkan ke /home/site/libs. Jalur target dapat ditentukan dengan target-path.
- type=static: Menyebarkan file statis (seperti skrip). Secara default, file tersebut disebarkan ke /home/site/wwwroot.
- 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 target-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. No Boolean
clean true|false Tentukan apakah akan membersihkan (menghapus) penyebaran target sebelum menyebarkan artefak di sana. No 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. No Boolean
target-path Jalur absolut Jalur mutlak untuk penyebaran artefak. Misalnya, "/home/site/deployments/tools/driver.jar", "/home/site/scripts/helper.sh". No 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