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 bir başlangıç dosyası gerekli olmasa da, Azure App Service dağıtılan web uygulamanızı sağlanan başlatma 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 dışında farklı bir web sunucusu kullanmak istiyorsunuz.
Standart Olmayan Flask Uygulama Yapısı: Ana kod dosyası app.py veya application.py* dışında bir adla adlandırılmış bir Flask uygulamanız var veya uygulama nesnesi
appbaşka bir adla adlandırılıyor.
Başka bir deyişle, projenizde adlı bir Flask uygulama nesnesi bulunan kök klasörde bir app.py veya app dosyası yoksa özel bir başlangıç komutu gerekir.
Daha fazla bilgi için bkz . Python Uygulamalarını Yapılandırma - Kapsayıcı başlatma işlemi.
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.
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, varsayılan ayarları belirli gereksinimlerinizle geçersiz kılmanıza olanak tanır. 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çütlere uyduğunu 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 ve 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 vb.) veya farklı bir web sunucusu kullanmak için:
Çerçeveyi ve/veya 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 -mkullanırsınız çünkü requirements.txtaracılığıyla yüklenen web sunucuları Python genel ortamına eklenmez ve bu nedenle doğrudan çağrılamaz.python -mkomutu, geçerli sanal ortamın içinden sunucuyu çağırır.