Aracılığıyla paylaş


Azure'da PostgreSQL ile Python (Django veya Flask) web uygulaması dağıtma

Bu öğreticide, PostgreSQL için Azure Veritabanı ilişkisel veritabanı hizmetiyle Azure Uygulaması Hizmeti'ne veri temelli bir Python web uygulaması (Django veya Flask) dağıtacaksınız. Azure Uygulaması Hizmeti destekler Linux sunucu ortamında Python.

Azure'da PostgreSQL veritabanı olan bir App Service'i gösteren mimari diyagramı.

Bu öğreticiyi tamamlamak için şunları yapmanız gerekir:

Sona atla

Azure Geliştirici CLI'sı yüklü olduğunda, bu öğreticide gösterilen tam olarak yapılandırılmış bir örnek uygulamayı dağıtabilir ve Azure'da çalıştığını görebilirsiniz. Yalnızca boş bir çalışma dizininde aşağıdaki komutları çalıştırılıyor:

azd auth login
azd init --template msdocs-flask-postgresql-sample-app
azd up

Örnek uygulama

Flask ve Django çerçevesini kullanan örnek Python uygulamaları, bu öğreticiyi izlemenize yardımcı olmak için sağlanır. Bunları yerel olarak çalıştırmadan dağıtmak için bu bölümü atlayın.

Uygulamayı yerel olarak çalıştırmak için Python 3.7 veya üzerini ve PostgreSQL'i yerel olarak yüklediğinizden emin olun. Ardından örnek deponun starter-no-infra dalını kopyalayın ve depo köküne geçin.

git clone -b starter-no-infra https://github.com/Azure-Samples/msdocs-flask-postgresql-sample-app
cd msdocs-flask-postgresql-sample-app

Kılavuz olarak .env.sample dosyasını kullanarak aşağıda gösterildiği gibi bir .env dosyası oluşturun. değerini DBNAME yerel PostgreSQL örneğinizdeki mevcut bir veritabanının adına ayarlayın. , DBUSERve DBPASS değerlerini DBHOSTyerel PostgreSQL örneğine uygun olarak ayarlayın.

DBNAME=<database name>
DBHOST=<database-hostname>
DBUSER=<db-user-name>
DBPASS=<db-password>

Uygulama için sanal ortam oluşturma:

py -m venv .venv
.venv\scripts\activate

Bağımlılıkları yükleyin:

pip install -r requirements.txt

Aşağıdaki komutlarla örnek uygulamayı çalıştırın:

# Run database migration
flask db upgrade
# Run the app at http://127.0.0.1:5000
flask run

1. App Service ve PostgreSQL oluşturma

Bu adımda Azure kaynaklarını oluşturursunuz. Bu öğreticide kullanılan adımlar, App Service ve PostgreSQL için Azure Veritabanı içeren varsayılan olarak güvenli bir kaynak kümesi oluşturur. Oluşturma işlemi için şunları belirteceksiniz:

  • Web uygulamasının Adı. Web uygulamanızın DNS adının bir parçası olarak biçiminde kullanılan addır https://<app-name>.azurewebsites.net.
  • Uygulamayı dünyada fiziksel olarak çalıştırılacak Bölge.
  • Uygulamanın Çalışma Zamanı yığını . Burası, uygulamanız için kullanılacak Python sürümünü seçtiğiniz yerdir.
  • Uygulama için Barındırma planı . Bu, uygulamanız için özellik kümesini ve ölçeklendirme kapasitesini içeren fiyatlandırma katmanıdır.
  • Uygulamanın Kaynak Grubu . Kaynak grubu, uygulama için gereken tüm Azure kaynaklarını gruplandırmanıza (mantıksal bir kapsayıcıda) olanak tanır.

Azure portalında oturum açın ve Azure Uygulaması Hizmeti kaynaklarınızı oluşturmak için bu adımları izleyin.

1. Adım: Azure portalında:

  1. Azure portalının üst kısmındaki arama çubuğuna "web uygulaması veritabanı" yazın.
  2. Market başlığının altında Web Uygulaması + Veritabanı etiketli öğeyi seçin. Doğrudan oluşturma sihirbazına da gidebilirsiniz.

Web Uygulaması + Veritabanı oluşturma sihirbazını (Flask) bulmak için üst araç çubuğundaki arama kutusunun nasıl kullanılacağını gösteren ekran görüntüsü.

