Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Catatan
Dalam tutorial ini, Anda menggunakan Konektor Layanan untuk menyambungkan aplikasi web ke layanan database. Tutorial ini adalah modifikasi tutorial App Service, sehingga Anda mungkin melihat beberapa kesamaan. Lihat bagian Membuat konektor tanpa kata sandi ke database Postgres untuk melihat di mana Konektor Layanan bermain dan menyederhanakan proses koneksi yang diberikan dalam tutorial App Service.
Tutorial ini menunjukkan cara menyebarkan aplikasi web Python Django berbasis data ke Azure App Service dan menyambungkannya ke database server Fleksibel Azure Database for PostgreSQL.
Di tutorial ini, Anda menggunakan Azure CLI untuk menyelesaikan tugas berikut:
- Menyiapkan lingkungan awal Anda dengan Python dan Azure CLI
- Buat basis data Azure Database untuk PostgreSQL - Server Fleksibel.
- Menyebarkan kode ke Azure App Service dan menyambungkan ke Server Fleksibel PostgreSQL
- Memperbarui kode dan menyebarkan ulang
- Menampilkan log diagnostik
- Mengelola aplikasi di portal Microsoft Azure
Menyiapkan lingkungan awal Anda
Luncurkan dari Azure Cloud Shell di Portal Microsoft Azure dan instal ekstensi tanpa kata sandi konektor layanan untuk Azure CLI.
az extension add --name serviceconnector-passwordless --upgrade
Klon atau unduh aplikasi sampel
Kloning repositori sampel:
git clone https://github.com/Azure-Samples/serviceconnector-webapp-postgresql-django-passwordless.git
Navigasikan ke folder berikut:
cd serviceconnector-webapp-postgresql-django-passwordless
Dalam tutorial ini, Anda menyebarkan aplikasi web Django ke Azure App Service. Aplikasi web menggunakan identitas terkelola yang ditetapkan sistem (koneksi tanpa kata sandi) dengan kontrol akses berbasis peran Azure untuk mengakses Azure Storage dan Azure Database for PostgreSQL - sumber daya Server Fleksibel. Kode ini menggunakan kelas DefaultAzureCredential dari pustaka klien Azure Identity untuk Python. Kelas DefaultAzureCredential secara otomatis mendeteksi bahwa ada identitas terkelola terotomasi untuk App Service dan menggunakannya untuk mengakses sumber daya Azure lainnya.
- Pengaturan produksi ada di file azuresite/production.py. Pengaturan pengembangan berada di azuresite/settings.py.
- Aplikasi ini menggunakan pengaturan produksi saat variabel lingkungan
WEBSITE_HOSTNAMEdiatur. Azure App Service secara otomatis mengatur variabel ini ke URL aplikasi web, sepertimsdocs-django.azurewebsites.net.
Pengaturan produksi khusus untuk konfigurasi Django agar berfungsi di lingkungan produksi apa pun dan tidak khusus untuk App Service. Informasi selengkapnya, lihat daftar periksa penyebaran Django. Lihat juga Pengaturan produksi untuk Django di Azure untuk detail tentang beberapa perubahan.
Mengalami masalah? Beri tahu kami.
Membuat database Postgres di Azure
Siapkan variabel lingkungan yang diperlukan untuk tutorial.
LOCATION="eastus" RAND_ID=$RANDOM RESOURCE_GROUP_NAME="msdocs-mi-web-app" APP_SERVICE_NAME="msdocs-mi-web-$RAND_ID" DB_SERVER_NAME="msdocs-mi-postgres-$RAND_ID" ADMIN_USER="demoadmin" ADMIN_PW="{your database password}"Penting
ADMIN_PWharus berisi 8 hingga 128 karakter dari tiga kategori berikut: huruf besar bahasa Inggris, huruf kecil bahasa Inggris, angka, dan karakter non-nufanumerik. Saat membuat nama pengguna atau kata sandi jangan menggunakan karakter$. Nantinya Anda membuat variabel lingkungan dengan nilai-nilai ini$di mana karakter memiliki arti tertentu dalam kontainer Linux yang digunakan untuk menjalankan aplikasi Python.Membuat grup sumber daya (Anda dapat mengubah nama, jika ingin). Nama grup sumber daya di-cache dan secara otomatis diterapkan ke perintah-perintah berikutnya.
az group create --name $RESOURCE_GROUP_NAME --location $LOCATIONBuat server database. Jika diminta untuk mengaktifkan akses ke alamat IP klien saat ini, ketik
yya. Proses ini membutuhkan waktu beberapa menit:az postgres flexible-server create \ --resource-group $RESOURCE_GROUP_NAME \ --name $DB_SERVER_NAME \ --location $LOCATION \ --admin-user $ADMIN_USER \ --admin-password $ADMIN_PW \ --sku-name Standard_D2ds_v4 --active-directory-auth EnabledJika perintah
aztidak dikenali, pastikan Anda telah menginstal Azure CLI seperti yang dijelaskan di Menyiapkan lingkungan awal Anda.Perintah az postgres flexible-server create melakukan tindakan berikut, yang memakan waktu beberapa menit:
- Buat grup sumber daya bawaan jika belum ada nama yang disimpan.
- Buat server Fleksibel PostgreSQL:
- Dengan nama server yang ditentukan oleh parameter
--name. Nama harus unik di semua layanan Azure. - Dengan sku yang ditentukan oleh parameter
--sku-name.
- Dengan nama server yang ditentukan oleh parameter
- Buat akun administrator dengan nama pengguna dan kata sandi yang ditentukan oleh parameter
--admin-userdan--admin-password. - Buat database yang namanya ditentukan dengan
--database-nameparameter .
Konfigurasikan aturan firewall di server Anda dengan perintah az postgres flexible-server firewall-rule create . Aturan ini memungkinkan akses lingkungan lokal Anda ke server. (Jika Anda diminta untuk mengaktifkan akses dari alamat IP klien Anda di langkah sebelumnya, Anda dapat melewati langkah ini.)
IP_ADDRESS=<your IP> az postgres flexible-server firewall-rule create \ --resource-group $RESOURCE_GROUP_NAME \ --name $DB_SERVER_NAME \ --rule-name AllowMyIP \ --start-ip-address $IP_ADDRESS \ --end-ip-address $IP_ADDRESSGunakan alat atau situs web apa pun yang menunjukkan alamat IP Anda untuk menggantikan
<your IP>dalam perintah. Misalnya, Anda dapat menggunakan situs web Apa Alamat IP Saya? .Buat database bernama
restaurantmenggunakan perintah az postgres flexible-server execute .az postgres flexible-server execute \ --name $DB_SERVER_NAME \ --admin-user $ADMIN_USER \ --admin-password $ADMIN_PW \ --database-name postgres \ --querytext 'create database restaurant;'
Sebarkan aplikasi ke Azure App Service
Di bagian ini, Anda membuat host aplikasi di aplikasi Azure App Service, sambungkan aplikasi ini ke database Postgres, kemudian sebarkan kode Anda ke host tersebut.
Buat aplikasi App Service
Di terminal, pastikan Anda berada di folder repositori serviceconnector-webapp-postgresql-django-passwordless yang berisi kode aplikasi.
Jalankan perintah
az webapp upberikut untuk membuat host Azure App Service untuk aplikasi:az webapp up \ --resource-group $RESOURCE_GROUP_NAME \ --location $LOCATION \ --name $APP_SERVICE_NAME \ --runtime PYTHON:3.9 \ --sku B1Sku menentukan ukuran (CPU, memori) dan biaya paket App Service. Paket layanan B1 (Dasar) dikenakan biaya kecil dalam langganan Azure Anda. Untuk daftar lengkap paket App Service, lihat halaman harga App Service.
Perintah ini melakukan tindakan berikut, yang mungkin memakan waktu beberapa menit, menggunakan grup sumber daya dan lokasi yang ditembolok dari perintah
az group createsebelumnya (grup$RESOURCE_GROUP_NAMEdi wilayaheastusdalam contoh ini).- Buat Paket App Service di tingkat harga Basic (B1). Anda dapat menghilangkan
--skuuntuk menggunakan nilai default. - Buat aplikasi Azure App Service.
- Mengaktifkan pengelogan default untuk aplikasi.
- Unggah repositori menggunakan penyebaran ZIP dengan otomatisasi build yang diaktifkan.
- Buat Paket App Service di tingkat harga Basic (B1). Anda dapat menghilangkan
Konfigurasikan App Service untuk menggunakan start.sh dalam repositori dengan perintah az webapp config set.
az webapp config set \ --resource-group $RESOURCE_GROUP_NAME \ --name $APP_SERVICE_NAME \ --startup-file "start.sh"
Membuat konektor tanpa kata sandi ke database Postgres
Dengan kode yang sekarang disebarkan ke Azure App Service, langkah selanjutnya adalah menyambungkan aplikasi ke database Postgres di Azure. Kode aplikasi mengharapkan untuk menemukan informasi database dalam variabel lingkungan bernama AZURE_POSTGRESQL_CONNECTIONSTRING untuk server fleksibel PostgreSQL dan variabel lingkungan bernama AZURE_STORAGEBLOB_RESOURCEENDPOINT untuk akun Azure Storage.
Perintah Konektor Layanan mengonfigurasi sumber daya Azure Storage dan Azure Database for PostgreSQL untuk menggunakan identitas terkelola dan kontrol akses berbasis peran Azure. Perintah membuat pengaturan aplikasi di App Service yang menghubungkan aplikasi web Anda ke sumber daya ini. Output dari perintah mencantumkan tindakan konektor layanan yang dilakukan untuk mengaktifkan fitur tanpa kata sandi.
Tambahkan konektor layanan PostgreSQL menggunakan perintah az webapp connection create postgres-flexible. Identitas terkelola yang ditetapkan sistem digunakan untuk mengautentikasi aplikasi web ke sumber daya target, PostgreSQL dalam hal ini.
az webapp connection create postgres-flexible \
--resource-group $RESOURCE_GROUP_NAME \
--name $APP_SERVICE_NAME \
--target-resource-group $RESOURCE_GROUP_NAME \
--server $DB_SERVER_NAME \
--database restaurant \
--client-type python \
--system-identity
Catatan
Jika Anda melihat pesan kesalahan "Langganan tidak terdaftar untuk menggunakan Microsoft.ServiceLinker", silakan jalankan az provider register -n Microsoft.ServiceLinker untuk mendaftarkan penyedia sumber daya Konektor Layanan dan jalankan perintah koneksi lagi.
Di kode Python Anda,akses pengaturan ini sebagai variabel lingkungan dengan pernyataan seperti os.environ.get('AZURE_POSTGRESQL_HOST'). Iinformasi selengkapnya, lihat Akses variabel lingkungan.
Mengalami masalah? Rujuk terlebih dahulu ke Panduan pemecahan masalah, jika tidak, beri tahu kami.
Membuat akun penyimpanan dan menyambungkannya
- Gunakan perintah az webapp connection create storage-blob untuk membuat akun penyimpanan dan membuat konektor layanan yang melakukan konfigurasi berikut:
Mengaktifkan identitas terkelola yang ditetapkan sistem pada aplikasi web
Menambahkan aplikasi web dengan peran Storage Blob Data Contributor ke akun penyimpanan yang baru dibuat.
Konfigurasikan jaringan akun penyimpanan untuk menerima akses dari aplikasi web.
STORAGE_ACCOUNT_URL=$(az webapp connection create storage-blob \ --new true \ --resource-group $RESOURCE_GROUP_NAME \ --name $APP_SERVICE_NAME \ --target-resource-group $RESOURCE_GROUP_NAME \ --client-type python \ --system-identity \ --query configurations[].value \ --output tsv) STORAGE_ACCOUNT_NAME=$(cut -d . -f1 <<< $(cut -d / -f3 <<< $STORAGE_ACCOUNT_URL))
Perbarui akun penyimpanan untuk mengizinkan akses publik blob bagi pengguna aplikasi restoran untuk mengakses gambar.
az storage account update \ --name $STORAGE_ACCOUNT_NAME \ --allow-blob-public-accessBuat kontainer yang disebut
photosdi akun penyimpanan dengan perintah az storage container create . Izinkan akses baca anonim (publik) ke blob di kontainer yang baru dibuat.# Set the BLOB_ENDPOINT variable BLOB_ENDPOINT=$(az storage account show --name $STORAGE_ACCOUNT_NAME --query "primaryEndpoints.blob" | sed 's/"//g') echo $BLOB_ENDPOINT # Create the storage container using the BLOB_ENDPOINT variable az storage container create \ --account-name $STORAGE_ACCOUNT_NAME \ --name photos \ --public-access blob \ --auth-mode login \ --blob-endpoint $BLOB_ENDPOINT
Menguji aplikasi web Python di Azure
Contoh aplikasi Python menggunakan paket azure.identity dan kelasnya DefaultAzureCredential . Saat aplikasi berjalan di Azure, DefaultAzureCredential secara otomatis mendeteksi apakah identitas terkelola ada untuk App Service dan, jika demikian, menggunakannya untuk mengakses sumber daya Azure lainnya (penyimpanan dan PostgreSQL dalam hal ini). Tidak perlu menyediakan kunci penyimpanan, sertifikat, atau kredensial ke App Service untuk mengakses sumber daya ini.
Kunjungi aplikasi yang disebarkan di URL
http://$APP_SERVICE_NAME.azurewebsites.net.Diperlukan waktu satu atau dua menit agar aplikasi dapat dimulai. Jika Anda melihat halaman aplikasi default yang bukan halaman aplikasi sampel default, tunggu sebentar dan refresh browser.
Uji fungsionalitas aplikasi sampel dengan menambahkan restoran dan beberapa ulasan dengan foto untuk restoran. Informasi restoran dan ulasan disimpan di Azure Database for PostgreSQL dan foto disimpan di Azure Storage. Berikut adalah contoh cuplikan layar:
Membersihkan sumber daya
Jika Anda ingin menyimpan aplikasi atau melanjutkan ke lebih banyak tutorial, lewati ke Langkah berikutnya. Jika tidak, untuk menghindari biaya berkelanjutan, hapus grup sumber daya yang dibuat untuk tutorial ini.
az group delete --name $RESOURCE_GROUP_NAME --no-wait
Dengan menghapus grup sumber daya, Anda juga memutus dan menghapus semua sumber daya yang terkandung di dalamnya. Pastikan Anda tidak lagi membutuhkan sumber daya dalam grup sebelum menjalankan perintah.
Menghapus semua sumber daya bisa memakan waktu. Argumen --no-wait memungkinkan perintah untuk segera kembali.
Mengalami masalah? Beri tahu kami.