Mulai cepat: Menyebarkan aplikasi web Python (Django, Flask, atau FastAPI) ke Azure App Service

Dalam panduan cepat ini, Anda akan 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 panduan cepat ini, Anda memerlukan:

Catatan

Artikel ini berisi instruksi saat ini tentang menyebarkan aplikasi web Python menggunakan Azure App Service. Python pada Windows tidak lagi didukung.

Lewati ke akhir

Anda dapat dengan cepat menyebarkan aplikasi sampel dalam tutorial ini menggunakan Azure Developer CLI dan melihatnya berjalan di Azure. Cukup jalankan perintah berikut di Azure Cloud Shellinginkan, dan ikuti perintahnya:

mkdir flask-quickstart
cd flask-quickstart
azd init --template https://github.com/Azure-Samples/msdocs-python-flask-webapp-quickstart
azd up

Dan, untuk menghapus sumber daya:

azd down

Aplikasi sampel

Panduan cepat ini dapat diselesaikan menggunakan Flask, Django, atau FastAPI. Aplikasi contoh di setiap kerangka kerja disediakan untuk membantu Anda mengikuti panduan 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:

  1. Buka folder aplikasi:

    cd msdocs-python-flask-webapp-quickstart
    
  2. Buat lingkungan virtual untuk aplikasi:

    py -m venv .venv
    .venv\scripts\activate
    
  3. Pasang dependensi:

    pip install -r requirements.txt
    
  4. Jalankan aplikasi:

    flask run
    
  5. Jelajahi aplikasi contoh di http://localhost:5000 dalam browser web.

    Cuplikan layar aplikasi Flask berjalan secara lokal di browser.

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.

Buat sumber daya Azure, lalu terapkan aplikasi Anda dengan menggunakan perintah Azure CLI terpisah.

Jika perlu, masuk ke Azure menggunakan az login.

az login

Ganti <app-name> dengan nama yang unik secara global. Buat grup sumber daya dan rencana App Service, lalu buat aplikasi web menggunakan az webapp create.

az group create --name myResourceGroup --location eastus
az appservice plan create --name myAppServicePlan --resource-group myResourceGroup --sku P0v3 --is-linux
az webapp create --name <app-name> --resource-group myResourceGroup --plan myAppServicePlan --runtime "PYTHON:3.14"
az webapp config appsettings set --name <app-name> --resource-group myResourceGroup --settings SCM_DO_BUILD_DURING_DEPLOYMENT=true
  • Gunakan parameter --runtime untuk menentukan versi Python yang dijalankan aplikasi Anda. Contoh ini menggunakan Python 3.14. Untuk mencantumkan runtime Python yang didukung, gunakan az webapp list-runtimes --os-type linux --runtime python --output table.
  • Gunakan parameter --sku untuk menentukan ukuran (CPU dan memori) serta biaya paket App Service. Contoh ini menggunakan paket layanan P0v3 (Premium v3), yang menimbulkan biaya pada langganan Azure Anda. Untuk daftar lengkap paket App Service, lihat Harga App Service.
  • Ganti eastus dengan region pilihan Anda. Untuk menampilkan daftar wilayah yang tersedia, jalankan az account list-locations dengan --output table.
  • Pengaturan SCM_DO_BUILD_DURING_DEPLOYMENT ini mengaktifkan build Oryx, termasuk instalasi dependensi di requirements.txt, saat Anda menerapkan arsip sumber.

Buat file ZIP dengan file aplikasi, termasuk requirements.txt, di akar arsip. Kecualikan file lokal seperti .venv, .git, dan .env. Untuk instruksi khusus platform, lihat Buat file ZIP aplikasi Anda di tab Deploy using a ZIP file . Kemudian deploy arsip menggunakan az webapp deploy:

az webapp deploy --name <app-name> --resource-group myResourceGroup --src-path <zip-file-path> --type zip

Deployment bisa memakan waktu beberapa menit. Buka https://<app-name>.azurewebsites.net untuk melihat aplikasi Anda. Untuk streaming log, aktifkan dengan menjalankan az webapp log config --name <app-name> --resource-group myResourceGroup --docker-container-logging filesystem, lalu jalankan az webapp log tail --name <app-name> --resource-group myResourceGroup.

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.

Perintah Azure CLI pada langkah sebelumnya membuat sumber daya dan men-deploy aplikasi Anda. Anda bisa lanjut ke langkah berikutnya.


Mengalami masalah? Lihat terlebih dahulu panduan Pemecahan Masalah. Jika itu tidak membantu, beri tahu kami.

Mengonfigurasi skrip memulai

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 yang berbasis pada framework web lain seperti FastAPI, Anda mungkin perlu mengonfigurasi skrip startup agar App Service menjalankan aplikasi Anda. Jika tidak, App Service menjalankan aplikasi baca-saja bawaan yang terletak di folder opt/defaultsite.

  • Python 3.14 dan versi lebih baru: App Service secara otomatis mendeteksi dan menjalankan aplikasi FastAPI. Tidak diperlukan perintah startup.
  • Python 3.13 dan sebelumnya: Anda harus mengonfigurasi perintah startup khusus.

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 panduan memulai cepat ini.

Menelusuri ke aplikasi

Buka aplikasi yang telah di-deploy di browser web Anda. Anda dapat mengikuti tautan dari portal Microsoft Azure. Buka halaman Gambaran Umum dan pilih Domain Default. Jika Anda melihat halaman aplikasi default, tunggu sebentar dan refresh browser.

Kode sampel Python menjalankan kontainer Linux di App Service menggunakan citra bawaan.

Cuplikan layar dari aplikasi yang berjalan di Azure

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 az webapp log config.

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

Segarkan beranda dalam 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.

Langkah berikutnya