Tutorial: Menyebarkan aplikasi ASP.NET Core dan Azure SQL Database ke Azure App Service
Dalam tutorial ini, Anda akan 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 7.0, prosesnya sama untuk versi ASP.NET Core dan ASP.NET Framework lainnya.
Tutorial ini membutuhkan:
- Akun Azure dengan langganan aktif. Jika Anda tidak memiliki akun Azure, Anda dapat membuat akun secara gratis.
- Akun GitHub. Anda juga bisa mendapatkannya secara gratis.
Aplikasi sampel
Untuk menjelajahi aplikasi sampel yang digunakan dalam tutorial ini, unduh dari repositori https://github.com/Azure-Samples/msdocs-app-service-sqldb-dotnetcore atau kloning menggunakan perintah Git berikut:
git clone https://github.com/Azure-Samples/msdocs-app-service-sqldb-dotnetcore.git
cd msdocs-app-service-sqldb-dotnetcore
1. 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 adalah nama yang digunakan sebagai bagian dari nama DNS untuk aplikasi web Anda dalam bentuk
https://<app-name>.azurewebsites.net
. - Wilayah tempat menjalankan aplikasi secara fisik di dunia.
- 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:
- Masukkan "database apl web" di bilah pencarian di bagian atas portal Azure.
- 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.
- Grup Sumber Daya → Pilih Buat baru dan gunakan nama msdocs-core-sql-tutorial.
- Wilayah → Wilayah Azure di dekat Anda.
- Nama → msdocs-core-sql-XYZ di mana XYZ adalah tiga karakter acak. Nama ini harus unik di seluruh Azure.
- Tumpukan runtime → .NET 7 (STS).
- Menambahkan Azure Cache for Redis? → Ya.
- Paket hosting → Dasar. Setelah siap, Anda dapat melakukan peningkatan ke tingkat harga produksi nanti.
- Pilih SQLAzure sebagai mesin database. Azure SQL Database adalah mesin database platform as a service (PaaS) yang dikelola sepenuhnya yang selalu berjalan pada versi stabil terbaru SQL Server.
- Pilih Tinjau + buat.
- 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.
- 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 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.
- Zona DNS privat → Mengaktifkan resolusi DNS server database dan cache Redis di jaringan virtual.
2. Verifikasi string koneksi
Wizard pembuatan yang dihasilkan string koneksi untuk database SQL dan cache Redis sudah. Dalam langkah ini, temukan string koneksi yang dihasilkan untuk nanti.
Langkah 1: Di halaman App Service, di menu sebelah kiri, pilih Konfigurasi.
Langkah 2:
- Gulir ke bagian bawah halaman dan temukan AZURE_SQL_CONNECTIONSTRING di bagian string Koneksi ion. String ini dihasilkan dari database SQL baru oleh wizard pembuatan. Untuk menyiapkan aplikasi Anda, nama ini adalah semua yang Anda butuhkan.
- Selain itu, temukan AZURE_REDIS_CONNECTIONSTRING di bagian Pengaturan aplikasi. String ini dihasilkan dari cache Redis baru oleh wizard pembuatan. Untuk menyiapkan aplikasi Anda, nama ini adalah semua yang Anda butuhkan.
- Jika mau, Anda dapat memilih tombol Edit di sebelah kanan setiap pengaturan dan melihat atau menyalin nilainya.
Nantinya, Anda akan mengubah aplikasi untuk digunakan
AZURE_SQL_CONNECTIONSTRING
danAZURE_REDIS_CONNECTIONSTRING
.
3. Menyebarkan kode sampel
Dalam langkah ini, Anda akan 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 akan memulai tindakan build dan deploy.
Langkah 1: Di jendela browser baru:
- Masuk ke akun GitHub Anda.
- Buka https://github.com/Azure-Samples/msdocs-app-service-sqldb-dotnetcore.
- Pilih Fork.
- Pilih Buat fork.
Langkah 2: Di halaman App Service, di menu sebelah kiri, pilih Pusat Penyebaran.
Langkah 3: Di halaman Pusat Penyebaran:
- Di Sumber, pilih GitHub. Secara default, GitHub Actions dipilih sebagai penyedia build.
- Masuk ke akun GitHub Anda dan ikuti perintah untuk mengotorisasi Azure.
- Di Organisasi, pilih akun Anda.
- Di Repositori, pilih msdocs-app-service-sqldb-dotnetcore.
- Di Cabang, pilih utama.
- Di menu atas, pilih Simpan. App Service menerapkan file alur kerja ke dalam repositori GitHub yang dipilih, di direktori
.github/workflows
.
Langkah 4: Kembalikan halaman GitHub sampel fork, buka Visual Studio Code di browser dengan menekan tombol .
.
Langkah 5: Di Visual Studio Code di browser:
- Buka DotNetCoreSqlDb/appsettings.json di penjelajah.
- Ubah nama
MyDbConnection
string koneksi menjadiAZURE_SQL_CONNECTIONSTRING
, yang cocok dengan string koneksi yang dibuat di App Service sebelumnya.
Langkah 6:
- Buka DotNetCoreSqlDb/Program.cs di penjelajah.
- Dalam metode ,
options.UseSqlServer
ubah namaMyDbConnection
string koneksi menjadiAZURE_SQL_CONNECTIONSTRING
. Di sinilah string koneksi digunakan oleh aplikasi sampel. builder.Services.AddDistributedMemoryCache();
Hapus metode dan ganti dengan kode berikut. Ini mengubah kode Anda dari menggunakan cache dalam memori ke cache Redis di Azure, dan itu melakukannya dengan menggunakanAZURE_REDIS_CONNECTIONSTRING
dari sebelumnya.
builder.Services.AddStackExchangeRedisCache(options =>
{
options.Configuration = builder.Configuration["AZURE_REDIS_CONNECTIONSTRING"];
options.InstanceName = "SampleInstance";
});
Langkah 7:
- Buka .github/workflows/main_msdocs-core-sql-XYZ di penjelajah. File ini dibuat oleh wizard pembuatan App Service.
- Di bawah langkah,
dotnet publish
tambahkan langkah untuk menginstal alat Entity Framework Core dengan perintahdotnet tool install -g dotnet-ef --version 7.0.14
. - Di bawah langkah baru, tambahkan langkah lain untuk menghasilkan bundel migrasi database dalam paket penyebaran:
dotnet ef migrations bundle --runtime linux-x64 -p DotNetCoreSqlDb/DotNetCoreSqlDb.csproj -o ${{env.DOTNET_ROOT}}/myapp/migrate
. 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 8:
- Pilih ekstensi Kontrol Sumber.
- Di kotak teks, ketik pesan penerapan seperti
Configure DB & Redis & add migration bundle
. - Pilih Terapkan dan Dorong.
Langkah 9: Kembali ke halaman Pusat Penyebaran di portal Azure:
- Pilih Log. Eksekusi penyebaran baru sudah dimulai dari perubahan yang Anda lakukan.
- Di item log untuk eksekusi penyebaran, pilih entri Bangun/Sebarkan Log dengan tanda waktu terbaru.
Langkah 10: 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 menampilkan status Selesai. Pembuatan kotak pasir memerlukan waktu selama beberapa menit.
4. 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 App Service.
Langkah 1: Kembali ke halaman App Service, di menu sebelah kiri, pilih SSH.
Langkah 2: Di terminal SSH:
- Jalankan
cd /home/site/wwwroot
. Berikut adalah semua file yang Anda sebarkan. - Jalankan bundel migrasi yang dihasilkan oleh alur kerja GitHub dengan
./migrate
. Jika berhasil, App Service berhasil tersambung ke SQL Database. Hanya perubahan pada file di/home
yang dapat bertahan di luar mulai ulang aplikasi. Perubahan di luar/home
tidak dipertahankan.
5. Telusuri aplikasi
Langkah 1: Di halaman App Service:
- Dari menu kiri, pilih Ringkasan.
- Pilih URL aplikasi Anda. Anda juga dapat menavigasi langsung ke
https://<app-name>.azurewebsites.net
.
Langkah 2: Tambahkan beberapa tugas ke daftar. Selamat, Anda menjalankan aplikasi ASP.NET Core berbasis data yang aman di Azure App Service.
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.
6. Mengalirkan log diagnostik
Azure App Service menangkap semua pesan yang masuk ke konsol untuk membantu Anda mendiagnosis masalah dengan aplikasi Anda. Aplikasi sampel mengeluarkan pesan log konsol dalam setiap titik akhirnya untuk menunjukkan kemampuan ini.
Langkah 1: Di halaman App Service:
- Dari menu kiri, pilih Log App Service.
- Di Pengelogan aplikasi, pilih Sistem File.
Langkah 2: Dari menu sebelah kiri, pilih Aliran log. Anda melihat log untuk aplikasi Anda, termasuk log platform dan log dari dalam kontainer.
7. 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:
- Masukkan nama grup sumber daya.
- Pilih grup sumber daya.
Langkah 2: Di halaman grup sumber daya, pilih Hapus grup sumber daya.
Langkah 3:
- Masukkan nama grup sumber daya untuk mengonfirmasi penghapusan Anda.
- Pilih Hapus.
Tanya jawab umum
- Berapa biaya untuk penyiapan ini?
- Bagaimana cara menyambungkan ke server Azure SQL Database yang diamankan di belakang jaringan virtual dengan alat lain?
- Bagaimana cara kerja pengembangan aplikasi lokal dengan GitHub Actions?
- Bagaimana cara men-debug kesalahan selama penyebaran GitHub Actions?
Berapa biaya untuk penyiapan ini?
Harga untuk buat sumber daya 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 dengansqlcmd
, 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.
Langkah berikutnya
Lanjutkan ke tutorial berikutnya untuk mempelajari cara mengamankan aplikasi Anda dengan domain dan sertifikat kustom.
Atau, lihat sumber daya lainnya: