Bagikan melalui


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

Catatan

Mulai 1 Juni 2024, semua aplikasi App Service yang baru dibuat akan memiliki opsi untuk menghasilkan nama host default yang unik menggunakan konvensi <app-name>-<random-hash>.<region>.azurewebsites.netpenamaan . Nama aplikasi yang ada akan tetap tidak berubah.

Contoh: myapp-ds27dh7271aah175.westus-01.azurewebsites.net

Untuk detail lebih lanjut, 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:

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:

  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.

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 perintah az 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 perintah az 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:

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.

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.

Cuplikan layar aplikasi sampel 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 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.

Langkah berikutnya