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:
- Etkin aboneliği olan bir Azure hesabı. Ücretsiz bir hesap oluşturun.
- 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.
Uygulamayı yerel olarak çalıştırmak için:
Uygulama klasörüne gidin:
cd msdocs-python-flask-webapp-quickstart
Uygulama için bir sanal ortam oluşturun:
py -m venv .venv .venv\scripts\activate
Bağımlılıkları yükleyin:
pip install -r requirements.txt
Uygulamayı çalıştırın:
flask run
Web tarayıcısında konumundaki
http://localhost:5000
örnek uygulamaya göz atın.
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 komutunuaz webapp list-runtimes --os linux --output table
kullanı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ölgelerinaz 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:
Varsayılan bir kaynak grubu oluşturun.
Varsayılan bir App Service planı oluşturun.
Belirtilen ada sahip bir uygulama oluşturun.
Zip, derleme otomasyonu etkinleştirilmiş olarak geçerli çalışma dizinindeki tüm dosyaları dağıtın.
Parametreleri yerel olarak .azure/config dosyasında önbelleğe alın, böylece daha sonra proje klasöründeki veya diğer
az webapp
komutlarlaaz webapp up
dağıtırken bunları yeniden belirtmeniz gerekmez. Önbelleğe alınan değerler varsayılan olarak otomatik olarak kullanılır.
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.
- VS Code kullanarak dağıtma
- Azure CLI’yi kullanarak dağıtma
- Yerel Git kullanarak dağıtma
- ZIP dosyası kullanarak dağıtma
Ö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.net
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'de bir Linux kapsayıcısı çalıştırıyor.
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.