Bagikan melalui


Menyebarkan aplikasi web Python Django dengan PostgreSQL di Azure

Dalam tutorial ini, Anda menyebarkan aplikasi web Python berbasis data ke Azure App Service yang menggunakan layanan database relasional Azure Database for PostgreSQL . Azure App Service mendukung Python di lingkungan server Linux. Artikel ini menggunakan Django. Alternatifnya termasuk Flask atau tutorial FastAPI.

Diagram yang memperlihatkan arsitektur App Service dengan database PostgreSQL di Azure.

Dalam tutorial ini, Anda akan mempelajari cara:

  • Buat arsitektur cache App Service, PostgreSQL, dan Redis yang aman secara default.
  • Amankan rahasia koneksi menggunakan identitas terkelola dan referensi Key Vault.
  • Sebarkan contoh aplikasi Python 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 menjalankan migrasi database.
  • Streaming log diagnostik dari Azure.
  • Kelola aplikasi di portal Azure.
  • Siapkan arsitektur yang sama dan terapkan dengan menggunakan Azure Developer CLI.
  • Optimalkan alur kerja pengembangan Anda dengan GitHub Codespaces dan GitHub Copilot.

Prasyarat

Lewati ke akhir

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

mkdir msdocs-django-postgresql-sample-app
cd msdocs-django-postgresql-sample-app
azd init --template msdocs-django-postgresql-sample-app
azd up

Jalankan sampel

Sebagai titik awal, siapkan contoh aplikasi berbasis data. Untuk kenyamanan Anda, sampel repositori mencakup konfigurasi kontainer pengembangan. Kontainer dev memiliki semua yang Anda butuhkan untuk mengembangkan aplikasi, termasuk database, cache, dan semua variabel lingkungan yang dibutuhkan aplikasi sampel. Kontainer dev dapat berjalan di codespace GitHub, sehingga Anda dapat menjalankan sampel di komputer mana pun dengan browser web.

Catatan

Jika Anda mengikuti tutorial ini dengan aplikasi Anda sendiri, lihat deskripsi file requirements.txt di README.md untuk melihat paket apa yang Anda butuhkan.

Langkah 1: Di jendela browser baru:

  1. Masuk ke akun GitHub Anda.
  2. Arahkan ke https://github.com/Azure-Samples/msdocs-django-postgresql-sample-app/fork.
  3. Hapus pilihan Salin cabang utama saja. Anda ingin semua cabang tersebut.
  4. Pilih Buat fork.

Langkah 2: Di fork GitHub:

  1. Pilih utama>starter-no-infra untuk cabang starter. Cabang ini hanya berisi proyek sampel dan tidak ada file atau konfigurasi terkait Azure.
  2. Pilih Kode>Buat ruang kode pada starter-no-infra. Penyiapan ruang kode membutuhkan beberapa menit. Ini beroperasi pip install -r requirements.txt untuk repositori Anda. File .env yang disediakan sudah berisi variabel dummy SECRET_KEY yang perlu dijalankan Django secara lokal.

Langkah 3: Di terminal codespace:

  1. Jalankan migrasi database dengan python manage.py migrate.
  2. Jalankan aplikasi dengan python manage.py runserver.
  3. Saat Anda melihat pemberitahuan Your application running on port 8000 is available., pilih Buka di Browser. Anda akan melihat aplikasi sampel di tab browser baru. Untuk menghentikan aplikasi, ketik Ctrl+C.

Kiat

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.

Membuat App Service, database, dan cache

Dalam langkah ini, buat sumber daya Azure. Tutorial ini membuat sekumpulan sumber daya aman secara default yang mencakup App Service, Azure Database for PostgreSQL, dan Azure Cache. Untuk proses pembuatan, Anda menentukan:

  • Nama untuk aplikasi web. Ini digunakan sebagai bagian dari nama DNS untuk aplikasi Anda.
  • Wilayah tempat menjalankan aplikasi secara fisik di dunia. Ini juga bagian dari nama DNS untuk aplikasi Anda.
  • Tumpukan waktu proses untuk aplikasi. Anda memilih versi Python yang akan digunakan untuk aplikasi Anda.
  • Paket hosting untuk aplikasi. Tingkat harga mencakup serangkaian fitur dan kapasitas penskalaan untuk aplikasi Anda.
  • Grup Sumber Daya untuk aplikasi. Grup sumber daya memungkinkan Anda mengelompokkan semua sumber daya Azure yang diperlukan untuk aplikasi dalam kontainer logis.

Masuk ke portal Azure. Ikuti langkah-langkah ini untuk membuat sumber daya Azure App Service Anda.

Langkah 1: Di portal Azure:

  1. Di bagian atas portal Microsoft Azure, di kotak pencarian, masukkan database aplikasi web.
  2. Di bawah judul Marketplace , pilih item berlabel Aplikasi Web + Database. Anda juga dapat menavigasi ke Membuat aplikasi Web secara langsung.

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

  1. Grup Sumber Daya: Pilih Buat baru dan masukkan msdocs-django-postgres-tutorial.
  2. Wilayah: Wilayah Azure apa pun di dekat Anda.
  3. Nama: msdocs-python-postgres-XYZ.
  4. Tumpukan runtime: Python 3.14.
  5. Database: PostgreSQL - Server Fleksibel dipilih secara default sebagai mesin database. Nama server dan nama database juga diatur secara default ke nilai yang sesuai.
  6. Tambahkan Azure Cache for Redis: Ya.
  7. Paket Hosting: Basic. Setelah siap, Anda dapat meningkatkan skala ke tingkat harga produksi.
  8. Pilih Tinjau dan buat.
  9. Setelah validasi selesai, pilih Buat.

Langkah 3: Penyebaran membutuhkan waktu beberapa menit untuk diselesaikan. Setelah penyebaran selesai, pilih Buka sumber daya. Penyebaran membuat sumber daya berikut:

  • Grup sumber daya: Kontainer untuk semua sumber daya yang dibuat.
  • Rencana App Service: Menentukan sumber daya komputasi untuk App Service. Instans ini adalah paket Linux di lapisan Dasar.
  • 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.
  • Private endpoint: Titik akhir akses untuk cache Redis di jaringan virtual.
  • Antarmuka jaringan: Alamat IP privat, satu untuk setiap titik akhir privat.
  • Server fleksibel Azure Database for PostgreSQL: Hanya dapat diakses dari dalam jaringan virtual. Penyebaran membuat database dan pengguna di server.
  • Azure Cache for Redis: Hanya dapat diakses dari jaringan privatnya.
  • Zona-zona DNS Privat: Mengaktifkan resolusi DNS untuk server basis data dari cache Redis di jaringan virtual.

Amankan rahasia koneksi dan tambahkan SECRET_KEY

Proses penyebaran menghasilkan variabel konektivitas untuk Anda sebagai pengaturan aplikasi. Praktik terbaik keamanan adalah menjaga rahasia sepenuhnya di luar App Service. Pindahkan rahasia Anda ke Key Vault dan ubah pengaturan aplikasi Anda ke referensi Key Vault dengan menggunakan Konektor Layanan.

Langkah 1: Ambil string koneksi yang ada

  1. Di menu sebelah kiri halaman App Service, pilih Pengaturan>Variabel lingkungan.
  2. Pilih AZURE_POSTGRESQL_CONNECTIONSTRING.
  3. Di pengaturan Tambahkan/Edit aplikasi, di bidang Nilai , temukan bagian kata sandi= di akhir string.
  4. Salin string kata sandi setelah kata sandi= untuk digunakan nanti. Pengaturan aplikasi ini memungkinkan Anda terhubung ke database Postgres dan cache Redis yang diamankan di belakang titik akhir privat. Rahasia disimpan langsung di aplikasi App Service, yang bukan pendekatan terbaik. Anda akan mengubah konfigurasi ini. Anda juga menambahkan pengaturan SECRET_KEY tambahan, yang diperlukan aplikasi Django Anda.

Langkah 2: Buat brankas kunci untuk manajemen rahasia yang aman

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

Langkah 3: Amankan brankas kunci dengan Endpoint Pribadi

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

Langkah 4: Mengonfigurasi konektor PostgreSQL

  1. Di bilah pencarian atas, masukkan msdocs-python-postgres, lalu pilih sumber daya App Service msdocs-python-postgres-XYZ.
  2. Di halaman App Service , di menu sebelah kiri, pilih Pengaturan>Konektor Layanan. Sudah ada dua konektor, yang telah dibuat oleh proses pembuatan aplikasi untuk Anda.
  3. Pilih kotak centang di samping konektor PostgreSQL, lalu pilih Edit.
  4. Di Jenis klien, pilih Django. Jenis klien Django pada konektor layanan PostgreSQL menyediakan variabel database dalam pengaturan yang terpisah, bukan dalam satu string koneksi. Variabel terpisah lebih mudah Anda gunakan dalam pengaturan database Django.
  5. Pilih Autentikasi.
  6. Di Kata Sandi, tempelkan kata sandi yang Anda salin sebelumnya.
  7. Pilih Simpan Rahasia di Key Vault.
  8. Di bawah Koneksi Key Vault, pilih Buat baru. Tindakan ini membuka dialog Buat koneksi 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 PostgreSQL

  1. Anda kembali ke dialog edit untuk defaultConnector. Di bawah Autentikasi, tunggu konektor brankas kunci dibuat. Daftar tarik-turun Koneksi Key Vault akan memilihnya secara otomatis.
  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 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. Proses 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 > variabel Lingkungan lagi.
  2. Di samping AZURE_POSTGRESQL_PASSWORD, pilih Perlihatkan nilai. Nilainya harus @Microsoft.KeyVault(...), yang berarti bahwa itu adalah key vault reference karena rahasia sekarang dikelola dalam key vault.
  3. Untuk memverifikasi string koneksi Redis, pilih Perlihatkan nilai di samping AZURE_REDIS_CONNECTIONSTRING.

Langkah 9: Aplikasi sampel membaca variabel lingkungan SECRET_KEY untuk mengatur pengaturan SECRET_KEY yang diperlukan. Anda membuatnya sebagai pengaturan aplikasi dalam langkah ini.

  1. Di tab Pengaturan aplikasi, pilih Tambahkan.
  2. Atur Nama ke SECRET_KEY.
  3. Atur Nilai ke string acak panjang.
  4. Pilih Terapkan, lalu Terapkan lagi, lalu Konfirmasi.

Untuk meringkas, proses mengamankan rahasia koneksi Anda melibatkan:

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

Catatan

Idealnya, pengaturan aplikasi SECRET_KEY harus dikonfigurasi sebagai referensi key vault juga, yang merupakan proses multilangkah. Untuk informasi selengkapnya, lihat Bagaimana cara mengubah pengaturan aplikasi SECRET_KEY ke referensi Key Vault?

Mengalami masalah? Periksa bagian Pemecahan Masalah.


Menyebarkan kode sampel

Di bagian ini, konfigurasikan penyebaran GitHub menggunakan GitHub Actions. Ini adalah salah satu dari banyak cara untuk menerapkan ke App Service. Ini adalah cara yang bagus untuk memiliki integrasi berkelanjutan dalam proses penyebaran Anda. Pada dasarnya, setiap perubahan pada repositori GitHub Anda memicu aksi pembangunan dan penerapan.

Langkah 1: Di menu sebelah kiri, pilih .

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-django-postgresql-sample-app.
  5. Di Branch, pilih starter-no-infra. Cabang ini sama dengan yang Anda kerjakan 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 repositori GitHub di .github/workflows direktori. Secara default, pusat penerapan membuat identitas yang ditetapkan oleh pengguna untuk mengautentikasi alur kerja menggunakan Microsoft Entra (autentikasi OIDC). Untuk opsi autentikasi lainnya, 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. Perintah ini menarik file alur kerja yang baru dikomit ke dalam 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 redis?" Copilot mungkin memberi Anda beberapa penjelasan tentang bagaimana pengaturan dikonfigurasi di azureproject/development.py dan azureproject/production.py.
  3. Tanyakan, "@workspace Dalam mode produksi, aplikasi saya berjalan di aplikasi web App Service, yang menggunakan Konektor Layanan Azure untuk menyambungkan ke server fleksibel PostgreSQL menggunakan jenis klien Django. Apa nama variabel lingkungan yang perlu saya gunakan?" Copilot mungkin memberi Anda saran kode yang mirip dengan yang ada di Opsi 2: tanpa langkah-langkah GitHub Copilot berikut dan bahkan memberi tahu Anda untuk membuat perubahan dalam file azureproject/production.py .
  4. Buka azureproject/production.py di explorer dan tambahkan saran kode.
  5. Tanyakan, "@workspace aplikasi Layanan Aplikasi Saya juga menggunakan Konektor Layanan Azure untuk menyambungkan ke Cache for Redis menggunakan jenis klien Django. Apa nama variabel lingkungan yang perlu saya gunakan?" Copilot mungkin memberi Anda saran kode yang mirip dengan yang ada di Opsi 2: tanpa langkah-langkah GitHub Copilot berikut dan bahkan memberi tahu Anda untuk membuat perubahan dalam file azureproyct/production.py .
  6. Tambahkan saran kode. GitHub Copilot tidak memberi Anda respons yang sama setiap saat. Respons 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 azureproject/production.py di penjelajah.
  2. Temukan kode yang dikomentari (baris 29-48) dan batalkan komentar. Kode ini membuat koneksi PostgreSQL dan Redis dengan menggunakan AZURE_POSTGRESQL_USER, , AZURE_POSTGRESQL_PASSWORD, AZURE_POSTGRESQL_HOSTAZURE_POSTGRESQL_NAME, dan AZURE_REDIS_CONNECTIONSTRING.

Langkah 5:

  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 6: Kembali ke Pusat Penyebaran di portal Microsoft Azure:

  1. Pilih Log, lalu pilih Refresh untuk melihat proses deploymen baru.
  2. Pada item log untuk eksekusi penyebaran, pilih entri Log Build/Deploy dengan tanda waktu terbaru.

Langkah 7: Anda dibawa ke repositori GitHub Anda. Aksi 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 panduan Pemecahan Masalah.

Membuat skema database

Dengan database PostgreSQL yang dilindungi oleh jaringan virtual, cara termampu untuk menjalankan migrasi database Django 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, jalankan python manage.py migrate. Jika berhasil, App Service berhasil tersambung ke database.

Kiat

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

Sesi SSH berguna untuk menjalankan perintah umum python manage.py , seperti pembuatan pengguna dengan python manage.py createsuperuser. Untuk informasi selengkapnya, lihat django django-admin dan manage.py. Gunakan akun superuser untuk mengakses bagian /admin situs web.

Mengalami masalah? Periksa bagian Pemecahan Masalah.

Jelajahi aplikasi

Langkah 1: Di halaman App Service :

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

Langkah 2: Tambahkan beberapa restoran ke daftar. Selamat! Anda menjalankan aplikasi web di Azure App Service, dengan konektivitas aman ke Azure Database for PostgreSQL.

Mentransmisikan log diagnostik

Azure App Service mengambil semua log konsol untuk membantu Anda mendiagnosis masalah dengan aplikasi Anda. Aplikasi sampel menyertakan print() pernyataan untuk menunjukkan kemampuan ini.

def index(request):
    print('Request for index page received')
    restaurants = Restaurant.objects.annotate(avg_rating=Avg('review__rating')).annotate(review_count=Count('review'))
    lastViewedRestaurant = request.session.get("lastViewedRestaurant", False)

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.

Untuk informasi selengkapnya tentang pengelogan di aplikasi Python, lihat menyiapkan Azure Monitor untuk aplikasi Python Anda.

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. Untuk mengonfirmasi penghapusan Anda, masukkan nama grup sumber daya.
  2. Pilih Hapus.

Membuat sumber daya Azure dan menyebarkan aplikasi sampel

Di bagian ini, buat sumber daya Azure dan sebarkan 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 Database for PostgreSQL, dan Azure Cache for Redis.

Kontainer pengembangan sudah memiliki Azure Developer CLI (AZD).

  1. Dari akar repositori, jalankan azd init.

    azd init --template python-app-service-postgresql-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 dengan azd provision perintah . Ikuti perintah untuk memilih langganan dan lokasi yang diinginkan untuk sumber daya Azure.

    azd provision
    

    Perintah azd provision membutuhkan waktu sekitar 15 menit untuk diselesaikan. Cache Redis membutuhkan waktu paling lama. Kemudian, ubah kode Anda agar berfungsi dengan App Service dan sebarkan perubahan dengan azd deploy. Selama berjalan, perintah menyediakan pesan tentang proses provisi dan penyebaran. Output menyertakan tautan ke penyebaran di Azure.

    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.
    • Rencana App Service: Menentukan sumber daya komputasi untuk App Service. Ini membuat paket Linux di tingkat Dasar.
    • 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 dan Cache Redis di jaringan virtual.
    • Antarmuka jaringan: Alamat IP privat, satu untuk setiap titik akhir privat.
    • Server fleksibel Azure Database for PostgreSQL: Hanya dapat diakses dari dalam jaringan virtual. Sistem ini membuat sebuah database dan seorang pengguna di server.
    • Zona DNS privat: Mengaktifkan resolusi DNS server PostgreSQL di jaringan virtual.
    • Ruang Kerja Analitik Log: Berfungsi sebagai kontainer target untuk aplikasi Anda dalam mengirimkan log, yang juga memungkinkan Anda mengkueri log tersebut.
    • Azure Cache for Redis: Hanya dapat diakses dari belakang titik akhir privatnya.
    • Brankas Kunci: Hanya dapat diakses melalui titik akhir privat. Digunakan untuk mengelola rahasia untuk aplikasi App Service.

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

Mengalami masalah? Periksa bagian Pemecahan Masalah.

Menggunakan string koneksi database

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

  1. Dalam output AZD, temukan pengaturan AZURE_POSTGRESQL_USER, , AZURE_POSTGRESQL_PASSWORD, AZURE_POSTGRESQL_HOSTAZURE_POSTGRESQL_NAME, dan AZURE_REDIS_CONNECTIONSTRING. Untuk menjaga rahasia tetap aman, hanya nama pengaturan yang ditampilkan. Mereka terlihat seperti ini dalam output AZD:

     App Service app has the following connection settings:
             - AZURE_POSTGRESQL_NAME
             - AZURE_POSTGRESQL_HOST
             - AZURE_POSTGRESQL_USER
             - AZURE_POSTGRESQL_PASSWORD
             - AZURE_REDIS_CONNECTIONSTRING
             - AZURE_KEYVAULT_RESOURCEENDPOINT
             - AZURE_KEYVAULT_SCOPE
     
  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.

Mengubah kode sampel dan menyebarkan ulang

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

  2. Tanyakan, "@workspace Bagaimana aplikasi tersambung ke database?" Copilot mungkin memberi Anda beberapa penjelasan tentang bagaimana pengaturan koneksi dikonfigurasi di azureproject/development.py dan azureproject/production.py.

  3. Tanyakan, "@workspace Dalam mode produksi, aplikasi saya berjalan di aplikasi web App Service, yang menggunakan Konektor Layanan Azure untuk menyambungkan ke server fleksibel PostgreSQL menggunakan jenis klien Django. Apa nama variabel lingkungan yang perlu saya gunakan?" Copilot mungkin memberi Anda saran kode yang mirip dengan yang ada di Opsi 2: tanpa langkah-langkah GitHub Copilot berikut dan bahkan memberi tahu Anda untuk membuat perubahan dalam file azureproject/production.py .

  4. Buka azureproject/production.py di explorer dan tambahkan saran kode.

    GitHub Copilot tidak memberi Anda respons yang sama setiap saat. Respons 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?.

  5. Di terminal, jalankan azd deploy.

    azd deploy
    

Mengalami masalah? Periksa bagian Pemecahan Masalah.

Membuat skema database

Dengan database PostgreSQL yang dilindungi oleh jaringan virtual, cara termampu untuk menjalankan migrasi database Django adalah dalam sesi SSH dengan kontainer Linux di App Service.

  1. 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: <URL>
    
  2. Dalam sesi SSH, jalankan python manage.py migrate. Jika perintah berhasil, App Service berhasil tersambung ke database.

    Cuplikan layar yang memperlihatkan perintah untuk dijalankan di shell SSH dan outputnya (Django).

    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.

Jelajahi 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: <URL>
    
  2. Tambahkan beberapa restoran ke daftar.

    Cuplikan layar aplikasi web Django dengan PostgreSQL berjalan di Azure memperlihatkan ulasan restoran dan restoran (Django).

    Selamat! Anda menjalankan aplikasi web di Azure App Service, dengan konektivitas aman ke Azure Database for PostgreSQL.

Mengalami masalah? Periksa bagian Pemecahan Masalah.

Mentransmisikan log diagnostik

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

Aplikasi sampel mencakup print() pernyataan untuk menunjukkan kemampuan ini, seperti yang ditunjukkan dalam cuplikan berikut.

def index(request):
    print('Request for index page received')
    restaurants = Restaurant.objects.annotate(avg_rating=Avg('review__rating')).annotate(review_count=Count('review'))
    lastViewedRestaurant = request.session.get("lastViewedRestaurant", False)

Dalam output AZD, temukan tautan untuk menampilkan log App Service dan buka di browser.

Stream App Service logs at: <URL>

Pelajari selengkapnya tentang pengelogan di aplikasi Python dalam seri tentang menyiapkan Azure Monitor untuk aplikasi Python Anda.

Mengalami masalah? Periksa bagian Pemecahan Masalah.

Membersihkan sumber daya

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

azd down

Pemecahan Masalah

Berikut adalah masalah yang mungkin Anda temui saat mencoba mengerjakan tutorial ini dan langkah-langkah untuk mengatasinya.

Saya tidak dapat tersambung ke sesi SSH

Jika Anda tidak dapat terhubung ke sesi SSH, aplikasi itu sendiri gagal dimulai. Periksa log diagnostik untuk detailnya. Misalnya, jika Anda melihat kesalahan seperti KeyError: 'AZURE_POSTGRESQL_HOST', itu mungkin berarti bahwa variabel lingkungan hilang. Anda mungkin telah menghapus pengaturan aplikasi.

Saya mendapatkan kesalahan saat menjalankan migrasi database

Jika Anda mengalami kesalahan yang terkait dengan menyambungkan ke database, periksa apakah pengaturan aplikasi (AZURE_POSTGRESQL_USER, , AZURE_POSTGRESQL_PASSWORDAZURE_POSTGRESQL_HOST, dan AZURE_POSTGRESQL_NAME) diubah atau dihapus. Tanpa string koneksi itu, perintah migrasi tidak dapat berkomunikasi dengan database.

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.
  • Server fleksibel PostgreSQL dibuat pada tingkatan burstable terendah Standard_B1ms, dengan ukuran penyimpanan minimum, yang skalanya dapat ditingkatkan atau diturunkan. Lihat Azure Database untuk harga PostgreSQL.
  • 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 PostgreSQL yang diamankan di belakang jaringan virtual dengan alat lain?

  • Untuk akses dasar dari alat baris perintah, Anda dapat menjalankan psql dari sesi SSH aplikasi.
  • Untuk terhubung dari alat desktop, komputer Anda harus berada dalam jaringan virtual. Misalnya, itu bisa menjadi komputer virtual Azure yang terhubung ke salah satu subnet, atau komputer di jaringan lokal yang memiliki koneksi VPN situs-ke-situs dengan jaringan virtual Azure.
  • Anda juga dapat mengintegrasikan Azure Cloud Shell dengan jaringan virtual.

Bagaimana cara kerja pengembangan aplikasi lokal dengan GitHub Actions?

Menggunakan file alur kerja yang dibuat secara otomatis dari App Service sebagai contoh, setiap git push memulai pembangunan dan peluncuran baru. Dari klon lokal repositori GitHub, Anda membuat pembaruan yang diinginkan dan mengunggahnya ke GitHub. Contohnya:

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

Bagaimana sampel Django dikonfigurasi untuk berjalan di Azure App Service?

Aplikasi sampel Django mengonfigurasi pengaturan dalam file azureproject/production.py sehingga dapat berjalan di Azure App Service. Perubahan ini umum dilakukan saat menerapkan Django ke lingkungan produksi, dan tidak khusus untuk App Service.

  • Django memvalidasi header HTTP_HOST dalam permintaan masuk. Kode sampel menggunakan WEBSITE_HOSTNAME variabel lingkungan di App Service untuk menambahkan nama domain aplikasi ke pengaturan ALLOWED_HOSTS Django.

    # Configure the domain name using the environment variable
    # that Azure automatically creates for us.
    ALLOWED_HOSTS = [os.environ['WEBSITE_HOSTNAME']] if 'WEBSITE_HOSTNAME' in os.environ else []
    
  • Django tidak mendukung penyajian file statis dalam produksi. Untuk tutorial ini, Anda menggunakan WhiteNoise untuk mengaktifkan penyajian file. Paket WhiteNoise sudah diinstal dengan requirements.txt, dan middleware-nya ditambahkan ke daftar.

    
    # WhiteNoise configuration
    MIDDLEWARE = [
        'django.middleware.security.SecurityMiddleware',
        # Add whitenoise middleware after the security middleware
        'whitenoise.middleware.WhiteNoiseMiddleware',
    

    Kemudian pengaturan file statis dikonfigurasi sesuai dengan dokumentasi Django.

    SESSION_ENGINE = "django.contrib.sessions.backends.cache"
    STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'
    

Untuk informasi selengkapnya, lihat Pengaturan produksi untuk aplikasi Django.

Bagaimana cara mengubah pengaturan aplikasi SECRET_KEY menjadi referensi Key Vault?

Dari langkah-langkah portal Microsoft Azure yang dijelaskan, Anda dapat mengubah SECRET_KEY ke referensi Key Vault dengan menjalankan perintah Azure CLI berikut di cloud shell:

# Change the following variables to match your environment
SUBSCRIPTION_ID=<subscription-id>
RESOURCE_GROUP=<resource-group-name>
KEY_VAULT_NAME=<key-vault-name>
APP_SERVICE_NAME=<app-name>
SECRET_NAME=djangoSecretKey

# Set the subscription ID
az account set --subscription $SUBSCRIPTION_ID

# Assign 'Key Vault Secrets Officer' role to your user at the scope of the key vault
az role assignment create \
  --assignee $(az ad signed-in-user show --query id -o tsv) \
  --role $(az role definition list --name "Key Vault Secrets Officer" --query "[].id" -o tsv) \
  --scope $(az keyvault show --name $KEY_VAULT_NAME --resource-group $RESOURCE_GROUP --query id --output tsv)

# Add the secret to the key vault
az keyvault secret set \
  --vault-name $KEY_VAULT_NAME \
  --name $SECRET_NAME \
  --value $(python -c 'import secrets; print(secrets.token_hex())')

# Add Key Vault reference to the App Service configuration
az webapp config appsettings set \
  --resource-group $RESOURCE_GROUP \
  --name $APP_SERVICE_NAME \
  --settings "SECRET_KEY=@Microsoft.KeyVault(SecretUri=https://$KEY_VAULT_NAME.vault.azure.net/secrets/$SECRET_NAME)"

Anda juga dapat melakukan hal yang sama di portal. Untuk informasi selengkapnya, lihat:

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 perintah python dengan menambahkan opsi -d. Terapkan dan dorong perubahan Anda untuk memicu penyebaran lain ke App Service.

Saya tidak memiliki izin untuk membuat identitas yang ditetapkan pengguna

Lihat Penyiapan penyebaran GitHub Actions dari Pusat Penyebaran.

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

Tampilan obrolan GitHub Copilot sudah ada untuk Anda saat Anda 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 menunjukkan di mana perubahan tersebut harus dilakukan, tetapi tidak diizinkan membuat perubahan bagi Anda. Terserah Anda untuk menambahkan perubahan yang disarankan dan mengujinya.

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

Atau, pelajari cara App Service menjalankan aplikasi Python: