Aracılığıyla paylaş


Azure'da PostgreSQL ile Python (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ı (Flask) dağıtacaksınız. Azure Uygulaması Hizmeti destekler Linux sunucu ortamında Python. İsterseniz, bunun yerine Django öğreticisine veya FastAPI öğreticisinebakın.

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

Bu öğreticide aşağıdakilerin nasıl yapılacağını öğreneceksiniz:

  • Varsayılan olarak güvenli bir App Service, PostgreSQL ve Redis önbellek mimarisi oluşturun.
  • Yönetilen kimlik ve Key Vault referanslarını kullanarak bağlantı sırlarının güvenliğini sağlama.
  • GitHub deposundan App Service'e örnek bir Python uygulaması dağıtın.
  • Uygulama kodunda App Service bağlantı dizesi ve uygulama ayarlarına erişin.
  • Güncelleştirmeler yapın ve uygulama kodunu yeniden dağıtın.
  • Veritabanı geçişlerini çalıştırarak veritabanı şeması oluşturma.
  • Azure'dan tanılama günlüklerini akışla aktar.
  • Uygulamayı Azure portalında yönetin.
  • Azure Geliştirici CLI'sını kullanarak aynı mimariyi sağlayın ve dağıtın.
  • GitHub Codespaces ve GitHub Copilot ile geliştirme iş akışınızı iyileştirin.

Önkoşullar

  • Etkin aboneliği olan bir Azure hesabı. Azure hesabınız yoksa ücretsiz olarak bir hesap oluşturabilirsiniz.
  • Bir GitHub hesabı. Ücretsiz olarak da bir tane alabilirsiniz.
  • Flask geliştirme ile Python bilgisi.
  • (İsteğe bağlı) GitHub Copilot'ı denemek için bir GitHub Copilot hesabı gerekir. 30 günlük ücretsiz deneme sürümü mevcuttur.

Sonuna geç

Bu öğreticideki örnek uygulamayı yalnızca Azure'da çalışırken görmek istiyorsanız, Azure Cloud Shell'de aşağıdaki komutları çalıştırmanız ve istemi izlemeniz gerekir:

mkdir msdocs-flask-postgresql-sample-app
cd msdocs-flask-postgresql-sample-app
azd init --template msdocs-flask-postgresql-sample-app
azd up

1. Örneği çalıştırın

İlk olarak, başlangıç noktası olarak örnek bir veri temelli uygulama ayarlarsınız. Sizin için kolaylık olması açısından, örnek depo, bir geliştirme kapsayıcısı yapılandırması içerir. Geliştirme kapsayıcısı veritabanı, önbellek ve örnek uygulamanın ihtiyaç duyduğu tüm ortam değişkenleri dahil olmak üzere bir uygulama geliştirmek için ihtiyacınız olan her şeye sahiptir. Geliştirme konteyneri, bir GitHub codespace'de çalıştırılabilir, bu da örneği web tarayıcısı olan herhangi bir bilgisayarda çalıştırabileceğiniz anlamına gelir.

Not

Bu öğreticiyi kendi uygulamanızla birlikte takip ediyorsanız, hangi paketlere ihtiyacınız olduğunu görmek için README.md requirements.txt dosya açıklamasına bakın.

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/fork
  3. Yalnızca ana dalı kopyala seçeneğini kaldırın. Tüm dalları istiyorsun.
  4. Çatal oluştur'u seçin.

2. Adım: GitHub dalında:

  1. Başlangıç dalı için main>starter-no-infra öğesini seçin. Bu dal yalnızca örnek projeyi içerir ve Azure ile ilgili dosya veya yapılandırma içermez.
  2. Starter-no-infra üzerinde Kod>kod alanı oluştur. Kod alanı ortamının ayarlanması birkaç dakika sürer ve sonunda deponuz için pip install -r requirements.txt çalıştırılır.

3. Adım: Codespace terminalinde:

  1. Veritabanı geçişlerini flask db upgrade ile çalıştırın.
  2. Uygulamayı flask run çalıştırın.
  3. Bildirimi Your application running on port 5000 is available.gördüğünüzde Tarayıcıda Aç'ı seçin. Örnek uygulamayı yeni bir tarayıcı sekmesinde görmeniz gerekir. Uygulamayı durdurmak için yazın Ctrl+C.

İpucu

GitHub Copilot'a bu depo hakkında soru sorabilirsiniz. Örneğin:

  • @workspace Bu proje ne yapar?
  • @workspace .devcontainer klasörü ne yapar?

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

2. 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ı belirtirsiniz:

  • Web uygulamasının Adı. Uygulamanızın DNS adının bir parçası olarak kullanılır.
  • Uygulamanın dünyada fiziksel olarak çalıştırılacağı Yer. Ayrıca uygulamanızın DNS adının bir parçası olarak da kullanılır.
  • 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. Oluşturma sihirbazına doğrudan da gidebilirsiniz.

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-flask-postgres-tutorial adını kullanın.
  2. Bölge: Size yakın herhangi bir Azure bölgesi.
  3. Ad: msdocs-python-postgres-XYZ.
  4. Çalışma zamanı yığını: Python 3.12.
  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. Redis için Azure Cache ekle?: Hayır.
  7. Barındırma planı: Temel. Hazır olduğunuzda, ölçeği bir üretim fiyatlandırma katmanına kadar artırabilirsiniz.
  8. Gözden geçir ve oluştur’u seçin.
  9. Doğrulama tamamlandıktan sonra Oluştur'u seçin.

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ştirilmiş ve arka uç ağ trafiğini yalıtıyor.
  • Ağ arabirimleri: Özel uç noktaların her biri için bir tane olan özel IP adreslerini temsil eder.
  • 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ölgeleri: Anahtar kasasının ve sanal ağdaki veritabanı sunucusunun DNS çözümlemesini etkinleştirir.

3. Bağlantı şifrelerinin güvenliğini sağlama

Oluşturma sihirbazı sizin için zaten uygulama ayarları olarak bağlantı değişkenlerini oluşturdu. Ancak en iyi güvenlik uygulaması, gizli bilgileri App Service'in tamamen dışında tutmaktır. Gizlilerinizi bir anahtar kasasına taşıyacak ve Hizmet Bağlayıcıları yardımıyla uygulama ayarınızı Anahtar Kasası referansları olarak değiştireceksiniz.

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 bilgi doğrudan App Service uygulamasına kaydedilir ki bu en iyi uygulama değildir. Bunu değiştireceksin.

2. Adım: Gizli anahtarların güvenli yönetimi için bir anahtar kasası oluşturun

  1. Üstteki arama çubuğuna "key vault" yazın ve Market Anahtar Kasası'nı>.
  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.

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 bir uç nokta oluştur'u seçin.
  4. Kaynak Grubu'nda msdocs-python-postgres-tutorial öğesini seçin.
  5. İletişim kutusundaki Konum'da App Service uygulamanızla aynı konumu seçin.
  6. Ad alanına msdocs-python-postgres-XYZVaultEndpoint yazın.
  7. Sanal ağ'da msdocs-python-postgres-XYZVnet öğesini seçin.
  8. Alt ağda, msdocs-python-postgres-XYZSubnet.
  9. Tamam'ı seçin.
  10. 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.

4. Adım: PostgreSQL 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. PostgreSQL bağlayıcısının yanındaki onay kutusunu ve ardından Düzenle'yi seçin.
  4. İstemci türü'nde Django'yu seçin. Flask uygulamanız olsa da PostgreSQL hizmet bağlayıcısı içindeki Django istemci türü, veritabanı değişkenlerini tek bir bağlantı dizesi yerine ayrı ayarlarda sunar. Ayrı değişkenleri, veritabanına bağlanmak için SQLAlchemy kullanan uygulama kodunuzda kullanmanız daha kolaydır.
  5. Kimlik Doğrulaması sekmesini seçin.
  6. Parola'da, daha önce kopyaladığınız parolayı yapıştırın.
  7. Store Secret in Key Vault seçin.
  8. Key Vault Bağlantısı altında, Yeni oluştur seçeneğini seçin. Düzenle iletişim kutusunun üzerinde Bağlantı oluştur iletişim kutusu açılır.

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.

6. Adım: PostgreSQL bağlayıcı ayarlarını son haline getir

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

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_PASSWORD'nin yanında Değeri göster'i seçin. Değer @Microsoft.KeyVault(...) olmalıdır, bu da bir anahtar kasası referansı olduğu anlamına gelir çünkü sır artık anahtar kasasında yönetiliyor.

Özetlemek gerekirse, bağlantı sırlarınızın güvenliğini sağlama süreci şunları içerir:

  • App Service uygulamasının ortam değişkenlerinden bağlantı sırlarını alma.
  • Anahtar kasası oluşturma.
  • Sistem tarafından atanan yönetilen kimlikle Key Vault bağlantısı oluşturma.
  • Gizli bilgileri anahtar kasasında depolamak için hizmet bağlayıcılarını güncelleme.

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


4. Ö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 deponuza her git push eklendiğinde derleme ve dağıtma işlemi başlatılır.

1. Adım: Soldaki menüde Dağıtım

2. 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. Branch'te starter-no-infra'yı seçin. Bu, Azure ile ilgili dosyalar veya yapılandırmalar olmadan örnek uygulamanızla birlikte çalıştığınız dalla aynıdır.
  6. Kimlik doğrulama türü için Kullanıcı tarafından atanan kimlik'i seçin.
  7. Üstteki menüde Kaydet'i seçin. App Service, .github/workflows dizinde seçilen GitHub deposuna bir iş akışı dosyası işler. Varsayılan olarak, dağıtım merkezi Microsoft Entra (OIDC kimlik doğrulaması) kullanarak kimlik doğrulaması yapmak üzere iş akışı için kullanıcı tarafından atanan bir kimlik oluşturur. Alternatif kimlik doğrulama seçenekleri için bkz: Deploy to App Service using GitHub Actions.

3. Adım: Örnek çatalınızın GitHub kod alanınızda şunu çalıştırın: git pull origin starter-no-infra. Bu, yeni eklenen iş akışı dosyasını kod alanınıza çeker.

4. Adım (Seçenek 1: GitHub Copilot ile):

  1. Yeni bir sohbet oturumu başlatmak için, önce Sohbet görünümünü ve ardından + öğesini seçin.
  2. "@workspace Uygulama veritabanına nasıl bağlanır? " Copilot, bağlantı URI'sini SQLAlchemy nasıl yapılandırıldığı hakkında size bazı açıklamalar verebilir.
  3. "@workspace Üretim modunda uygulamam, Django istemci türünü kullanarak PostgreSQL esnek sunucusuna bağlanmak için Azure Service Bağlayıcısı'nı kullanan bir App Service web uygulamasında çalışıyor. Kullanmam gereken ortam değişkeni adları nelerdir?" Copilot, aşağıdaki 2. Seçenek: GitHub Copilot olmadan adımlarındakine benzer bir kod önerisi verebilir ve hatta azureproject/production.py dosyasında değişiklik yapmanızı bile söyleyebilir.
  4. Gezginde azureproject/production.py açın ve kod önerisini ekleyin. GitHub Copilot her seferinde aynı yanıtı vermez ve her zaman doğru değildir. Yanıtta ince ayar yapmak için daha fazla soru sormanız gerekebilir. İpuçları için bkz . Kod alanımda GitHub Copilot ile ne yapabilirim?.

4. Adım (Seçenek 2: GitHub Copilot olmadan):

  1. Gezginde Program.cs açın.
  2. Açıklamalı kodu (satır 3-8) bulun ve açıklamasını kaldırın. Bu, AZURE_POSTGRESQL_USER, AZURE_POSTGRESQL_PASSWORD, AZURE_POSTGRESQL_HOST ve AZURE_POSTGRESQL_NAME kullanarak SQLAlchemy için bir bağlantı dizesi oluşturur.

5. Adım:

  1. Kaynak Denetimi uzantısını seçin.
  2. Metin kutusuna Configure Azure database connection gibi bir işleme iletisi yazın. Alternatif olarak GitHub Copilot'un sizin için bir işleme iletisi oluşturmasını seçip bırakın.
  3. İşle'yi seçin, ardından Evet ile onaylayın.
  4. Değişiklikleri eşitle 1'i seçin, ardından Tamam ile onaylayın.

6. Adım: Azure portalındaki Dağıtım Merkezi sayfasına geri dönün:

  1. Günlükler sekmesini seçin, ardından yeni dağıtım çalıştırmasını görmek için Yenile'yi seçin.
  2. Dağıtım çalıştırmasının günlük öğesinde, en son zaman damgasını içeren Derleme/Dağıtma Günlükleri girdisini seçin.

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 Başarı durumunu göstermesini bekleyin. Yaklaşık 5 dakika sürer.

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

5. 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'te Linux kapsayıcısı ile bir SSH oturumundadır.

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

  1. Geliştirme Araçları
  2. Git'i seçin.

2. Adım: SSH oturumunda komutunu çalıştırın flask db upgrade. Başarılı olursa App Service veritabanına başarıyla bağlanıyor.

İpucu

SSH oturumunda, yalnızca /home içindeki dosyalarda yapılan değişiklikler, uygulama yeniden başlatıldıktan sonra da kalıcı olabilir. dışındaki /home değişiklikler kalıcı olmaz.

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

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

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.

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

Azure Uygulaması Hizmeti, uygulamanızla ilgili sorunları tanılamanıza yardımcı olmak için tüm konsol günlüklerini 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üklerini>.
  2. Uygulama günlüğü'nin altında Dosya Sistemi'ne tıklayın.
  3. Üstteki menüde Kaydet'i seçin.

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

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

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

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

3. Adım:

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

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

Geliştirme kapsayıcısı zaten Azure Geliştirici CLI'sine (AZD) sahiptir.

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

    azd init --template python-app-service-postgresql-infra
    
  2. İ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>-<hash>.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.
  3. komutunu çalıştırıp azd auth login istemi izleyerek Azure'da oturum açın:

    azd auth login
    
  4. komutuyla azd provision gerekli Azure kaynaklarını oluşturun. İstemi izleyerek Azure kaynakları için istenen aboneliği ve konumu seçin.

    azd provision
    

    Komutun azd provision tamamlanması yaklaşık 15 dakika sürer (Redis önbelleği en çok zaman alır). Daha sonra, kodunuzu App Service ile çalışacak şekilde değiştirecek ve değişiklikleri azd deploy ile dağıtacaksınız. 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.

    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. 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ştirilmiş ve arka uç ağ trafiğini yalıtıyor.
    • Özel uç noktalar: Sanal ağdaki anahtar kasası ve Redis önbelleği için erişim uç noktaları.
    • Ağ arabirimleri: Özel uç noktaların her biri için bir tane olan özel IP adreslerini temsil eder.
    • 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.
    • Redis için Azure Cache: Yalnızca özel uç noktasının arkasından erişilebilir.
    • Anahtar kasası: Yalnızca özel uç noktasının arkasından erişilebilir. App Service uygulaması için gizli bilgileri yönetmek amacıyla kullanılır.

    Komut kaynak oluşturmayı ve uygulama kodunu ilk kez dağıtmayı tamamladıktan sonra, Azure'daki veritabanına bağlanmak için küçük değişiklikler yapmanız gerektiğinden dağıtılan örnek uygulama henüz çalışmaz.

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

3. Bağlantı dizesini kullanarak veritabanı bağlantısını kullanın

Kullandığınız AZD şablonu, sizin için zaten uygulama ayarları olarak bağlantı değişkenlerini oluşturmuş ve size 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 AZURE_POSTGRESQL_USER, AZURE_POSTGRESQL_PASSWORD, AZURE_POSTGRESQL_HOST ve AZURE_POSTGRESQL_NAME ayarlarını bulun. Sırları güvende tutmak için yalnızca ayar adları görüntülenir. AZD çıkışında şu şekilde görünürler:

     App Service app has the following connection settings:
             - AZURE_POSTGRESQL_NAME
             - AZURE_POSTGRESQL_HOST
             - AZURE_POSTGRESQL_USER
             - AZURE_POSTGRESQL_PASSWORD
             - AZURE_REDIS_CONNECTIONSTRING
             - AZURE_KEYVAULT_RESOURCEENDPOINT
             - AZURE_KEYVAULT_SCOPE
     
  2. Size kolaylık sağlamak için AZD şablonu size uygulamanın uygulama ayarları sayfasının doğrudan bağlantısını gösterir. Bağlantıyı bulun ve yeni bir tarayıcı sekmesinde açın.

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

4. Örnek kodu değiştirme ve yeniden dağıtma

  1. GitHub kod alanında Sohbet görünümünü ve ardından öğesini seçerek + oturumu başlatın.

  2. "@workspace Uygulama veritabanına nasıl bağlanır? " Copilot, bağlantı URI'sini SQLAlchemy nasıl yapılandırıldığı hakkında size bazı açıklamalar verebilir.

  3. "@workspace Üretim modunda uygulamam, Django istemci türünü kullanarak PostgreSQL esnek sunucusuna bağlanmak için Azure Service Bağlayıcısı'nı kullanan bir App Service web uygulamasında çalışıyor. Kullanmam gereken ortam değişkeni adları nelerdir?" Copilot, aşağıdaki 2. Seçenek: GitHub Copilot olmadan adımlarındakine benzer bir kod önerisi verebilir ve hatta azureproject/production.py dosyasında değişiklik yapmanızı bile söyleyebilir.

  4. Gezginde azureproject/production.py açın ve kod önerisini ekleyin.

    GitHub Copilot her seferinde aynı yanıtı vermez ve her zaman doğru değildir. Yanıtta ince ayar yapmak için daha fazla soru sormanız gerekebilir. İpuçları için bkz . Kod alanımda GitHub Copilot ile ne yapabilirim?.

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

    azd deploy
    

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

5. 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'te Linux kapsayıcısı ile bir SSH oturumundadır.

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

     Open SSH session to App Service container at: <URL>
     
  2. SSH oturumunda 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ı gösteren ekran görüntüsü.

    Not

    Uygulama yeniden başlatıldığında sadece /home içindeki dosyalarda yapılan değişiklikler kalıcıdır. dışındaki /home değişiklikler kalıcı olmaz.

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

6. 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: <URL>
     
  2. Listeye birkaç restoran ekleyin.

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

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

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

7. 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 sağlamak amacıyla, AZD şablonu yerel dosya sistemine günlük kaydetmeyi zaten etkinleştirir ve günlükleri Log Analytics çalışma alanına gönderir.

Örnek uygulama, aşağıdaki kod parçacığında gösterildiği üzere bu yeteneği sergilemek için print() deyimleri içermektedir.

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

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

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

8. Kaynakları temizleme

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

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_HOST'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_USER, AZURE_POSTGRESQL_PASSWORD, AZURE_POSTGRESQL_HOSTve AZURE_POSTGRESQL_NAME) değiştirilip değiştirilmediğini veya silindiğ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:

PostgreSQL sunucusuna, diğer araçlarla sanal ağın arkasında güvenliği sağlanmış bir şekilde nasıl bağlanırım?

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

GitHub Actions dağıtımı sırasında hata ayıklama Nasıl yaparım??

Otomatik olarak oluşturulan GitHub iş akışı dosyasında bir adım başarısız olursa, daha ayrıntılı çıkış oluşturmak için başarısız olan komutu değiştirmeyi deneyin. Örneğin, seçeneğini ekleyerek python komutundan -d daha fazla çıktı alabilirsiniz. App Service'e başka bir dağıtım tetiklemek için değişikliklerinizi işleyin ve gönderebilirsiniz.

Kullanıcı tarafından atanan kimlik oluşturma iznim yok

Bkz . Dağıtım Merkezi'nden GitHub Actions dağıtımını ayarlama.

Kod alanımda GitHub Copilot ile ne yapabilirim?

Kod alanını oluştururken GitHub Copilot sohbet görünümünün zaten sizin için orada olduğunu fark etmiş olabilirsiniz. Kolaylık sağlamak için kapsayıcı tanımına GitHub Copilot sohbet uzantısını dahil ediyoruz (bkz . .devcontainer/devcontainer.json). Ancak, bir GitHub Copilot hesabına ihtiyacınız vardır (30 günlük ücretsiz deneme sürümü kullanılabilir).

GitHub Copilot ile konuşurken size birkaç ipucu:

  • Tek bir sohbet oturumunda, sorular ve yanıtlar birbirleri üzerinde derlenebilir ve sorularınızı ayarlayarak, elde ettiğiniz yanıta ince ayar yapabilirsiniz.
  • Varsayılan olarak, GitHub Copilot'un deponuzdaki hiçbir dosyaya erişimi yoktur. Dosya hakkında soru sormak için önce düzenleyicide dosyayı açın.
  • GitHub Copilot'ın yanıtlarını hazırlarken depodaki tüm dosyalara erişmesine izin vermek için sorunuza ile @workspacebaşlayın. Daha fazla bilgi için bkz. Use the @workspace agent.
  • Sohbet oturumunda, GitHub Copilot değişiklikleri önerebilir ve (ile @workspace) değişikliklerin yapılacağı yeri bile önerebilir, ancak değişiklikleri sizin için yapmasına izin verilmez. Önerilen değişiklikleri eklemek ve test etmek size bağlı.

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: