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

Dalam mulai cepat ini, Anda akan menyebarkan aplikasi web Python (Django atau Flask) 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.

1 - Aplikasi sampel

Mulai cepat ini dapat diselesaikan menggunakan Flask atau Django. 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.

    Screenshot of the Flask app running locally in a browser

Mengalami masalah? Beri tahu kami.

2 - Membuat aplikasi web di Azure

Untuk menghosting aplikasi 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 account 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.

3 - Menyebarkan kode aplikasi Anda ke Azure

Layanan Aplikasi Azure mendukung beberapa metode untuk menyebarkan kode aplikasi Anda ke Azure termasuk dukungan untuk Tindakan GitHub dan semua alat CI/CD utama. Artikel ini berfokus pada cara menyebarkan kode Anda dari stasiun kerja lokal Anda ke Azure.

Karena az webapp up perintah membuat sumber daya yang diperlukan dan menerapkan aplikasi Anda dalam satu langkah, Anda dapat melanjutkan ke 4 - Telusuri aplikasi.


Mengalami masalah? Rujuk terlebih dahulu ke Panduan pemecahan masalah, jika tidak, beri tahu kami.

4 - Menelusuri aplikasi

Lakukan penelusuran ke aplikasi yang disebarkan menggunakan browser web Anda di 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.

Screenshot of the app running in Azure

Selamat! Anda telah menyebarkan aplikasi Phyton Anda ke App Service.

Mengalami masalah? Rujuk terlebih dahulu ke Panduan pemecahan masalah, jika tidak, beri tahu kami.

5 - Mengalirkan log

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 = Flask(__name__)


@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')

Konten log diagnostik App Service dapat ditinjau menggunakan Azure CLI, VS Code, atau portal Azure.

Pertama, Anda perlu mengonfigurasi Azure App Service untuk mengeluarkan log ke sistem file Azure App Service 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

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? Rujuk terlebih dahulu ke Panduan pemecahan masalah, jika tidak, beri tahu kami.

Membersihkan sumber daya

Setelah selesai dengan aplikasi contoh, Anda dapat menghapus semua sumber daya untuk aplikasi dari Azure. Hal ini tidak akan dikenakan biaya tambahan dan membuat langganan Azure Anda tetap rapi. 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