Bagikan melalui


Tutorial: Menyebarkan aplikasi ASP.NET Core dan Azure SQL Database ke Azure App Service

Dalam tutorial ini, Anda mempelajari cara menyebarkan aplikasi ASP.NET Core berbasis data ke Azure App Service dan menyambungkan ke Azure SQL Database. Anda juga akan menyebarkan Azure Cache for Redis untuk mengaktifkan kode penembolokan di aplikasi Anda. Azure App Service adalah layanan patch mandiri dan hosting web yang sangat dapat diskalakan, yang dapat dengan mudah menyebarkan aplikasi di Windows atau Linux. Meskipun tutorial ini menggunakan aplikasi ASP.NET Core 8.0, prosesnya sama untuk versi ASP.NET Core lainnya.

Dalam tutorial ini, Anda akan mempelajari cara:

  • Buat arsitektur cache App Service, SQL Database, dan Redis yang aman secara default.
  • Amankan rahasia koneksi menggunakan identitas terkelola dan referensi Key Vault.
  • Sebarkan contoh aplikasi ASP.NET Core ke App Service dari repositori GitHub.
  • Akses string koneksi App Service dan pengaturan aplikasi dalam kode aplikasi.
  • Buat pembaruan dan sebarkan ulang kode aplikasi.
  • Hasilkan skema database dengan mengunggah bundel migrasi.
  • Streaming log diagnostik dari Azure.
  • Kelola aplikasi di portal Azure.
  • Provisikan arsitektur dan penyebaran yang sama dengan menggunakan Azure Developer CLI.
  • Optimalkan alur kerja pengembangan Anda dengan GitHub Codespaces dan GitHub Copilot.

Prasyarat

  • Akun Azure dengan langganan aktif. Jika Anda tidak memiliki akun Azure, Anda dapat membuat akun secara gratis.
  • Azure Developer CLI terinstal. Anda dapat mengikuti langkah-langkah dengan Azure Cloud Shell karena sudah menginstal Azure Developer CLI.
  • Pengetahuan tentang pengembangan ASP.NET Core.
  • (Opsional) Untuk mencoba GitHub Copilot, akun GitHub Copilot. Uji coba gratis 30 hari tersedia.

Lewati ke akhir

Jika Anda hanya ingin melihat aplikasi sampel dalam tutorial ini yang berjalan di Azure, cukup jalankan perintah berikut di Azure Cloud Shell, dan ikuti perintahnya:

dotnet tool install --global dotnet-ef
mkdir msdocs-app-service-sqldb-dotnetcore
cd msdocs-app-service-sqldb-dotnetcore
azd init --template msdocs-app-service-sqldb-dotnetcore
azd up

1. Jalankan sampel

Pertama, Anda menyiapkan contoh aplikasi berbasis data sebagai titik awal. Untuk kenyamanan Anda, repositori sampel, mencakup konfigurasi kontainer pengembangan. Kontainer dev memiliki semua yang Anda butuhkan untuk mengembangkan aplikasi, termasuk database, cache, dan semua variabel lingkungan yang diperlukan oleh aplikasi sampel. Kontainer dev dapat berjalan di codespace GitHub, yang berarti Anda dapat menjalankan sampel di komputer apa pun dengan browser web.

Langkah 1: Di jendela browser baru:

  1. Masuk ke akun GitHub Anda.
  2. Buka https://github.com/Azure-Samples/msdocs-app-service-sqldb-dotnetcore/fork.
  3. Batal pilih Salin cabang utama saja. Anda ingin semua cabang.
  4. Pilih Buat fork.

Langkah 2: Di fork GitHub:

  1. Pilih starter-no-infra utama>untuk cabang starter. Cabang ini hanya berisi proyek sampel dan tidak ada file atau konfigurasi terkait Azure.
  2. Pilih Kode>Buat codespace pada starter-no-infra. Codespace membutuhkan waktu beberapa menit untuk disiapkan.

Langkah 3: Di terminal codespace:

  1. Jalankan migrasi database dengan dotnet ef database update.
  2. Jalankan aplikasi dengan dotnet run.
  3. Saat Anda melihat pemberitahuan Your application running on port 5093 is available., pilih Buka di Browser. Anda akan melihat aplikasi sampel di tab browser baru. Untuk menghentikan aplikasi, ketik Ctrl+C.

Tip

Anda dapat bertanya kepada GitHub Copilot tentang repositori ini. Contohnya:

  • @workspace Apa yang dilakukan proyek ini?
  • @workspace Apa yang dilakukan folder .devcontainer?

Mengalami masalah? Periksa bagian Pemecahan Masalah.

2. Buat App Service, database, dan cache

Dalam langkah ini, Anda membuat sumber daya Azure. Langkah-langkah yang digunakan dalam tutorial ini membuat sekumpulan sumber daya aman secara default yang mencakup App Service, Azure SQL Database, dan Azure Cache. Untuk proses pembuatan, Anda akan menentukan:

  • Nama untuk aplikasi web. Ini digunakan sebagai bagian dari nama DNS untuk aplikasi Anda dalam bentuk https://<app-name>-<hash>.<region>.azurewebsites.net.
  • Wilayah tempat menjalankan aplikasi secara fisik di dunia. Ini juga digunakan sebagai bagian dari nama DNS untuk aplikasi Anda.
  • Tumpukan runtime untuk aplikasi. Di sinilah Anda memilih versi .NET yang akan digunakan untuk aplikasi Anda.
  • Paket hosting untuk aplikasi. Ini adalah tingkat harga yang mencakup serangkaian fitur dan kapasitas penskalaan untuk aplikasi Anda.
  • Resource Group untuk aplikasi. Grup sumber daya memungkinkan Anda mengelompokkan (dalam kontainer logika) semua sumber daya Azure yang diperlukan untuk aplikasi.

