Hızlı Başlangıç: Azure App Service için Python (Django veya Flask) web uygulaması dağıtma

Bu hızlı başlangıçta, Azure App Service için bir Python web uygulaması (Django veya Flask) dağıtacaksınız. Azure App Service, Linux sunucu ortamında barındırılan Python 3.7 ve üzeri uygulamaları destekleyen, tam olarak yönetilen bir web barındırma hizmetidir.

Bu hızlı başlangıcı tamamlamak için aşağıdakilere ihtiyacınız vardır:

  1. Etkin aboneliği olan bir Azure hesabı. Ücretsiz bir hesap oluşturun.
  2. Python 3.9 veya üzeri yerel olarak yüklenir.

Not: Bu makale, Azure App Service kullanarak python web uygulaması dağıtmaya yönelik güncel yönergeleri içerir. Windows üzerinde Python artık desteklenmiyor.

1 - Örnek uygulama

Bu hızlı başlangıç Flask veya Django kullanılarak tamamlanabilir. Bu hızlı başlangıcı izlemenize yardımcı olmak için her çerçevede örnek bir uygulama sağlanır. Örnek uygulamayı yerel iş istasyonunuza indirin veya kopyalayın.

git clone https://github.com/Azure-Samples/msdocs-python-flask-webapp-quickstart

Uygulamayı yerel olarak çalıştırmak için:

  1. Uygulama klasörüne gidin:

    cd msdocs-python-flask-webapp-quickstart
    
  2. Uygulama için bir sanal ortam oluşturun:

    py -m venv .venv
    .venv\scripts\activate
    
  3. Bağımlılıkları yükleyin:

    pip install -r requirements.txt
    
  4. Uygulamayı çalıştırın:

    flask run
    
  5. Web tarayıcısında konumundaki http://localhost:5000 örnek uygulamaya göz atın.

    Tarayıcıda yerel olarak çalışan Flask uygulamasının ekran görüntüsü

Sorun mu yaşıyorsunuz? Bize bildirin.

2 - Azure'da web uygulaması oluşturma

Uygulamanızı Azure'da barındırmak için Azure'da Azure App Service web uygulaması oluşturmanız gerekir. Azure portal, VS Code, Azure Araçları uzantı paketi veya Azure CLI kullanarak bir web uygulaması oluşturabilirsiniz.

Azure CLI komutları, Azure CLI yüklü bir bilgisayarda çalıştırılabilir.

Azure CLI,gerekli kaynakları oluşturacak ve uygulamanızı tek bir adımda dağıtacak bir komuta az webapp up sahiptir.

Gerekirse az login kullanarak Azure'da oturum açın.

az login

Web uygulamasını ve diğer kaynakları oluşturun, ardından az webapp up kullanarak kodunuzu Azure'a dağıtın.

az webapp up --runtime PYTHON:3.9 --sku B1 --logs
  • --runtime parametresi, uygulamanızın hangi Python sürümünü çalıştırdığını belirtir. Bu örnekte Python 3.9 kullanılır. Kullanılabilir tüm çalışma zamanlarını listelemek için komutunu az webapp list-runtimes --os linux --output tablekullanın.
  • parametresi app --sku service planının boyutunu (CPU, bellek) ve maliyetini tanımlar. Bu örnek, Azure aboneliğinizde küçük bir maliyete neden olacak B1 (Temel) hizmet planını kullanır. App Service planlarının tam listesi için App Service fiyatlandırma sayfasını görüntüleyin.
  • bayrağı, --logs web uygulamasını başlattıktan hemen sonra günlük akışını görüntülemeyi etkinleştirmek için gereken varsayılan günlüğü yapılandırıyor.
  • İsteğe bağlı olarak bağımsız değişkeniyle --name <app-name>bir ad belirtebilirsiniz. Sağlamazsanız otomatik olarak bir ad oluşturulur.
  • İsteğe bağlı olarak bağımsız değişkeni --location <location-name> kullanılabilir bir Azure bölgesi olduğunda <location_name> ekleyebilirsiniz. komutunu çalıştırarak Azure hesabınız için izin verilebilen bölgelerin az account list-locations listesini alabilirsiniz.

Komutun tamamlanması birkaç dakika sürebilir. Komut çalışırken kaynak grubunu, App Service planını ve uygulama kaynağını oluşturma, günlüğe kaydetmeyi yapılandırma ve ZIP dağıtımı yapma hakkında iletiler sağlar. Ardından uygulamanın Azure'daki URL'si olan "Uygulamayı http://< app-name.azurewebsites.net> adresinde başlatabilirsiniz" iletisini verir.

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>"
}

Not

az webapp up komutu şu eylemleri gerçekleştirir:

Sorun mu yaşıyorsunuz? Bize bildirin.

3 - Uygulama kodunuzu Azure'a dağıtma

Azure Uygulaması hizmeti, uygulama kodunuzu Azure'a dağıtmak için GitHub Actions desteği ve tüm önemli CI/CD araçları dahil olmak üzere birden çok yöntemi destekler. Bu makalede kodunuzu yerel iş istasyonunuzdan Azure'a dağıtma konusuna odaklanılır.

Önceki adım gerekli kaynakları oluşturduğundan ve uygulamanızı tek bir adımda dağıttıktan sonra 4 ' e geçebilirsiniz - Uygulamaya göz atın.


Sorun mu yaşıyorsunuz? Sorun giderme kılavuzuna bakın, aksi takdirde bize bildirin.

4 - Uygulamaya göz atın

URL'sindeki http://<app-name>.azurewebsites.netweb tarayıcınızda dağıtılan uygulamaya göz atın. Varsayılan bir uygulama sayfası görürseniz, bir dakika bekleyin ve tarayıcıyı yenileyin.

Python örnek kodu, yerleşik bir görüntü kullanarak App Service'de bir Linux kapsayıcısı çalıştırıyor.

Azure'da çalışan uygulamanın ekran görüntüsü

Tebrikler! Python uygulamanızı App Service dağıttınız.

Sorun mu yaşıyorsunuz? Sorun giderme kılavuzuna bakın, aksi takdirde bize bildirin.

5 - Akış günlükleri

Azure App Service, uygulamanızla ilgili sorunları tanılamanıza yardımcı olmak için konsola gönderilen tüm iletileri yakalar. Örnek uygulamalar, bu özelliği göstermek için deyimler içerir print() .

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

App Service tanılama günlüklerinin içeriği Azure portal, VS Code'da veya Azure CLI kullanılarak gözden geçirilebilir.

İlk olarak, az webapp log config komutunu kullanarak günlükleri App Service dosya sistemine aktarmak için Azure App Service yapılandırmanız gerekir.

az webapp log config \
    --web-server-logging filesystem \
    --name $APP_SERVICE_NAME \
    --resource-group $RESOURCE_GROUP_NAME

Günlükleri akışla aktarmak için az webapp log tail komutunu kullanın.

az webapp log tail \
    --name $APP_SERVICE_NAME \
    --resource-group $RESOURCE_GROUP_NAME

Uygulamadaki giriş sayfasını yenileyin veya bazı günlük iletileri oluşturmak için diğer istekleri deneme. Çıktı aşağıdakine benzer görünmelidir.

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"

Sorun mu yaşıyorsunuz? Sorun giderme kılavuzuna bakın, aksi takdirde bize bildirin.

Kaynakları temizleme

Örnek uygulamayla işiniz bittiğinde, uygulamanın tüm kaynaklarını Azure'dan kaldırabilirsiniz. Ek ücret uygulanmaz ve Azure aboneliğinizi düzenli tutmaz. Kaynak grubunu kaldırmak, kaynak grubundaki tüm kaynakları da kaldırır ve uygulamanız için tüm Azure kaynaklarını kaldırmanın en hızlı yoludur.

az group delete komutunu kullanarak kaynak grubunu silin .

az group delete \
    --name msdocs-python-webapp-quickstart \
    --no-wait

--no-wait bağımsız değişkeni, işlemin tamamlanmasından önce komutun döndürülmesini sağlar.

Sorun mu yaşıyorsunuz? Bize bildirin.

Sonraki adımlar