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

Bu hızlı başlangıçta, Azure Uygulaması Hizmeti'ne bir Python web uygulaması (Django veya Flask) 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.

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 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.

    Screenshot of the Flask app running locally in a browser

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 Uygulaması Service 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 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, GitHub Actions desteği 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 4 - Uygulamaya gözat seçeneğine geçebilirsiniz.


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

4 - Uygulamaya göz atın

URL'sinde 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'te bir Linux kapsayıcısı çalıştırıyor.

Screenshot of the app running in Azure

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

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

5 - Akış günlükleri

Azure Uygulaması Hizmeti, 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 = 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')

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

İ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? 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 dağınık 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