Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu makalede, Azure App Service'te barındırılan bir Python web uygulaması için özel başlangıç dosyasının ne zaman ve nasıl yapılandıracağınızı öğreneceksiniz. Yerel geliştirme için başlangıç dosyası gerekli olmasa da, Azure App Service dağıtılan web uygulamanızı sağlarsanız başlangıç komutlarını kullanabilen bir Docker kapsayıcısı içinde çalıştırır.
Aşağıdaki durumlarda özel bir başlangıç dosyası gerekir:
Özel Gunicorn Bağımsız Değişkenleri: Gunicorn varsayılan web sunucusunu varsayılanlarının ötesindeki ek bağımsız değişkenlerle başlatmak istiyorsunuz.
--bind=0.0.0.0 --timeout 600Alternatif Çerçeveler veya Sunucular: Uygulamanız Flask veya Django dışında bir çerçeveyle oluşturulmuş veya Gunicorn yerine farklı bir web sunucusu kullanmak istiyorsunuz.
Standart Olmayan Flask Uygulama Yapısı: Ana kod dosyası app.py veya application.pydışında bir adla adlandırılmış bir Flask uygulamanız var veya uygulama nesnesi dışındabir
appadla adlandırılıyor.
Başka bir deyişle, projenizin kök klasöründe adlı flask uygulama nesnesine sahip bir app.py veya app dosyası yoksa özel bir başlangıç komutuna ihtiyacınız vardır.
Daha fazla bilgi için bkz . Python Uygulamalarını Yapılandırma - Kapsayıcı başlatma işlemi.
Önkoşullar
Özel başlangıç dosyasını yapılandırmadan önce, Python çalıştıran mevcut bir Linux üzerinde App Service gerekir. Bir App Service oluşturmak için App Service için Python hızlı başlangıç kılavuzunu izleyin. App Service'i oluşturmak için Azure CLI de kullanabilirsiniz:
az webapp create --resource-group <group> --plan <plan> --name <app-name> --runtime "PYTHON:3.12"
Başlangıç dosyası oluşturma
Özel bir başlangıç dosyasına ihtiyacınız olduğunda aşağıdaki adımları kullanın:
Projenizde startup.txt, startup.sh adlı bir dosya veya başlangıç komutlarınızı içeren başka bir ad oluşturun. Django, Flask ve diğer çerçevelerle ilgili ayrıntılar için bu makalenin sonraki bölümlerine bakın.
Başlangıç dosyası gerekirse birden çok komut içerebilir.
Dosyanın uygulamanın geri kalanıyla dağıtılabilmesi için dosyayı kod deponuza kaydedin.
Visual Studio Code'da Etkinlik Çubuğu'nda Azure simgesini seçin, KAYNAKLAR'ı genişletin, aboneliğinizi bulun ve genişletin, App Services'i genişletin, App Service'e sağ tıklayın ve Portalda Aç'ı seçin.
Azure portalında, soldaki hizmet menüsünden Ayarlar>Yapılandırması'nı seçin. App Service'in Yapılandırma sayfasında Genel ayarlar'ı seçin, Başlangıç dosyanızın adını ( startup.txt veya startup.sh gibi) Yığın ayarları>Başlangıç Komutu'nun altına girin ve kaydet'i seçin.
Alternatif olarak, başlangıç komutunu ayarlamak için Azure CLI kullanabilirsiniz:
az webapp config set --resource-group <group> --name <app-name> --startup-file "<startup-command>"Uyarı
Başlangıç komut dosyası kullanmak yerine, başlangıç komutunun kendisini doğrudan Azure portalındaki Başlangıç Komutu alanına yerleştirebilirsiniz. Yapılandırmanızı deponuzda depoladığı için bir başlangıç komut dosyası kullanmanız önerilir. Bu, sürüm denetiminin değişiklikleri izlemesini sağlar ve diğer Azure App Service örneklerine yeniden dağıtmayı kolaylaştırır.
App Service'i yeniden başlatmanız istendiğinde Devam'ı seçin.
Uygulama kodunuzu dağıtmadan önce Azure App Service sitenize erişiyorsanız, isteği işlemek için kullanılabilir kod olmadığından "Uygulama Hatası" görüntülenir.
Django başlangıç komutları
Varsayılan olarak, Azure App Service wsgi.py dosyanızı içeren klasörü bulur ve Gunicorn'u aşağıdaki komutla başlatır:
# <module> is the folder that contains wsgi.py. If you need to use a subfolder,
# specify the parent of <module> using --chdir.
gunicorn --bind=0.0.0.0 --timeout 600 <module>.wsgi
Zaman aşımı değerini 1.200 saniyeye (--timeout 1200 ) çıkarmak gibi herhangi bir Gunicorn bağımsız değişkenini değiştirmek istiyorsanız, özel bir başlangıç komut dosyası oluşturun. Bu yöntem, varsayılan ayarları özel gereksinimlerinizle geçersiz kılar. Daha fazla bilgi için bkz . Kapsayıcı başlatma işlemi - Django uygulaması.
Flask başlangıç komutları
Varsayılan olarak, Linux üzerinde App Service Flask uygulamanızın aşağıdaki ölçütleri karşıladığını varsayar:
- WSGI çağrılabilen adıdır
app. - Uygulama kodu, application.py veya app.py adlı bir dosyada bulunur.
- Uygulama dosyası, uygulamanın kök klasöründe bulunur.
Projeniz bu yapıdan farklıysa, özel başlangıç komutunuz uygulama nesnesinin konumunu file:app_object biçiminde tanımlamalıdır:
Farklı dosya adı ve/veya uygulama nesnesi adı: Uygulamanın ana kod dosyası hello.py ve uygulama nesnesi olarak adlandırılırsa
myapp, başlangıç komutu aşağıdaki gibidir:gunicorn --bind=0.0.0.0 --timeout 600 hello:myappBaşlangıç dosyası bir alt klasörde: Başlangıç dosyasımyapp/website.py ve uygulama nesnesi ise
appklasörü belirtmek için Gunicorn'un--chdirbağımsız değişkenini kullanın ve başlangıç dosyasını ve uygulama nesnesini her zamanki gibi adlandırın:gunicorn --bind=0.0.0.0 --timeout 600 --chdir myapp website:appBaşlangıç dosyası bir modülün içindedir: python-sample-vscode-flask-tutorial kodunda, webapp.py başlangıç dosyası __init__.py dosyası içeren bir modül olan klasör hello_app içinde yer alır. Uygulama nesnesi adlandırılır
appve __init__.py içinde tanımlanır. webapp.py göreli içeri aktarma kullanır.Bu düzenleme nedeniyle, Gunicorn üzerinde
webapp:appişaret etmek, "Paket dışı göreli içeri aktarma girişimi" hatasını verir ve uygulama başlatılamaz.Bu durumda, uygulama nesnesini modülden içeri aktaran bir dolgu dosyası oluşturun ve gunicorn'un dolguyu kullanarak uygulamayı başlatmasını sağlayın. Örneğin python-sample-vscode-flask-tutorial kodu aşağıdaki içeriklere sahip startup.py içerir:
from hello_app.webapp import appBaşlangıç komutu şu şekildedir:
gunicorn --bind=0.0.0.0 --workers=4 startup:app
Daha fazla bilgi için bkz . Kapsayıcı başlatma işlemi - Flask uygulaması.
Diğer çerçeveler ve web sunucuları
Python uygulamalarını çalıştıran App Service kapsayıcısı, Gunicorn web sunucusuyla birlikte varsayılan olarak Django ve Flask yüklüdür.
Django veya Flask dışında bir çerçeve ( Falcon, FastAPI ve diğerleri gibi) veya farklı bir web sunucusu kullanmak için:
çerçevesini ve web sunucusunurequirements.txtdosyanıza ekleyin.
Başlangıç komutunuzda , Flask'in önceki bölümünde açıklandığı gibi çağrılabilen WSGI'yi belirleyin.
Gunicorn dışında bir web sunucusu başlatmak için sunucuyu doğrudan çağırmak yerine bir
python -mkomut kullanın. Örneğin aşağıdaki komut, WSGI çağrılabilen öğesinin adlandırıldığını veappiçinde bulunduğunu varsayarak uvicorn sunucusunu başlatır:python -m uvicorn application:app --host 0.0.0.0python -maracılığıyla yüklenen web sunucuları Python genel ortamına eklenmediğinden ve bu nedenle doğrudan çağrılamadığı için kullanırsınız.python -mkomutu, geçerli sanal ortamın içinden sunucuyu çağırır.
Uygulamanızı yayımlayın
Başlangıç dosyanızı yapılandırdıktan sonra uygulama kodunuzu App Service'e dağıtmanız gerekir. İstediğiniz Azure CLI veya dağıtım yöntemini kullanın:
az webapp up --name <app-name>
Daha fazla dağıtım seçeneği için bkz . Dağıtım için en iyi yöntemler.