2. Adım: Web Uygulaması + Veritabanı Oluştur sayfasında, formu aşağıdaki gibi doldurun.

  1. Kaynak Grubu → Yeni oluştur'u seçin ve msdocs-python-postgres-tutorial adını kullanın.
  2. Bölge → Yakınınızda herhangi bir Azure bölgesi.
  3. msdocs-python-postgres-XYZ →, burada XYZ herhangi bir rastgele karakterdir. Bu ad Azure genelinde benzersiz olmalıdır.
  4. Python 3.10çalışma zamanı yığını.
  5. VeritabanıPostgreSQL - Esnek Sunucu varsayılan olarak veritabanı altyapısı olarak seçilir. Sunucu adı ve veritabanı adı da varsayılan olarak uygun değerlere ayarlanır.
  6. Barındırma planıBasic. Hazır olduğunuzda, daha sonra bir üretim fiyatlandırma katmanına ölçek artırabilirsiniz.
  7. Gözden geçir ve oluştur’u seçin.
  8. Doğrulama tamamlandıktan sonra Oluştur'u seçin.

Web Uygulaması + Veritabanı sihirbazında (Flask) yeni bir uygulama ve veritabanını yapılandırmayı gösteren ekran görüntüsü.

3. Adım: Dağıtımın tamamlanması birkaç dakika sürer. Dağıtım tamamlandıktan sonra Kaynağa git düğmesini seçin. Doğrudan App Service uygulamasına yönlendirilirsiniz, ancak aşağıdaki kaynaklar oluşturulur:

  • Kaynak grubu → Oluşturulan tüm kaynaklar için kapsayıcı.
  • App Service planı → App Service için işlem kaynaklarını tanımlar. Temel katmanda bir Linux planı oluşturulur.
  • App Service → Uygulamanızı temsil eder ve App Service planında çalışır.
  • Sanal ağ → App Service uygulamasıyla tümleşiktir ve arka uç ağ trafiğini yalıttır.
  • PostgreSQL için Azure Veritabanı esnek sunucu → Yalnızca sanal ağ içinden erişilebilir. Sunucuda sizin için bir veritabanı ve kullanıcı oluşturulur.
  • Özel DNS bölge → Sanal ağdaki PostgreSQL sunucusunun DNS çözümlemesini etkinleştirir.

Dağıtım işleminin tamamlandığını (Flask) gösteren ekran görüntüsü.

2. Bağlantı gizli dizilerinin güvenliğini sağlama

Oluşturma sihirbazı sizin için zaten bir uygulama ayarı olarak veritabanı bağlantı dizesini oluşturdu. Ancak en iyi güvenlik uygulaması, gizli dizileri App Service'in dışında tutmaktır. Gizli dizilerinizi bir anahtar kasasına taşır ve Hizmet Bağlayıcıları'nın yardımıyla uygulama ayarınızı Key Vault başvurusu olarak değiştirirsiniz.

1. Adım: Mevcut bağlantı dizesi alma

  1. App Service sayfasının sol menüsünde Ayarlar > Ortam değişkenleri'ni seçin.
  2. AZURE_POSTGRESQL_CONNECTIONSTRING'ı seçin.
  3. Uygulama ayarı ekle/düzenle bölümünde, Değer alanında dizenin sonundaki password= bölümünü bulun.
  4. Daha sonra kullanmak üzere Password= sonrasındaki parola dizesini kopyalayın. Bu uygulama ayarı, özel uç noktanın arkasında güvenliği sağlanan Postgres veritabanına bağlanmanızı sağlar. Ancak gizli dizi doğrudan App Service uygulamasına kaydedilir ve bu en iyisi değildir. Bunu değiştireceksin.

Bir uygulama ayarının değerini nasıl göreceğinizi gösteren ekran görüntüsü.

2. Adım: Gizli dizilerin güvenli yönetimi için anahtar kasası oluşturma

  1. Üstteki arama çubuğuna "key vault" yazın ve Market Anahtar Kasası'nı> seçin.
  2. Kaynak Grubu'nda msdocs-python-postgres-tutorial öğesini seçin.
  3. Anahtar kasası adı alanına yalnızca harf ve sayılardan oluşan bir ad yazın.
  4. Bölge'de, kaynak grubuyla aynı konuma ayarlayın.

Anahtar kasası oluşturmayı gösteren ekran görüntüsü.

3. Adım: Özel Uç Nokta ile anahtar kasasının güvenliğini sağlama

  1. sekmesini seçin.
  2. Genel erişimi etkinleştir'in seçimini kaldırın.
  3. Özel uç nokta oluştur'u seçin.
  4. Kaynak Grubu'nda msdocs-python-postgres-tutorial öğesini seçin.
  5. Ad alanına, özel uç nokta için yalnızca harf ve sayılardan oluşan bir ad yazın.
  6. Bölge'de, kaynak grubuyla aynı konuma ayarlayın.
  7. İletişim kutusundaki Konum'da App Service uygulamanızla aynı konumu seçin.
  8. Kaynak Grubu'nda msdocs-python-postgres-tutorial öğesini seçin.
  9. Ad alanına msdocs-python-postgres-XYZVaultEndpoint yazın.
  10. Sanal ağ'da msdocs-python-postgres-XYZVnet öğesini seçin.
  11. Alt ağda msdocs-python-postgres-XYZSubnet.
  12. Tamam'ı seçin.
  13. Gözden Geçir + oluştur’u ve sonra da Oluştur’u seçin. Anahtar kasası dağıtımının tamamlanmasını bekleyin. "Dağıtımınız tamamlandı" ifadesini görmeniz gerekir.

Özel uç nokta ile anahtar kasasının güvenliğini sağlamayı gösteren ekran görüntüsü.

4. Adım: Hizmet Bağlayıcısını Yapılandırma

  1. Üst arama çubuğuna msdocs-python-postgres yazın, ardından msdocs-python-postgres-XYZ adlı App Service kaynağını seçin.
  2. App Service sayfasındaki sol menüde Ayarlar > Hizmet Bağlayıcısı'nı seçin. Uygulama oluşturma sihirbazının sizin için oluşturduğu bir bağlayıcı zaten var.
  3. Bağlayıcının yanındaki onay kutusunu ve ardından Düzenle'yi seçin.
  4. Temel Bilgiler sekmesindeki PostgreSQL veritabanı'nın altında oluşturulan PostgreSQL veritabanını seçin.
  5. Kimlik Doğrulaması sekmesini seçin.
  6. Parola'da, daha önce kopyaladığınız parolayı yapıştırın.
  7. Key Vault'ta Gizli Dizi Depola'ya tıklayın.
  8. Key Vault Bağlantısı'nın altında Yeni oluştur'u seçin. Düzenle iletişim kutusunun üzerinde Bağlantı oluştur iletişim kutusu açılır.

Anahtar kasası bağlantısıyla hizmet bağlayıcısını düzenlemeyi gösteren ekran görüntüsü.

5. Adım: Key Vault bağlantısını kurma

  1. Key Vault bağlantısı için bağlantı oluştur iletişim kutusunda, Key Vault'ta daha önce oluşturduğunuz anahtar kasasını seçin.
  2. Gözden geçir + Oluştur’u seçin.
  3. Doğrulama tamamlandığında Oluştur'u seçin.

Anahtar kasası hizmet bağlayıcısını yapılandırmayı gösteren ekran görüntüsü.

6. Adım: Hizmet Bağlayıcısı yapılandırmasını sonlandırma

  1. defaultConnector için düzenleme iletişim kutusuna geri dönersiniz. Kimlik Doğrulaması sekmesinde anahtar kasası bağlayıcısının oluşturulmasını bekleyin. Tamamlandığında, Key Vault Bağlantısı açılan listesinde otomatik olarak seçilir.
  2. İleri: Ağ'ı seçin.
  3. Kaydet'i seçin. Güncelleştirme başarılı bildirimi görünene kadar bekleyin.

VarsayılanBağlantıda seçilen anahtar kasası bağlantısını gösteren ekran görüntüsü.

7. Adım: Key Vault tümleştirmesini doğrulama

  1. Sol menüden Ayarlar > Ortam değişkenleri'ni yeniden seçin.
  2. AZURE_POSTGRESQL_CONNECTIONSTRING yanında Değeri göster'i seçin. değeri olmalıdır @Microsoft.KeyVault(...); bu da bir anahtar kasası başvurusu olduğu anlamına gelir çünkü gizli dizi artık anahtar kasasında yönetilir.

Azure'da MySQL ortam değişkeninin değerini nasıl göreceğinizi gösteren ekran görüntüsü.

Özetlemek gerekirse, App Service'in ortam değişkenlerinden PostgreSQL bağlantı dizesi alma, özel erişimle güvenli gizli dizi yönetimi için bir Azure Key Vault oluşturma ve anahtar kasasında parolayı depolamak için hizmet bağlayıcısını güncelleştirme işlemi gerçekleştirilir. Sistem tarafından atanan yönetilen kimlik kullanılarak App Service uygulaması ile anahtar kasası arasında güvenli bir bağlantı kuruldu ve bağlantı dizesi bir Key Vault başvurusu kullandığı onaylanarak kurulum doğrulandı.

Sorun mu yaşıyorsunuz? Sorun Giderme bölümüne bakın.


3. Örnek kodu dağıtma

Bu adımda GitHub Actions'ı kullanarak GitHub dağıtımını yapılandıracaksınız. App Service'e dağıtmanın birçok yolundan yalnızca biridir, aynı zamanda dağıtım sürecinizde sürekli tümleştirmeye sahip olmanın harika bir yoludur. Varsayılan olarak, GitHub deponuzun her git push örneği derleme ve dağıtma eylemini başlatacaktır.

1. Adım: Yeni bir tarayıcı penceresinde:

  1. GitHub hesabınıza giriş yapın.
  2. Şuraya gidin: https://github.com/Azure-Samples/msdocs-flask-postgresql-sample-app
  3. Çatal'ı seçin.
  4. Çatal oluştur'u seçin.

Örnek GitHub deposunun (Flask) çatalının nasıl oluşturulacağını gösteren ekran görüntüsü.

2. Adım: GitHub sayfasında, tuşa basarak tarayıcıda Visual Studio Code'ı . açın.

GitHub'da (Flask) Visual Studio Code tarayıcı deneyimini açmayı gösteren ekran görüntüsü.

3. Adım: Tarayıcıda Visual Studio Code'da gezginde azureproject/production.py açın. Yapılandırma sayfasında gördüğünüz uygulama ayarları dahil olmak üzere üretim ortamında kullanılan ortam değişkenlerine bakın.

Tarayıcıda Visual Studio Code'un ve açık bir dosyanın (Flask) gösterildiği ekran görüntüsü.

4. Adım: App Service sayfasının sol menüsünde Dağıtım Merkezi'ni seçin.

App Service'te (Flask) dağıtım merkezini açmayı gösteren ekran görüntüsü.

5. Adım: Dağıtım Merkezi sayfasında:

  1. Kaynak bölümünde GitHub'ı seçin. GitHub Actions varsayılan olarak derleme sağlayıcısı olarak seçilir.
  2. GitHub hesabınızda oturum açın ve Azure'ı yetkilendirme istemini izleyin.
  3. Kuruluş'ta hesabınızı seçin.
  4. Depo'da msdocs-flask-postgresql-sample-app öğesini seçin.
  5. Dal'da ana'yı seçin.
  6. İş akışı ekle için varsayılan seçeneğin seçili kalmasını sağlayın.
  7. Kimlik doğrulama türü altında Kullanıcı tarafından atanan kimlik'i seçin.
  8. Üstteki menüde Kaydet'i seçin. App Service, .github/workflows dizinde seçilen GitHub deposuna bir iş akışı dosyası işler.

GitHub Actions (Flask) kullanarak CI/CD'yi yapılandırmayı gösteren ekran görüntüsü.

6. Adım: Dağıtım Merkezi sayfasında:

  1. Günlükler’i seçin. Dağıtım çalıştırması zaten başlatıldı.
  2. Dağıtım çalıştırmasının günlük öğesinde Günlükleri Derle/Dağıt'ı seçin.

Dağıtım merkezinde (Flask) dağıtım günlüklerini açmayı gösteren ekran görüntüsü.

7. Adım: GitHub deponuza yönlendirilirsiniz ve GitHub eyleminin çalıştığını görürsünüz. İş akışı dosyası derleme ve dağıtma olarak iki ayrı aşama tanımlar. GitHub çalıştırmasının Tamamlandı durumunu göstermesini bekleyin. Yaklaşık 5 dakika sürer.

GitHub çalıştırmanın devam etmekte olduğunu (Flask) gösteren ekran görüntüsü.

Sorun mu yaşıyorsunuz? Sorun giderme kılavuzuna bakın.

4. Veritabanı şeması oluşturma

PostgreSQL veritabanı sanal ağ tarafından korunduğunda, Flask veritabanı geçişlerini çalıştırmanın en kolay yolu App Service kapsayıcısı ile bir SSH oturumudur.

1. Adım: App Service sayfasına, soldaki menüden

  1. SSH'yi seçin.
  2. Git'i seçin.

Azure portalından (Flask) uygulamanızın SSH kabuğunu açmayı gösteren ekran görüntüsü.

2. Adım: SSH terminalinde komutunu çalıştırın flask db upgrade. Başarılı olursa App Service veritabanına başarıyla bağlanıyor. Yalnızca içindeki dosyalarda /home yapılan değişiklikler uygulama yeniden başlatmalarının ötesinde kalıcı olabilir. dışındaki /home değişiklikler kalıcı olmaz.

SSH kabuğunda çalıştırılacak komutları ve bunların çıkışını (Flask) gösteren ekran görüntüsü.

5. Uygulamaya göz atın

1. Adım: App Service sayfasında:

  1. Sol menüden Genel Bakış'ı seçin.
  2. Uygulamanızın URL'sini seçin. Doğrudan adresine https://<app-name>.azurewebsites.netde gidebilirsiniz.

Azure portalından (Flask) App Service başlatmayı gösteren ekran görüntüsü.

2. Adım: Listeye birkaç restoran ekleyin. Tebrikler, Azure Uygulaması Hizmeti'nde PostgreSQL için Azure Veritabanı güvenli bağlantısı olan bir web uygulaması çalıştırıyorsunuz.

Restoran ve restoran incelemelerini (Flask) gösteren PostgreSQL'in Azure'da çalıştığı Flask web uygulamasının ekran görüntüsü.

6. Tanılama günlüklerini akışla aktarma

Azure Uygulaması Hizmeti, uygulamanızla ilgili sorunları tanılamanıza yardımcı olmak için konsola gönderilen tüm iletileri yakalar. Örnek uygulama, aşağıda gösterildiği gibi bu özelliği gösteren deyimler içerir print() .

@app.route('/', methods=['GET'])
def index():
    print('Request for index page received')
    restaurants = Restaurant.query.all()
    return render_template('index.html', restaurants=restaurants)

1. Adım: App Service sayfasında:

  1. Sol menüden App Service günlükleri'ni seçin.
  2. Uygulama günlüğü'nin altında Dosya Sistemi'ne tıklayın.
  3. Üstteki menüde Kaydet'i seçin.

Azure portalında App Service'te yerel günlükleri etkinleştirmeyi gösteren ekran görüntüsü.

2. Adım: Soldaki menüden Günlük akışı'nı seçin. Kapsayıcının içinden platform günlükleri ve günlükler de dahil olmak üzere uygulamanızın günlüklerini görürsünüz.

Azure portalında günlük akışını görüntülemeyi gösteren ekran görüntüsü.

Python uygulamanız için Azure İzleyici'yi ayarlama konusundaki serideki Python uygulamalarında oturum açma hakkında daha fazla bilgi edinin.

7. Kaynakları temizleme

İşiniz bittiğinde, kaynak grubunu silerek Azure aboneliğinizdeki tüm kaynakları silebilirsiniz.

1. Adım: Azure portalının üst kısmındaki arama çubuğunda:

  1. Kaynak grubu adını girin.
  2. Kaynak grubunu seçin.

Azure portalında kaynak grubu arama ve bu gruba gitme adımlarını gösteren ekran görüntüsü.

2. Adım: Kaynak grubu sayfasında Kaynak grubunu sil'i seçin.

Azure portalında Kaynak Grubunu Sil düğmesinin konumunu gösteren ekran görüntüsü.

3. Adım:

  1. Silme işleminizi onaylamak için kaynak grubu adını girin.
  2. Sil'i seçin.

Azure portalında kaynak grubunu silmeye yönelik onay iletişim kutusunun ekran görüntüsü. :

1. Azure kaynakları oluşturma ve örnek uygulama dağıtma

Bu adımda Azure kaynaklarını oluşturur ve Linux üzerinde App Service için örnek bir uygulama dağıtırsınız. Bu öğreticide kullanılan adımlar, App Service ve PostgreSQL için Azure Veritabanı içeren varsayılan olarak güvenli bir kaynak kümesi oluşturur.

  1. Henüz yapmadıysanız, örnek deponun dalını starter-no-infra yerel terminalde kopyalayın.

    git clone -b starter-no-infra https://github.com/Azure-Samples/msdocs-flask-postgresql-sample-app
    cd msdocs-flask-postgresql-sample-app
    

    Bu kopyalanan dal başlangıç noktanızdır. Basit bir veri sürücüsü Flask uygulaması içerir.

  2. Depo kökünden komutunu çalıştırın azd init.

    azd init --template python-app-service-postgresql-infra
    
  3. İstendiğinde aşağıdaki yanıtları verin:

    Soru Yanıt
    Geçerli dizin boş değil. Burada '<your-directory>' içinde bir proje başlatmak istiyor musunuz? Y
    Bu dosyalarla ne yapmak istiyorsunuz? Mevcut dosyalarımı değiştirmeden tut
    Yeni bir ortam adı girin Benzersiz bir ad yazın. azd şablonu, Azure'da (<app-name>.azurewebsites.net) web uygulamanızın DNS adının bir parçası olarak bu adı kullanır. Alfasayısal karakterlere ve kısa çizgilere izin verilir.
  4. azd up Gerekli Azure kaynaklarını sağlamak ve uygulama kodunu dağıtmak için komutunu çalıştırın. Azure'da henüz oturum açmadıysanız tarayıcı başlatılır ve oturum açmanızı ister. Komut azd up ayrıca, dağıtılacak istenen aboneliği ve konumu seçmenizi ister.

    azd up
    

    Komutun azd up tamamlanması birkaç dakika sürebilir. Ayrıca uygulama kodunuzu derleyip dağıtır, ancak kodunuzu daha sonra App Service ile çalışacak şekilde değiştireceksiniz. Komutu çalışırken, Azure'daki dağıtıma bir bağlantı da dahil olmak üzere sağlama ve dağıtım işlemiyle ilgili iletiler sağlar. Tamamlandığında, komut dağıtım uygulamasının bağlantısını da görüntüler.

    Bu azd şablonu, aşağıdaki Azure kaynaklarıyla varsayılan olarak güvenli bir mimari oluşturan dosyaları (azure.yaml ve infra dizini) içerir:

    • Kaynak grubu → Oluşturulan tüm kaynaklar için kapsayıcı.
    • App Service planı → App Service için işlem kaynaklarını tanımlar. B1 katmanında bir Linux planı belirtilir.
    • App Service → Uygulamanızı temsil eder ve App Service planında çalışır.
    • Sanal ağ → App Service uygulamasıyla tümleşiktir ve arka uç ağ trafiğini yalıttır.
    • PostgreSQL için Azure Veritabanı esnek sunucu → Yalnızca sanal ağ içinden erişilebilir. Sunucuda sizin için bir veritabanı ve kullanıcı oluşturulur.
    • Özel DNS bölge → Sanal ağdaki PostgreSQL sunucusunun DNS çözümlemesini etkinleştirir.
    • Log Analytics çalışma alanı →, uygulamanızın günlüklerini göndermesi için hedef kapsayıcı görevi görür ve burada günlükleri de sorgulayabilirsiniz.

2. Veritabanı bağlantı dizesi kullanın

Kullandığınız azd şablonu sizin için zaten uygulama ayarları olarak bağlantı değişkenlerini oluşturmuş ve kolaylık sağlamak için bunları terminale çıkış olarak göndermektedir. Uygulama ayarları, bağlantı gizli dizilerini kod deponuzun dışında tutmanın bir yoludur.

  1. azd çıkışında uygulama ayarlarını bulun ve ve AZURE_REDIS_CONNECTIONSTRINGayarlarını AZURE_POSTGRESQL_CONNECTIONSTRING bulun. Gizli dizileri güvende tutmak için yalnızca ayar adları görüntülenir. Bunlar azd çıkışında şöyle görünür:

     App Service app has the following settings:
    
             - AZURE_POSTGRESQL_CONNECTIONSTRING
             - AZURE_REDIS_CONNECTIONSTRING
             - FLASK_DEBUG
             - SCM_DO_BUILD_DURING_DEPLOYMENT
             - SECRET_KEY
     
  2. AZURE_POSTGRESQL_CONNECTIONSTRINGAzure'daki Postgres veritabanına bağlantı dizesi ve AZURE_REDIS_CONNECTIONSTRING Azure'daki Redis önbelleğine bağlantı dizesi içerir. Bunlara bağlanmak için kodunuzu kullanmanız gerekir. azureproject/production.py açın, aşağıdaki satırları açın ve dosyayı kaydedin:

    conn_str = os.environ['AZURE_POSTGRESQL_CONNECTIONSTRING']
    conn_str_params = {pair.split('=')[0]: pair.split('=')[1] for pair in conn_str.split(' ')}
    DATABASE_URI = 'postgresql+psycopg2://{dbuser}:{dbpass}@{dbhost}/{dbname}'.format(
        dbuser=conn_str_params['user'],
        dbpass=conn_str_params['password'],
        dbhost=conn_str_params['host'],
        dbname=conn_str_params['dbname']
    )
    

    Uygulama kodunuz artık Azure'daki PostgreSQL veritabanına bağlanacak şekilde yapılandırılmıştır. İstersen, açın app.py ve ortam değişkeninin DATABASE_URI nasıl kullanıldığını görün.

  3. Terminalde azd deploy komutunu çalıştırın.

    azd deploy
    

4. Veritabanı şeması oluşturma

PostgreSQL veritabanı sanal ağ tarafından korunduğunda, Flask veritabanı geçişlerini çalıştırmanın en kolay yolu App Service kapsayıcısı ile bir SSH oturumudur.

  1. azd çıkışında SSH oturumunun URL'sini bulun ve tarayıcıda oturuma gidin. Çıktıda şöyle görünür:

     Open SSH session to App Service container at: https://<app-name>.scm.azurewebsites.net/webssh/host
     
  2. SSH terminalinde komutunu çalıştırın flask db upgrade. Başarılı olursa App Service veritabanına başarıyla bağlanıyor.

    SSH kabuğunda çalıştırılacak komutları ve bunların çıkışını (Flask) gösteren ekran görüntüsü.

    Not

    Yalnızca içindeki dosyalarda /home yapılan değişiklikler uygulama yeniden başlatmalarının ötesinde kalıcı olabilir. dışındaki /home değişiklikler kalıcı olmaz.

5. Uygulamaya göz atın

  1. azd çıkışında uygulamanızın URL'sini bulun ve tarayıcıda bu URL'ye gidin. URL, AZD çıkışında şöyle görünür:

     Deploying services (azd deploy)
    
       (✓) Done: Deploying service web
       - Endpoint: https://<app-name>.azurewebsites.net/
     
  2. Listeye birkaç restoran ekleyin.

    Tebrikler, Azure Uygulaması Hizmeti'nde PostgreSQL için Azure Veritabanı güvenli bağlantısı olan bir web uygulaması çalıştırıyorsunuz.

6. Tanılama günlüklerini akışla aktarma

Azure Uygulaması Hizmeti, uygulamanızla ilgili sorunları tanılamanıza yardımcı olmak için konsol günlüklerini yakalayabilir. Kolaylık olması için azd şablonu yerel dosya sisteminde günlüğe kaydetmeyi ve bunları Log Analytics çalışma alanına göndermeyi zaten etkinleştirmiştir.

Örnek uygulama, aşağıdaki kod parçacığında gösterildiği gibi bu özelliği göstermek için deyimler içerir print() .

@app.route('/', methods=['GET'])
def index():
    print('Request for index page received')
    restaurants = Restaurant.query.all()
    return render_template('index.html', restaurants=restaurants)

azd çıkışında App Service günlüklerinin akışının bağlantısını bulun ve tarayıcıda bu bağlantıya gidin. Bağlantı, azd çıkışında şöyle görünür:

Stream App Service logs at: https://portal.azure.com/#@/resource/subscriptions/<subscription-guid>/resourceGroups/<group-name>/providers/Microsoft.Web/sites/<app-name>/logStream

Python uygulamanız için Azure İzleyici'yi ayarlama konusundaki serideki Python uygulamalarında oturum açma hakkında daha fazla bilgi edinin.

7. Kaynakları temizleme

Geçerli dağıtım ortamındaki tüm Azure kaynaklarını silmek için komutunu çalıştırın azd down.

azd down

Sorun giderme

Bu öğreticide çalışmaya çalışırken karşılaşabileceğiniz sorunlar ve bunları çözme adımları aşağıda listelenmiştir.

SSH oturumuna bağlanamıyorum

SSH oturumuna bağlanamıyorsanız uygulamanın kendisi başlatılamadı. Ayrıntılar için tanılama günlüklerine bakın. Örneğin, gibi KeyError: 'AZURE_POSTGRESQL_CONNECTIONSTRING'bir hata görürseniz bu, ortam değişkeninin eksik olduğu anlamına gelebilir (uygulama ayarını kaldırmış olabilirsiniz).

Veritabanı geçişlerini çalıştırırken hata alıyorum

Veritabanına bağlanmayla ilgili hatalarla karşılaşırsanız uygulama ayarlarının (AZURE_POSTGRESQL_CONNECTIONSTRING) değiştirilip değiştirilmediğini denetleyin. Bu bağlantı dizesi olmadan, geçiş komutu veritabanıyla iletişim kuramaz.

Sık sorulan sorular

Bu kurulumun maliyeti ne kadardır?

Oluşturulan kaynakların fiyatlandırması aşağıdaki gibidir:

Nasıl yaparım? diğer araçlarla sanal ağın arkasında güvenliği sağlanan PostgreSQL sunucusuna bağlanın.

Yerel uygulama geliştirme GitHub Actions ile nasıl çalışır?

Örnek olarak App Service'ten otomatik olarak oluşturulan iş akışı dosyasının kullanılması, yeni git push bir derleme ve dağıtım çalıştırması başlatır. GitHub deposunun yerel bir kopyasından istediğiniz güncelleştirmeleri yapar ve GitHub'a gönderebilirsiniz. Örneğin:

git add .
git commit -m "<some-message>"
git push origin main

Django örneği Azure Uygulaması Hizmetinde çalışacak şekilde nasıl yapılandırılır?

Not

Bu öğreticiyi kendi uygulamanızla birlikte takip ediyorsanız, ihtiyacınız olacak paketleri görmek için her projenin README.md dosyasındaki (Flask, Django) requirements.txt dosya açıklamasına bakın.

Django örnek uygulaması azureproject/production.py dosyasındaki ayarları yapılandırarak Azure Uygulaması Hizmeti'nde çalışabilmesini sağlar. Bu değişiklikler, Django'yu üretim ortamına dağıtmada yaygındır ve App Service'e özgü değildir.

  • Django, gelen isteklerde HTTP_HOST üst bilgisini doğrular. Örnek kod, Uygulamanın etki alanı adını Django'nun ALLOWED_HOSTS ayarına eklemek için App Service'teki ortam değişkenini kullanırWEBSITE_HOSTNAME.

    # Configure the domain name using the environment variable
    # that Azure automatically creates for us.
    ALLOWED_HOSTS = [os.environ['WEBSITE_HOSTNAME']] if 'WEBSITE_HOSTNAME' in os.environ else []
    
  • Django, üretimde statik dosyaların sunulmasını desteklemez. Bu öğreticide, dosyaların sunulmasını etkinleştirmek için WhiteNoise kullanırsınız. WhiteNoise paketi requirements.txt ile zaten yüklüdür ve ara yazılımı listeye eklenir.

    
    # WhiteNoise configuration
    MIDDLEWARE = [
        'django.middleware.security.SecurityMiddleware',
        # Add whitenoise middleware after the security middleware
        'whitenoise.middleware.WhiteNoiseMiddleware',
    

    Ardından statik dosya ayarları Django belgelerine göre yapılandırılır.

    SESSION_ENGINE = "django.contrib.sessions.backends.cache"
    STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'
    

Daha fazla bilgi için bkz . Django uygulamaları için üretim ayarları.

Sonraki adımlar

Özel bir etki alanı ve sertifikayla uygulamanızın güvenliğini sağlamayı öğrenmek için sonraki öğreticiye ilerleyin.

App Service'in python uygulamasını nasıl çalıştıracağınızı öğrenin: