Aracılığıyla paylaş


Hızlı Başlangıç: Azure Uygulaması Hizmetine Python (Django, Flask veya FastAPI) web uygulaması dağıtma

Not

1 Haziran 2024'den itibaren, yeni oluşturulan tüm App Service uygulamaları adlandırma kuralını <app-name>-<random-hash>.<region>.azurewebsites.netkullanarak benzersiz bir varsayılan ana bilgisayar adı oluşturma seçeneğine sahip olacaktır. Mevcut uygulama adları değişmeden kalır.

Örnek: myapp-ds27dh7271aah175.westus-01.azurewebsites.net

Diğer ayrıntılar için App Service Kaynağı için Benzersiz Varsayılan Ana Bilgisayar Adı'na bakın.

Bu hızlı başlangıçta, Azure Uygulaması Hizmeti'ne bir Python web uygulaması (Django, Flask veya FastAPI) dağıtacaksınız. Azure Uygulaması Hizmeti, Linux sunucu ortamında barındırılan Python uygulamalarını destekleyen tam olarak yönetilen bir web barındırma hizmetidir.

Bu hızlı başlangıcı tamamlamak için şunlar gerekir:

Not

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

Örnek uygulama

Bu hızlı başlangıç Flask, Django veya FastAPI 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 sanal ortam oluşturma:

    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.

Azure'da web uygulaması oluşturma

Uygulamanızı Azure'da barındırmak için Azure'da bir Azure Uygulaması Hizmeti web uygulaması oluşturmanız gerekir. Azure CLI, VS Code, Azure Araçları uzantı paketi veya Azure portalı 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, --sku app 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 olan yere <location_name> ekleyebilirsiniz. komutunu çalıştırarak Azure hesabınız için izin verilebilen bölgelerin az appservice 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.

Uygulama kodunuzu Azure'a dağıtma

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

az webapp up Komut gerekli kaynakları oluşturduğundan ve uygulamanızı tek bir adımda dağıttıktan sonra sonraki adıma geçebilirsiniz.


Sorun mu yaşıyorsunuz? Önce Sorun giderme kılavuzuna bakın. Bu işe yaramazsa bize bildirin.

Başlangıç betiğini yapılandırma

Bir dağıtımda belirli dosyaların bulunmasına bağlı olarak App Service, bir uygulamanın Django mu yoksa Flask uygulaması mı olduğunu otomatik olarak algılar ve uygulamanızı çalıştırmak için varsayılan adımları gerçekleştirir. FastAPI gibi diğer web çerçevelerini temel alan uygulamalar için App Service'in uygulamanızı çalıştırması için bir başlangıç betiği yapılandırmanız gerekir; aksi takdirde App Service, opt/defaultsite klasöründe bulunan varsayılan bir salt okunur uygulamayı çalıştırır.

App Service'in Python uygulamalarını nasıl çalıştırabileceği ve uygulamanızla davranışını nasıl yapılandırıp özelleştirebileceğiniz hakkında daha fazla bilgi edinmek için bkz. Azure Uygulaması Service için Linux Python uygulaması yapılandırma.

App Service bir Flask uygulamasının varlığını otomatik olarak algılar. Bu hızlı başlangıç için ek yapılandırma gerekmez.

Uygulamaya göz atma

URL'sini http://<app-name>.azurewebsites.netkullanarak web 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'te 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'e dağıttınız.

Sorun mu yaşıyorsunuz? Önce Sorun giderme kılavuzuna bakın. Bu işe yaramazsa bize bildirin.

Akış günlükleri

Azure Uygulaması Hizmeti, uygulamanızla ilgili sorunları tanılamanıza yardımcı olmak için konsola tüm ileti çıkışını 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)
       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'))

Azure CLI, VS Code veya Azure portalını kullanarak App Service tanılama günlüklerinin içeriğini gözden geçirebilirsiniz.

İlk olarak, az webapp log config komutunu kullanarak günlükleri App Service dosya sistemine çıkarmak için Azure Uygulaması Hizmeti'ni 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. Çıkış 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? Önce Sorun giderme kılavuzuna bakın. Bu işe yaramazsa bize bildirin.

Kaynakları temizleme

Örnek uygulamayla işiniz bittiğinde, uygulamanın tüm kaynaklarını Azure'dan kaldırabilirsiniz. Kaynak grubunu kaldırmak ek ücret ödememenizi sağlar ve Azure aboneliğinizin dağınık kalmasına yardımcı olur. 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