Mulai cepat: Menyebarkan aplikasi web Python (Django, Flask, atau FastAPI) ke Azure App Service
Catatan
Mulai 1 Juni 2024, aplikasi App Service yang baru dibuat dapat menghasilkan nama host default unik yang menggunakan konvensi <app-name>-<random-hash>.<region>.azurewebsites.net
penamaan . Nama aplikasi yang ada tetap tidak berubah. Contohnya:
myapp-ds27dh7271aah175.westus-01.azurewebsites.net
Untuk informasi selengkapnya, lihat Nama Host Default Unik untuk Sumber Daya App Service.
Dalam mulai cepat ini, Anda menyebarkan aplikasi web Python (Django, Flask, atau FastAPI) ke Azure App Service. Azure App Service adalah layanan hosting web terkelola penuh yang mendukung aplikasi Python yang dihosting di lingkungan server Linux.
Untuk menyelesaikan mulai cepat ini, Anda memerlukan:
- Akun Azure dengan langganan aktif. Buat akun secara gratis.
- Python 3.9 atau lebih tinggi diinstal secara lokal.
Catatan
Artikel ini berisi instruksi saat ini tentang menyebarkan aplikasi web Python menggunakan Azure App Service. Python pada Windows tidak lagi didukung.
Aplikasi sampel
Mulai cepat ini dapat diselesaikan menggunakan Flask, Django, atau FastAPI. Aplikasi contoh di setiap kerangka kerja disediakan untuk membantu Anda mengikuti mulai cepat ini. Unduh atau klon aplikasi contoh ke stasiun kerja lokal Anda.
git clone https://github.com/Azure-Samples/msdocs-python-flask-webapp-quickstart
Untuk menjalankan aplikasi secara lokal:
Buka folder aplikasi:
cd msdocs-python-flask-webapp-quickstart
Buat lingkungan virtual untuk aplikasi:
py -m venv .venv .venv\scripts\activate
Pasang dependensi:
pip install -r requirements.txt
Jalankan aplikasi:
flask run
Jelajahi aplikasi contoh di
http://localhost:5000
dalam browser web.
Mengalami masalah? Beri tahu kami.
Membuat aplikasi web di Azure
Untuk menghosting aplikasi Anda di Azure, Anda perlu membuat aplikasi web Azure App Service di Azure. Anda dapat membuat aplikasi web menggunakan Azure CLI, VS Code, paket ekstensi Azure Tools, atau portal Azure.
Perintah Azure CLI dapat dijalankan di komputer yang telah memasang Azure CLI.
Azure CLI memiliki perintah az webapp up
yang akan membuat sumber daya yang diperlukan dan menyebarkan aplikasi Anda dalam satu langkah.
Jika perlu, masuk ke Azure menggunakan az login.
az login
Buat aplikasi web dan sumber daya lainnya, lalu sebarkan kode Anda ke Azure dengan menggunakan az webapp up.
az webapp up --runtime PYTHON:3.9 --sku B1 --logs
- Parameter
--runtime
menentukan versi Python apa yang sedang dijalankan aplikasi Anda. Contoh ini menggunakan Python 3.9. Untuk mencantumkan semua runtime yang tersedia, gunakan perintahaz webapp list-runtimes --os linux --output table
. - Parameter
--sku
menentukan ukuran (CPU, memori) dan biaya paket layanan aplikasi. Contoh ini menggunakan paket layanan B1 (Dasar), yang akan menimbulkan biaya kecil dalam langganan Azure Anda. Untuk daftar lengkap paket App Service, lihat halaman harga App Service. - Bendera
--logs
mengonfigurasi pengelogan default yang diperlukan untuk mengaktifkan tampilan aliran log segera setelah meluncurkan aplikasi web. - Secara opsional, Anda dapat menentukan nama dengan argumen
--name <app-name>
. Jika Anda tidak memberi nama, namanya akan dibuat secara otomatis. - Anda dapat secara opsional menyertakan argumen
--location <location-name>
di mana<location_name>
adalah wilayah Azure yang tersedia. Anda dapat mengambil daftar wilayah yang diizinkan untuk akun Azure Anda dengan menjalankan perintahaz appservice list-locations
.
Perintah ini mungkin perlu waktu beberapa menit untuk diselesaikan. Saat berjalan, perintah ini memberikan pesan mengenai pembuatan grup sumber daya, paket App Service dan sumber daya aplikasi, mengonfigurasi pengelogan, lalu melakukan penyebaran ZIP. Kemudian perintah memberikan pesan, "Anda dapat meluncurkan aplikasi di http:// <nama aplikasi>.azurewebsites.net", yang merupakan URL aplikasi di Azure.
The webapp '<app-name>' doesn't exist Creating Resource group '<group-name>' ... Resource group creation complete Creating AppServicePlan '<app-service-plan-name>' ... Creating webapp '<app-name>' ... Configuring default logging for the app, if not already enabled Creating zip with contents of dir /home/cephas/myExpressApp ... Getting scm site credentials for zip deployment Starting zip deployment. This operation can take a while to complete ... Deployment endpoint responded with status code 202 You can launch the app at http://<app-name>.azurewebsites.net { "URL": "http://<app-name>.azurewebsites.net", "appserviceplan": "<app-service-plan-name>", "location": "centralus", "name": "<app-name>", "os": "<os-type>", "resourcegroup": "<group-name>", "runtime_version": "python|3.9", "runtime_version_detected": "0.0", "sku": "FREE", "src_path": "<your-folder-location>" }
Catatan
Perintah az webapp up
melakukan tindakan berikut:
Membuat grup sumber daya default.
Membuat paket App Service default.
Membuat aplikasi dengan nama yang ditentukan.
Zip menyebarkan semua file dari direktori yang saat ini berjalan, dengan automasi build diaktifkan.
Cache parameter secara lokal di file .azure/config sehingga Anda tidak perlu menentukannya lagi saat menerapkan nanti dengan perintah
az webapp up
atauaz webapp
lainnya dari folder proyek. Nilai cache digunakan secara otomatis secara default.
Mengalami masalah? Beri tahu kami.
Menyebarkan kode aplikasi Anda ke Azure
Azure App Service mendukung beberapa metode untuk menyebarkan kode aplikasi Anda ke Azure, termasuk GitHub Actions dan semua alat CI/CD utama. Artikel ini berfokus pada cara menyebarkan kode Anda dari stasiun kerja lokal Anda ke Azure.
- Menyebarkan menggunakan Azure CLI
- Menyebarkan dengan menggunakan Visual Studio Code
- Menyebarkan menggunakan file ZIP
az webapp up
Karena perintah membuat sumber daya yang diperlukan dan menyebarkan aplikasi Anda dalam satu langkah, Anda dapat melanjutkan ke langkah berikutnya.
Mengalami masalah? Lihat terlebih dahulu panduan Pemecahan Masalah. Jika itu tidak membantu, beri tahu kami.
Mengonfigurasi skrip startup
Berdasarkan keberadaan file tertentu dalam penyebaran, App Service secara otomatis mendeteksi apakah aplikasi adalah aplikasi Django atau Flask dan melakukan langkah-langkah default untuk menjalankan aplikasi Anda. Untuk aplikasi berdasarkan kerangka kerja web lain seperti FastAPI, Anda perlu mengonfigurasi skrip startup untuk App Service guna menjalankan aplikasi Anda; jika tidak, App Service menjalankan aplikasi baca-saja default yang terletak di folder opt/defaultsite .
Untuk mempelajari selengkapnya tentang cara App Service menjalankan aplikasi Python dan bagaimana Anda dapat mengonfigurasi dan menyesuaikan perilakunya dengan aplikasi Anda, lihat Mengonfigurasi aplikasi Linux Python untuk Azure App Service.
App Service secara otomatis mendeteksi keberadaan aplikasi Flask. Tidak diperlukan konfigurasi tambahan untuk mulai cepat ini.
Menelusuri aplikasi
Telusuri ke aplikasi yang disebarkan di browser web Anda dengan menggunakan URL http://<app-name>.azurewebsites.net
. Jika Anda melihat halaman aplikasi default, tunggu sebentar dan refresh browser.
Kode sampel Python menjalankan kontainer Linux di App Service menggunakan citra bawaan.
Selamat! Anda telah menyebarkan aplikasi Phyton Anda ke App Service.
Mengalami masalah? Lihat terlebih dahulu panduan Pemecahan Masalah. Jika itu tidak membantu, beri tahu kami.
Log aliran
Azure App Service mengambil semua output pesan ke konsol untuk membantu Anda mendiagnosis masalah dengan aplikasi Anda. Aplikasi contoh menyertakan pernyataan print()
untuk menunjukkan kemampuan ini.
@app.route('/')
def index():
print('Request for index page received')
return render_template('index.html')
@app.route('/favicon.ico')
def favicon():
return send_from_directory(os.path.join(app.root_path, 'static'),
'favicon.ico', mimetype='image/vnd.microsoft.icon')
@app.route('/hello', methods=['POST'])
def hello():
name = request.form.get('name')
if name:
print('Request for hello page received with name=%s' % name)
return render_template('hello.html', name = name)
else:
print('Request for hello page received with no name or blank name -- redirecting')
return redirect(url_for('index'))
Anda dapat meninjau konten log diagnostik App Service dengan menggunakan Azure CLI, VS Code, atau portal Azure.
Pertama, Anda perlu mengonfigurasi Azure App Service untuk menghasilkan log ke sistem file App Service dengan menggunakan perintah konfigurasi log az webapp.
az webapp log config \
--web-server-logging filesystem \
--name $APP_SERVICE_NAME \
--resource-group $RESOURCE_GROUP_NAME
Untuk mengalirkan log, gunakan perintah az webapp log tail.
az webapp log tail \
--name $APP_SERVICE_NAME \
--resource-group $RESOURCE_GROUP_NAME
Refresh beranda di aplikasi atau coba permintaan lainnya untuk menghasilkan beberapa pesan log. Hasilnya akan terlihat seperti berikut.
Starting Live Log Stream ---
2021-12-23T02:15:52.740703322Z Request for index page received
2021-12-23T02:15:52.740740222Z 169.254.130.1 - - [23/Dec/2021:02:15:52 +0000] "GET / HTTP/1.1" 200 1360 "https://msdocs-python-webapp-quickstart-123.azurewebsites.net/hello" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:95.0) Gecko/20100101 Firefox/95.0"
2021-12-23T02:15:52.841043070Z 169.254.130.1 - - [23/Dec/2021:02:15:52 +0000] "GET /static/bootstrap/css/bootstrap.min.css HTTP/1.1" 200 0 "https://msdocs-python-webapp-quickstart-123.azurewebsites.net/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:95.0) Gecko/20100101 Firefox/95.0"
2021-12-23T02:15:52.884541951Z 169.254.130.1 - - [23/Dec/2021:02:15:52 +0000] "GET /static/images/azure-icon.svg HTTP/1.1" 200 0 "https://msdocs-python-webapp-quickstart-123.azurewebsites.net/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:95.0) Gecko/20100101 Firefox/95.0"
2021-12-23T02:15:53.043211176Z 169.254.130.1 - - [23/Dec/2021:02:15:53 +0000] "GET /favicon.ico HTTP/1.1" 404 232 "https://msdocs-python-webapp-quickstart-123.azurewebsites.net/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:95.0) Gecko/20100101 Firefox/95.0"
2021-12-23T02:16:01.304306845Z Request for hello page received with name=David
2021-12-23T02:16:01.304335945Z 169.254.130.1 - - [23/Dec/2021:02:16:01 +0000] "POST /hello HTTP/1.1" 200 695 "https://msdocs-python-webapp-quickstart-123.azurewebsites.net/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:95.0) Gecko/20100101 Firefox/95.0"
2021-12-23T02:16:01.398399251Z 169.254.130.1 - - [23/Dec/2021:02:16:01 +0000] "GET /static/bootstrap/css/bootstrap.min.css HTTP/1.1" 304 0 "https://msdocs-python-webapp-quickstart-123.azurewebsites.net/hello" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:95.0) Gecko/20100101 Firefox/95.0"
2021-12-23T02:16:01.430740060Z 169.254.130.1 - - [23/Dec/2021:02:16:01 +0000] "GET /static/images/azure-icon.svg HTTP/1.1" 304 0 "https://msdocs-python-webapp-quickstart-123.azurewebsites.net/hello" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:95.0) Gecko/20100101 Firefox/95.0"
Mengalami masalah? Lihat terlebih dahulu panduan Pemecahan Masalah. Jika itu tidak membantu, beri tahu kami.
Membersihkan sumber daya
Setelah selesai dengan aplikasi contoh, Anda dapat menghapus semua sumber daya untuk aplikasi dari Azure. Menghapus grup sumber daya memastikan bahwa Anda tidak dikenakan biaya tambahan dan membantu menjaga langganan Azure Anda tetap tidak berantakan. Menghapus grup sumber daya juga menghapus semua sumber daya dalam grup sumber daya dan merupakan cara tercepat untuk menghapus semua sumber daya Azure untuk aplikasi Anda.
Hapus grup sumber daya dengan menggunakan perintah az group delete.
az group delete \
--name msdocs-python-webapp-quickstart \
--no-wait
Argumen --no-wait
memungkinkan perintah untuk kembali sebelum operasi selesai.
Mengalami masalah? Beri tahu kami.