Masuk ke portal Microsoft Azure dan ikuti langkah-langkah ini untuk membuat sumber daya Azure App Service Anda.

Langkah 1: Di portal Azure:

  1. Masukkan "database apl web" di bilah pencarian di bagian atas portal Azure.
  2. Pilih item berlabel Apl Web + Database di bawah judul Marketplace. Anda juga dapat menavigasi ke wizard pembuatan secara langsung.

Langkah 2: Di halaman Buat Aplikasi Web + Database , isi formulir sebagai berikut.

  1. Grup Sumber Daya: Pilih Buat baru dan gunakan nama msdocs-core-sql-tutorial.
  2. Wilayah: Wilayah Azure apa pun di dekat Anda.
  3. Nama: msdocs-core-sql-XYZ di mana XYZ adalah tiga karakter acak. Nama ini harus unik di seluruh Azure.
  4. Tumpukan runtime: .NET 8 (LTS).
  5. Mesin: SQLAzure. Azure SQL Database adalah mesin database platform as a service (PaaS) yang dikelola sepenuhnya yang selalu berjalan pada versi stabil terbaru SQL Server.
  6. Tambahkan Azure Cache for Redis?: Ya.
  7. Paket hosting: Dasar. Setelah siap, Anda dapat meningkatkan skala ke tingkat harga produksi.
  8. Pilih Tinjau + buat.
  9. Setelah validasi selesai, pilih Buat.

Langkah 3: Penyebaran membutuhkan waktu beberapa menit untuk diselesaikan. Setelah penyebaran selesai, pilih tombol Buka sumber daya. Anda diarahkan ke aplikasi App Service, tetapi sumber daya berikut dibuat:

  • Grup sumber daya: Kontainer untuk semua sumber daya yang dibuat.
  • Paket App Service: Menentukan sumber daya komputasi untuk App Service. Paket Linux di tingkat Dasar dibuat.
  • App Service: Mewakili aplikasi Anda dan berjalan dalam paket App Service.
  • Jaringan virtual: Terintegrasi dengan aplikasi App Service dan mengisolasi lalu lintas jaringan back-end.
  • Titik akhir privat: Titik akhir akses untuk brankas kunci, server database, dan cache Redis di jaringan virtual.
  • Antarmuka jaringan: Mewakili alamat IP privat, satu untuk setiap titik akhir privat.
  • Server Azure SQL Database: Hanya dapat diakses dari belakang titik akhir privatnya.
  • Azure SQL Database: Database dan pengguna dibuat untuk Anda di server.
  • Azure Cache for Redis: Hanya dapat diakses dari belakang titik akhir privatnya.
  • Brankas kunci: Hanya dapat diakses dari belakang titik akhir privatnya. Digunakan untuk mengelola rahasia untuk aplikasi App Service.
  • Zona DNS privat: Aktifkan resolusi DNS brankas kunci, server database, dan cache Redis di jaringan virtual.

3. Amankan rahasia koneksi

Wizard pembuatan menghasilkan variabel konektivitas untuk Anda sudah sebagai string koneksi .NET dan pengaturan aplikasi. Namun, praktik terbaik keamanan adalah menjaga rahasia dari App Service sepenuhnya. Anda akan memindahkan rahasia ke brankas kunci dan mengubah pengaturan aplikasi ke referensi Key Vault dengan bantuan Konektor Layanan.

Tip

Untuk menggunakan autentikasi tanpa kata sandi, lihat Bagaimana cara mengubah koneksi SQL Database untuk menggunakan identitas terkelola?

Langkah 1: Ambil string koneksi yang ada

  1. Di menu sebelah kiri halaman App Service, pilih Pengaturan > String koneksi variabel lingkungan>.
  2. Pilih AZURE_SQL_CONNECTIONSTRING.
  3. Di Tambahkan/Edit string koneksi, di bidang Nilai, temukan bagian Kata Sandi= di akhir string.
  4. Salin string kata sandi setelah Kata Sandi= untuk digunakan nanti. String koneksi ini memungkinkan Anda terhubung ke database SQL yang diamankan di belakang titik akhir privat. Namun, rahasia disimpan langsung di aplikasi App Service, yang bukan yang terbaik. Demikian juga, cache Redis string koneksi di tab Pengaturan aplikasi berisi rahasia. Anda akan mengubah ini.

Langkah 2: Buat brankas kunci untuk manajemen rahasia yang aman

  1. Di bilah pencarian atas, ketik "brankas kunci", lalu pilih Marketplace>Key Vault.
  2. Di Grup Sumber Daya, pilih msdocs-core-sql-tutorial.
  3. Di Nama brankas kunci, ketik nama yang hanya terdiri dari huruf dan angka.
  4. Di Wilayah, atur ke lokasi yang sama dengan grup sumber daya.

Langkah 3: Amankan brankas kunci dengan Titik Akhir Privat

  1. Pilih tab Jaringan.
  2. Batal pilih Aktifkan akses publik.
  3. Pilih Buat titik akhir privat.
  4. Di Grup Sumber Daya, pilih msdocs-core-sql-tutorial.
  5. Dalam dialog, di Lokasi, pilih lokasi yang sama dengan aplikasi App Service Anda.
  6. Di Nama, ketik msdocs-core-sql-XYZVvaultEndpoint.
  7. Di Jaringan virtual, pilih msdocs-core-sql-XYZVnet.
  8. Di Subnet, msdocs-core-sql-XYZSubnet.
  9. Pilih OK.
  10. Pilih Tinjau + buat, lalu pilih Buat. Tunggu hingga penyebaran brankas kunci selesai. Anda akan melihat "Penyebaran Anda selesai."

Langkah 4:

  1. Di bilah pencarian atas, ketik msdocs-core-sql, lalu sumber daya App Service yang disebut msdocs-core-sql-XYZ.
  2. Di halaman App Service, di menu sebelah kiri, pilih Pengaturan > Konektor Layanan. Sudah ada dua konektor, yang dibuat wizard pembuatan aplikasi untuk Anda.
  3. Pilih kotak centang di samping konektor SQL Database, lalu pilih Edit.
  4. Pilih tab Autentikasi .
  5. Di Kata Sandi, tempelkan kata sandi yang Anda salin sebelumnya.
  6. Pilih Simpan Rahasia di Key Vault.
  7. Di bawah Koneksi Key Vault, pilih Buat baru. Dialog Buat koneksi dibuka di atas dialog edit.

Langkah 5: Buat koneksi Key Vault

  1. Dalam dialog Buat koneksi untuk koneksi Key Vault, di Key Vault, pilih brankas kunci yang Anda buat sebelumnya.
  2. Pilih Tinjau + Buat.
  3. Saat validasi selesai, pilih Buat.

Langkah 6: Menyelesaikan pengaturan konektor SQL Database

  1. Anda kembali ke dialog edit untuk defaultConnector. Di tab Autentikasi , tunggu konektor brankas kunci dibuat. Setelah selesai, dropdown Koneksi Key Vault secara otomatis memilihnya.
  2. Pilih Next: Networking.
  3. Pilih Simpan. Tunggu hingga pemberitahuan Pembaruan berhasil muncul.

Langkah 7: Mengonfigurasi konektor Redis untuk menggunakan rahasia Key Vault

  1. Di halaman Konektor Layanan, pilih kotak centang di samping konektor Cache for Redis, lalu pilih Edit.
  2. Pilih tab Autentikasi .
  3. Pilih Simpan Rahasia di Key Vault.
  4. Di bawah Koneksi Key Vault, pilih brankas kunci yang Anda buat.
  5. Pilih Next: Networking.
  6. Pilih Konfigurasikan aturan firewall untuk mengaktifkan akses ke layanan target. Wizard pembuatan aplikasi sudah mengamankan database SQL dengan titik akhir privat.
  7. Pilih Simpan. Tunggu hingga pemberitahuan Pembaruan berhasil muncul.

Langkah 8: Verifikasi integrasi Key Vault

  1. Dari menu sebelah kiri, pilih Pengaturan > String koneksi variabel > lingkungan lagi.
  2. Di samping AZURE_SQL_CONNECTIONSTRING, pilih Perlihatkan nilai. Nilainya harus @Microsoft.KeyVault(...), yang berarti bahwa itu adalah referensi brankas kunci karena rahasia sekarang dikelola dalam brankas kunci.
  3. Untuk memverifikasi string koneksi Redis, pilih tab Pengaturan aplikasi. Di samping AZURE_REDIS_CONNECTIONSTRING, pilih Perlihatkan nilai. Nilainya juga harus @Microsoft.KeyVault(...) .

Untuk meringkas, proses untuk mengamankan rahasia koneksi Anda yang terlibat:

  • Mengambil rahasia koneksi dari variabel lingkungan aplikasi App Service.
  • Membuat brankas kunci.
  • Membuat koneksi Key Vault dengan identitas terkelola yang ditetapkan sistem.
  • Memperbarui konektor layanan untuk menyimpan rahasia di brankas kunci.

4. Menyebarkan kode sampel

Dalam langkah ini, Anda mengonfigurasi penyebaran GitHub menggunakan GitHub Actions. Ini hanya salah satu dari banyak cara untuk menyebarkan ke App Service, tetapi juga cara yang bagus untuk memiliki integrasi berkelanjutan dalam proses penyebaran Anda. Secara default, setiap git push repositori GitHub Anda memulai tindakan build dan deploy.

Langkah 1: Di menu sebelah kiri, pilih Pusat Penyebaran>.

Langkah 2: Di halaman Pusat Penyebaran:

  1. Di Sumber, pilih GitHub. Secara default, GitHub Actions dipilih sebagai penyedia build.
  2. Masuk ke akun GitHub Anda dan ikuti perintah untuk mengotorisasi Azure.
  3. Di Organisasi, pilih akun Anda.
  4. Di Repositori, pilih msdocs-app-service-sqldb-dotnetcore.
  5. Di Cabang, pilih starter-no-infra. Ini adalah cabang yang sama dengan tempat Anda bekerja dengan aplikasi sampel Anda, tanpa file atau konfigurasi terkait Azure.
  6. Untuk Jenis autentikasi, pilih Identitas yang ditetapkan pengguna.
  7. Di menu atas, pilih Simpan. App Service menerapkan file alur kerja ke dalam repositori GitHub yang dipilih, di direktori .github/workflows. Secara default, pusat penyebaran membuat identitas yang ditetapkan pengguna untuk alur kerja guna mengautentikasi menggunakan Microsoft Entra (autentikasi OIDC). Untuk opsi autentikasi alternatif, lihat Menyebarkan ke App Service menggunakan GitHub Actions.

Langkah 3: Kembali ke ruang kode GitHub dari fork sampel Anda, jalankan git pull origin starter-no-infra. Ini menarik file alur kerja yang baru diterapkan ke ruang kode Anda.

Langkah 4 (Opsi 1: dengan GitHub Copilot):

  1. Mulai sesi obrolan baru dengan memilih tampilan Obrolan , lalu pilih +.
  2. Tanyakan, "@workspace Bagaimana aplikasi tersambung ke database dan cache?" Copilot mungkin memberi Anda beberapa penjelasan tentang MyDatabaseContext kelas dan bagaimana dikonfigurasi di Program.cs.
  3. Tanyakan, "Dalam mode produksi, saya ingin aplikasi menggunakan string koneksi yang disebut AZURE_SQL_CONNECTIONSTRING untuk database dan pengaturan aplikasi yang disebut AZURE_REDIS_CONNECTIONSTRING*." Copilot mungkin memberi Anda saran kode yang mirip dengan yang ada di Opsi 2: tanpa langkah-langkah GitHub Copilot di bawah ini dan bahkan memberi tahu Anda untuk membuat perubahan dalam file Program.cs.
  4. Buka Program.cs di penjelajah dan tambahkan saran kode. GitHub Copilot tidak memberi Anda respons yang sama setiap kali, dan itu tidak selalu benar. Anda mungkin perlu mengajukan lebih banyak pertanyaan untuk menyempurnakan responsnya. Untuk tips, lihat Apa yang bisa saya lakukan dengan GitHub Copilot di codespace saya?.

Langkah 4 (Opsi 2: tanpa GitHub Copilot):

  1. Buka Program.cs di penjelajah.
  2. Temukan kode yang dikomentari (baris 12-21) dan batalkan komentar. Kode ini tersambung ke database dengan menggunakan AZURE_SQL_CONNECTIONSTRING dan menyambungkan ke cache Redis dengan menggunakan pengaturan AZURE_REDIS_CONNECTIONSTRINGaplikasi .

Langkah 5 (Opsi 1: dengan GitHub Copilot):

  1. Buka .github/workflows/starter-no-infra_msdocs-core-sql-XYZ di penjelajah. File ini dibuat oleh wizard pembuatan App Service.
  2. dotnet publish Sorot langkah dan pilih .
  3. Tanyakan Copilot, "Instal dotnet ef, lalu buat bundel migrasi di folder output yang sama."
  4. Jika saran dapat diterima, pilih Terima. GitHub Copilot tidak memberi Anda respons yang sama setiap kali, dan itu tidak selalu benar. Anda mungkin perlu mengajukan lebih banyak pertanyaan untuk menyempurnakan responsnya. Untuk tips, lihat Apa yang bisa saya lakukan dengan GitHub Copilot di codespace saya?.

Langkah 5 (Opsi 2: tanpa GitHub Copilot):

  1. Buka .github/workflows/starter-no-infra_msdocs-core-sql-XYZ di penjelajah. File ini dibuat oleh wizard pembuatan App Service.
  2. Di bawah langkah, dotnet publish tambahkan langkah untuk menginstal alat Entity Framework Core dengan perintah dotnet tool install -g dotnet-ef --version 8.*.
  3. Di bawah langkah baru, tambahkan langkah lain untuk menghasilkan bundel migrasi database dalam paket penyebaran: dotnet ef migrations bundle --runtime linux-x64 -o ${{env.DOTNET_ROOT}}/myapp/migrationsbundle. Bundel migrasi adalah executable mandiri yang dapat Anda jalankan di lingkungan produksi tanpa memerlukan .NET SDK. Kontainer linux App Service hanya memiliki runtime .NET dan bukan .NET SDK.

Langkah 6:

  1. Pilih ekstensi Kontrol Sumber.
  2. Di kotak teks, ketik pesan penerapan seperti Configure Azure database and cache connections. Atau, pilih dan biarkan GitHub Copilot menghasilkan pesan penerapan untuk Anda.
  3. Pilih Terapkan, lalu konfirmasi dengan Ya.
  4. Pilih Sinkronkan perubahan 1, lalu konfirmasi dengan OK.

Langkah 7: Kembali ke halaman Pusat Penyebaran di portal Azure:

  1. Pilih tab Log , lalu pilih Refresh untuk melihat eksekusi penyebaran baru.
  2. Di item log untuk eksekusi penyebaran, pilih entri Bangun/Sebarkan Log dengan tanda waktu terbaru.

Langkah 8: Anda dibawa ke repositori GitHub Anda dan melihat bahwa tindakan GitHub sedang berjalan. File alur kerja menentukan dua tahap terpisah, mem-build dan menyebarkan. Tunggu hingga eksekusi GitHub menunjukkan status Keberhasilan. Dibutuhkan sekitar 5 menit.

Mengalami masalah? Periksa bagian Pemecahan Masalah.

5. Hasilkan skema database

Dengan SQL Database yang dilindungi oleh jaringan virtual, cara term mudah untuk menjalankan migrasi database dotnet adalah dalam sesi SSH dengan kontainer Linux di App Service.

Langkah 1: Kembali ke halaman App Service, di menu sebelah kiri,

  1. Pilih Alat>Pengembangan SSH.
  2. Pilih Buka.

Langkah 2: Dalam sesi SSH:

  1. Jalankan cd /home/site/wwwroot. Berikut adalah semua file yang Anda sebarkan.
  2. Jalankan bundel migrasi yang dihasilkan alur kerja GitHub, dengan perintah ./migrationsbundle -- --environment Production. Jika berhasil, App Service berhasil tersambung ke SQL Database. Ingatlah bahwa --environment Production sesuai dengan perubahan kode yang Anda buat di Program.cs.

Dalam sesi SSH, hanya perubahan pada file di yang /home dapat bertahan di luar mulai ulang aplikasi. Perubahan di luar /home tidak dipertahankan.

Mengalami masalah? Periksa bagian Pemecahan Masalah.

6. Menelusuri aplikasi

Langkah 1: Di halaman App Service:

  1. Dari menu kiri, pilih Ringkasan.
  2. Pilih URL aplikasi Anda.

Langkah 2: Tambahkan beberapa tugas ke daftar. Selamat, Anda menjalankan aplikasi web di Azure App Service, dengan konektivitas yang aman ke Azure SQL Database.

Tip

Aplikasi sampel mengimplementasikan pola cache-aside . Saat Anda mengunjungi tampilan data untuk kedua kalinya, atau memuat ulang halaman yang sama setelah membuat perubahan data, Waktu pemrosesan di halaman web menunjukkan waktu yang jauh lebih cepat karena memuat data dari cache alih-alih database.

7. Mengalirkan log diagnostik

Azure App Service mengambil semua log konsol untuk membantu Anda mendiagnosis masalah dengan aplikasi Anda. Aplikasi sampel menyertakan kode pengelogan di setiap titik akhirnya untuk menunjukkan kemampuan ini.

Langkah 1: Di halaman App Service:

  1. Dari menu sebelah kiri, pilih Memantau>log App Service.
  2. Di Pengelogan aplikasi, pilih Sistem File.
  3. Di menu atas, pilih Simpan.

Langkah 2: Dari menu sebelah kiri, pilih Aliran log. Anda melihat log untuk aplikasi Anda, termasuk log platform dan log dari dalam kontainer.

8. Membersihkan sumber daya

Setelah selesai, Anda dapat menghapus semua sumber daya dari langganan Azure dengan menghapus grup sumber daya.

Langkah 1: Di bilah pencarian di bagian atas portal Azure:

  1. Masukkan nama grup sumber daya.
  2. Pilih grup sumber daya.

Langkah 2: Di halaman grup sumber daya, pilih Hapus grup sumber daya.

Langkah 3:

  1. Masukkan nama grup sumber daya untuk mengonfirmasi penghapusan Anda.
  2. Pilih Hapus.

Cuplikan layar dialog konfirmasi untuk menghapus grup sumber daya di portal Azure. :

2. Buat sumber daya Azure dan sebarkan aplikasi sampel

Dalam langkah ini, Anda membuat sumber daya Azure dan menyebarkan aplikasi sampel ke App Service di Linux. Langkah-langkah yang digunakan dalam tutorial ini membuat sekumpulan sumber daya aman secara default yang mencakup App Service, Azure SQL Database, dan Azure Cache for Redis.

Kontainer pengembangan sudah memiliki Azure Developer CLI (AZD).

  1. Dari akar repositori, jalankan azd init.

    azd init --template dotnet-app-service-sqldb-infra
    
  2. Saat diminta, berikan jawaban berikut:

    Pertanyaan Jawaban
    Direktori saat ini tidak kosong. Apakah Anda ingin menginisialisasi proyek di sini di '<your-directory>'? Y
    Apa yang ingin Anda lakukan dengan file-file ini? Jaga agar file saya yang ada tidak berubah
    Masukkan nama lingkungan baru Ketik nama unik. Templat AZD menggunakan nama ini sebagai bagian dari nama DNS aplikasi web Anda di Azure (<app-name>-<hash>.azurewebsites.net). Karakter alfanumerik dan tanda hubung diperbolehkan.
  3. Masuk ke Azure dengan menjalankan azd auth login perintah dan ikuti perintah:

    azd auth login
    
  4. Buat sumber daya Azure yang diperlukan dan sebarkan kode aplikasi dengan azd up perintah . Ikuti perintah untuk memilih langganan dan lokasi yang diinginkan untuk sumber daya Azure.

    azd up
    

    Perintah azd up membutuhkan waktu sekitar 15 menit untuk diselesaikan (cache Redis membutuhkan waktu paling lama). Ini juga mengkompilasi dan menyebarkan kode aplikasi Anda, tetapi Anda akan memodifikasi kode nanti untuk bekerja dengan App Service. Saat sedang berjalan, perintah menyediakan pesan tentang proses provisi dan penyebaran, termasuk tautan ke penyebaran di Azure. Setelah selesai, perintah juga menampilkan tautan ke aplikasi penyebaran.

    Templat AZD ini berisi file (azure.yaml dan direktori infra ) yang menghasilkan arsitektur aman secara default dengan sumber daya Azure berikut:

    • Grup sumber daya: Kontainer untuk semua sumber daya yang dibuat.
    • Paket App Service: Menentukan sumber daya komputasi untuk App Service. Paket Linux di tingkat Dasar dibuat.
    • App Service: Mewakili aplikasi Anda dan berjalan dalam paket App Service.
    • Jaringan virtual: Terintegrasi dengan aplikasi App Service dan mengisolasi lalu lintas jaringan back-end.
    • Titik akhir privat: Titik akhir akses untuk brankas kunci, server database, dan cache Redis di jaringan virtual.
    • Antarmuka jaringan: Mewakili alamat IP privat, satu untuk setiap titik akhir privat.
    • Server Azure SQL Database: Hanya dapat diakses dari belakang titik akhir privatnya.
    • Azure SQL Database: Database dan pengguna dibuat untuk Anda di server.
    • Azure Cache for Redis: Hanya dapat diakses dari belakang titik akhir privatnya.
    • Brankas kunci: Hanya dapat diakses dari belakang titik akhir privatnya. Digunakan untuk mengelola rahasia untuk aplikasi App Service.
    • Zona DNS privat: Aktifkan resolusi DNS brankas kunci, server database, dan cache Redis di jaringan virtual.

    Setelah perintah selesai membuat sumber daya dan menyebarkan kode aplikasi untuk pertama kalinya, aplikasi sampel yang disebarkan belum berfungsi karena Anda harus membuat perubahan kecil untuk membuatnya terhubung ke database di Azure.

Mengalami masalah? Periksa bagian Pemecahan Masalah.

3. Verifikasi string koneksi

Tip

Database SQL default string koneksi menggunakan autentikasi SQL. Untuk autentikasi tanpa kata sandi yang lebih aman, lihat Bagaimana cara mengubah koneksi SQL Database untuk menggunakan identitas terkelola?

Templat AZD yang Anda gunakan menghasilkan variabel konektivitas untuk Anda sudah sebagai pengaturan aplikasi dan mengeluarkannya ke terminal untuk kenyamanan Anda. Pengaturan aplikasi adalah salah satu cara untuk menjaga rahasia koneksi keluar dari repositori kode Anda.

  1. Dalam output AZD, temukan pengaturan AZURE_SQL_CONNECTIONSTRING dan AZURE_REDIS_CONNECTIONSTRING. Hanya nama pengaturan yang ditampilkan. Mereka terlihat seperti ini dalam output AZD:

     App Service app has the following connection strings:
         - AZURE_SQL_CONNECTIONSTRING
         - AZURE_REDIS_CONNECTIONSTRING
         - AZURE_KEYVAULT_RESOURCEENDPOINT
         - AZURE_KEYVAULT_SCOPE
     

    AZURE_SQL_CONNECTIONSTRINGberisi string koneksi ke SQL Database di Azure, dan AZURE_REDIS_CONNECTIONSTRING berisi string koneksi ke cache Azure Redis. Anda perlu menggunakannya dalam kode Anda nanti.

  2. Demi kenyamanan Anda, templat AZD menunjukkan tautan langsung ke halaman pengaturan aplikasi aplikasi. Temukan tautan dan buka di tab browser baru.

Mengalami masalah? Periksa bagian Pemecahan Masalah.

4. Ubah kode sampel dan sebarkan ulang

  1. Di ruang kode GitHub, mulai sesi obrolan baru dengan memilih tampilan Obrolan , lalu pilih +.

  2. Tanyakan, "@workspace Bagaimana aplikasi tersambung ke database dan cache?" Copilot mungkin memberi Anda beberapa penjelasan tentang MyDatabaseContext kelas dan bagaimana dikonfigurasi di Program.cs.

  3. Tanyakan, "Dalam mode produksi, saya ingin aplikasi menggunakan string koneksi yang disebut AZURE_SQL_CONNECTIONSTRING untuk database dan pengaturan aplikasi yang disebut AZURE_REDIS_CONNECTIONSTRING*." Copilot mungkin memberi Anda saran kode yang mirip dengan yang ada di Opsi 2: tanpa langkah-langkah GitHub Copilot di bawah ini dan bahkan memberi tahu Anda untuk membuat perubahan dalam file Program.cs.

  4. Buka Program.cs di penjelajah dan tambahkan saran kode.

    GitHub Copilot tidak memberi Anda respons yang sama setiap kali, dan itu tidak selalu benar. Anda mungkin perlu mengajukan lebih banyak pertanyaan untuk menyempurnakan responsnya. Untuk tips, lihat Apa yang bisa saya lakukan dengan GitHub Copilot di codespace saya?.

Sebelum menyebarkan perubahan ini, Anda masih perlu membuat bundel migrasi.

Mengalami masalah? Periksa bagian Pemecahan Masalah.

5. Hasilkan skema database

Dengan SQL Database yang dilindungi oleh jaringan virtual, cara term mudah untuk menjalankan migrasi database adalah dalam sesi SSH dengan kontainer App Service. Namun, kontainer App Service Linux tidak memiliki .NET SDK, jadi cara term mudah untuk menjalankan migrasi database adalah dengan mengunggah bundel migrasi mandiri.

  1. Buat bundel migrasi untuk proyek Anda dengan perintah berikut:

    dotnet ef migrations bundle --runtime linux-x64 -o migrationsbundle
    

    Tip

    Aplikasi sampel (lihat DotNetCoreSqlDb.csproj) dikonfigurasi untuk menyertakan file migrationsbundle ini. Selama tahap, azd packagemigrationsbundle akan ditambahkan ke paket penyebaran.

  2. Sebarkan semua perubahan dengan azd up.

    azd up
    
  3. Dalam output AZD, temukan URL untuk sesi SSH dan navigasikan ke dalamnya di browser. Ini terlihat seperti ini dalam output:

     Open SSH session to App Service container at: https://<app-name>.scm.azurewebsites.net/webssh/host
     
  4. Dalam sesi SSH, jalankan perintah berikut:

    cd /home/site/wwwroot
    ./migrationsbundle -- --environment Production
    

    Jika berhasil, App Service berhasil tersambung ke database. Ingatlah bahwa --environment Production sesuai dengan perubahan kode yang Anda buat di Program.cs.

    Catatan

    Hanya perubahan pada file di /home yang dapat bertahan di luar mulai ulang aplikasi. Perubahan di luar /home tidak dipertahankan.

Mengalami masalah? Periksa bagian Pemecahan Masalah.

6. Menelusuri aplikasi

  1. Di output AZD, temukan URL aplikasi Anda dan navigasikan ke url tersebut di browser. URL terlihat seperti ini dalam output AZD:

     Deploying services (azd deploy)
    
       (✓) Done: Deploying service web
       - Endpoint: https://<app-name>-<hash>.azurewebsites.net/
     
  2. Tambahkan beberapa tugas ke dalam daftar.

    Cuplikan layar aplikasi web ASP.NET Core dengan SQL Database yang berjalan di Azure memperlihatkan tugas.

    Selamat, Anda menjalankan aplikasi web di Azure App Service, dengan konektivitas yang aman ke Azure SQL Database.

Mengalami masalah? Periksa bagian Pemecahan Masalah.

7. Mengalirkan log diagnostik

Azure App Service dapat mengambil log konsol untuk membantu Anda mendiagnosis masalah dengan aplikasi Anda. Untuk kenyamanan, templat AZD sudah mengaktifkan pengelogan ke sistem file lokal dan mengirimkan log ke ruang kerja Analitik Log.

Aplikasi sampel mencakup pernyataan pengelogan standar untuk menunjukkan kemampuan ini, seperti yang ditunjukkan dalam cuplikan berikut:

public async Task<IActionResult> Index()
{
    var todoItems = await _cache.GetAsync(_TodoItemsCacheKey);
    if (todoItems != null)
    {
        _logger.LogInformation("Data from cache.");
        var todoList = JsonConvert.DeserializeObject<List<Todo>>(Encoding.UTF8.GetString(todoItems));
        return View(todoList);
    }
    else
    {
        _logger.LogInformation("Data from database.");
        var todoList = await _context.Todo.ToListAsync();
        var serializedTodoList = JsonConvert.SerializeObject(todoList);
        await _cache.SetAsync(_TodoItemsCacheKey, Encoding.UTF8.GetBytes(serializedTodoList));
        return View(todoList);
    }
}

Dalam output AZD, temukan tautan untuk mengalirkan log App Service dan navigasikan ke log tersebut di browser. Tautan terlihat seperti ini dalam output AZD:

Stream App Service logs at: https://portal.azure.com/#@/resource/subscriptions/<subscription-guid>/resourceGroups/<group-name>/providers/Microsoft.Web/sites/<app-name>/logStream

Pelajari selengkapnya tentang pengelogan di aplikasi .NET dalam seri aktifkan aplikasi Azure Monitor OpenTelemetry untuk aplikasi .NET, Node.js, Python, dan Java.

Mengalami masalah? Periksa bagian Pemecahan Masalah.

8. Membersihkan sumber daya

Untuk menghapus semua sumber daya Azure di lingkungan penyebaran saat ini, jalankan azd down dan ikuti perintahnya.

azd down

Pemecahan Masalah

Tampilan penyebaran portal untuk Azure SQL Database memperlihatkan status Konflik

Bergantung pada langganan dan wilayah yang Anda pilih, Anda mungkin melihat status penyebaran untuk Azure SQL Database menjadi Conflict, dengan pesan berikut dalam Detail operasi:

Location '<region>' is not accepting creation of new Windows Azure SQL Database servers at this time.

Kesalahan ini kemungkinan besar disebabkan oleh batas langganan Anda untuk wilayah yang Anda pilih. Coba pilih wilayah yang berbeda untuk penyebaran Anda.

Di portal Azure, UI aliran log untuk aplikasi web menunjukkan kesalahan jaringan

Anda mungkin melihat kesalahan ini:

Unable to open a connection to your app. This may be due to any network security groups or IP restriction rules that you have placed on your app. To use log streaming, please make sure you are able to access your app directly from your current network.

Ini biasanya merupakan kesalahan sementara saat aplikasi pertama kali dimulai. Tunggu beberapa menit dan periksa lagi.

Sesi SSH di browser menunjukkan SSH CONN CLOSED

Dibutuhkan beberapa menit agar kontainer Linux dimulai. Tunggu beberapa menit dan periksa lagi.

Halaman aliran log portal menunjukkan Connected! tetapi tidak ada log

Setelah Anda mengonfigurasi log diagnostik, aplikasi akan dimulai ulang. Anda mungkin perlu me-refresh halaman agar perubahan diterapkan di browser.

Tanya jawab umum

Berapa biaya untuk penyiapan ini?

Harga untuk sumber daya yang dibuat adalah sebagai berikut:

  • Paket App Service dibuat di tingkat Dasar dan dapat ditingkatkan atau diturunkan. Lihat Harga App Service.
  • Azure SQL Database dibuat dalam tingkat tujuan umum tanpa server pada perangkat keras seri Standar dengan inti minimum. Ada biaya kecil dan dapat didistribusikan ke wilayah lain. Anda dapat meminimalkan biaya lebih banyak lagi dengan mengurangi ukuran maksimumnya, atau Anda dapat meningkatkannya dengan menyesuaikan tingkat penyajian, tingkat komputasi, konfigurasi perangkat keras, jumlah inti, ukuran database, dan redundansi zona. Lihat Harga Azure SQL Database.
  • Azure Cache for Redis dibuat di tingkat Dasar dengan ukuran cache minimum. Ada biaya kecil yang terkait dengan tingkat ini. Anda dapat meningkatkannya ke tingkat performa yang lebih tinggi untuk ketersediaan, pengklusteran, dan fitur lainnya yang lebih tinggi. Lihat Harga Azure Cache for Redis.
  • Jaringan virtual tidak dikenakan biaya kecuali Anda mengonfigurasi fungsionalitas tambahan, seperti peering. Lihat Harga Azure Virtual Network.
  • Zona DNS privat dikenakan biaya kecil. Lihat Harga Azure DNS.

Bagaimana cara menyambungkan ke server Azure SQL Database yang diamankan di belakang jaringan virtual dengan alat lain?

  • Untuk akses dasar dari alat baris perintah, Anda dapat menjalankan sqlcmd dari terminal SSH aplikasi. Kontainer aplikasi tidak disertakan dengan sqlcmd, jadi Anda harus menginstalnya secara manual. Ingat bahwa klien yang diinstal tidak bertahan di seluruh mulai ulang aplikasi.
  • Untuk terhubung dari klien SQL Server Management Studio atau dari Visual Studio, komputer Anda harus berada dalam jaringan virtual. Misalnya, itu bisa berupa Azure VM yang terhubung ke salah satu subnet, atau komputer di jaringan lokal yang memiliki koneksi VPN situs-ke-situs dengan jaringan virtual Azure.

Bagaimana cara kerja pengembangan aplikasi lokal dengan GitHub Actions?

Ambil file alur kerja yang dibuat secara otomatis dari App Service sebagai contoh, masing-masing git push memulai eksekusi build dan penyebaran baru. Dari klon lokal repositori GitHub, Anda membuat pembaruan yang diinginkan mendorongnya ke GitHub. Contohnya:

git add .
git commit -m "<some-message>"
git push origin main

Bagaimana cara men-debug kesalahan selama penyebaran GitHub Actions?

Jika langkah gagal dalam file alur kerja GitHub yang dibuat secara otomatis, coba ubah perintah yang gagal untuk menghasilkan lebih banyak output verbose. Misalnya, Anda bisa mendapatkan lebih banyak output dari salah dotnet satu perintah dengan menambahkan -v opsi . Terapkan dan dorong perubahan Anda untuk memicu penyebaran lain ke App Service.

Saya tidak memiliki izin untuk membuat identitas yang ditetapkan pengguna

Lihat Menyiapkan penyebaran GitHub Actions dari Pusat Penyebaran.

Bagaimana cara mengubah koneksi SQL Database untuk menggunakan identitas terkelola?

String koneksi default ke database SQL dikelola oleh Konektor Layanan, dengan nama defaultConnector, dan menggunakan autentikasi SQL. Untuk menggantinya dengan koneksi yang menggunakan identitas terkelola, jalankan perintah berikut di cloud shell setelah mengganti tempat penampung:

az extension add --name serviceconnector-passwordless --upgrade
az sql server update --enable-public-network true
az webapp connection delete sql --connection defaultConnector --resource-group <group-name> --name <app-name>
az webapp connection create sql --connection defaultConnector --resource-group <group-name> --name <app-name> --target-resource-group <group-name> --server <database-server-name> --database <database-name> --client-type dotnet --system-identity --config-connstr true
az sql server update --enable-public-network false

Secara default, perintah az webapp connection create sql --client-type dotnet --system-identity --config-connstr melakukan hal berikut:

  • Mengatur pengguna Anda sebagai administrator ID Microsoft Entra dari server database SQL.
  • Buat identitas terkelola yang ditetapkan sistem dan berikan akses ke database.
  • Menghasilkan string koneksi tanpa kata sandi yang disebut AZURE_SQL_CONNECTIONGSTRING, yang sudah digunakan aplikasi Anda di akhir tutorial.

Aplikasi Anda sekarang harus memiliki konektivitas ke database SQL. Untuk informasi selengkapnya, lihat Tutorial: Menyambungkan ke database Azure dari App Service tanpa rahasia menggunakan identitas terkelola.

Tip

Tidak ingin mengaktifkan koneksi jaringan publik? Anda dapat melompati az sql server update --enable-public-network true dengan menjalankan perintah dari shell cloud Azure yang terintegrasi dengan jaringan virtual Anda jika Anda memiliki penetapan peran Pemilik pada langganan Anda.

Untuk memberikan identitas akses yang diperlukan ke database yang diamankan oleh jaringan virtual, az webapp connection create sql perlu konektivitas langsung dengan autentikasi ID Entra ke server database. Secara default, azure cloud shell tidak memiliki akses ini ke database yang diamankan jaringan.

Apa yang dapat saya lakukan dengan GitHub Copilot di codespace saya?

Anda mungkin telah memperhatikan bahwa tampilan obrolan GitHub Copilot sudah ada untuk Anda saat Membuat codespace. Untuk kenyamanan Anda, kami menyertakan ekstensi obrolan GitHub Copilot dalam definisi kontainer (lihat .devcontainer/devcontainer.json). Namun, Anda memerlukan akun GitHub Copilot (uji coba gratis 30 hari tersedia).

Beberapa tips untuk Anda ketika Anda berbicara dengan GitHub Copilot:

  • Dalam satu sesi obrolan, pertanyaan dan jawaban dibangun satu sama lain dan Anda dapat menyesuaikan pertanyaan Anda untuk menyempurnakan jawaban yang Anda dapatkan.
  • Secara default, GitHub Copilot tidak memiliki akses ke file apa pun di repositori Anda. Untuk mengajukan pertanyaan tentang file, buka file di editor terlebih dahulu.
  • Untuk membiarkan GitHub Copilot memiliki akses ke semua file di repositori saat menyiapkan jawabannya, mulai pertanyaan Anda dengan @workspace. Untuk informasi selengkapnya, lihat Use the @workspace agent .
  • Dalam sesi obrolan, GitHub Copilot dapat menyarankan perubahan dan (dengan @workspace) bahkan tempat untuk membuat perubahan, tetapi tidak diizinkan untuk membuat perubahan untuk Anda. Terserah Anda untuk menambahkan perubahan yang disarankan dan mengujinya.

Berikut adalah beberapa hal lain yang dapat Anda katakan untuk menyempurnakan jawaban yang Anda dapatkan:

  • Saya ingin kode ini hanya berjalan dalam mode produksi.
  • Saya ingin kode ini hanya berjalan di Azure App Service dan bukan secara lokal.
  • Parameter --output-path tampaknya tidak didukung.

Lanjutkan ke tutorial berikutnya untuk mempelajari cara mengamankan aplikasi Anda dengan domain dan sertifikat kustom.

Atau, lihat sumber daya lainnya: