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 öğreticide, PostgreSQL için Azure Veritabanı ilişkisel veritabanı hizmetini kullanan veri temelli bir Python web uygulamasını Azure App Service'e dağıtacaksınız. Azure App Service, Linux sunucu ortamında Python'i destekler. Bu makalede Django kullanılır. Alternatifler arasında Flask veya FastAPI öğreticisi yer alır.
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.
- GitHub hesabı. Ücretsiz olarak da bir tane alabilirsiniz.
- Django geliştirme ile Python bilgisi.
- (İsteğe bağlı) GitHub Copilot'ı denemek için bir GitHub Copilot hesabı gereklidir. 30 günlük ücretsiz deneme sürümü mevcuttur.
- Etkin aboneliği olan bir Azure hesabı. Azure hesabınız yoksa ücretsiz olarak bir hesap oluşturabilirsiniz.
- Azure Geliştirici CLI'sı yüklü. Azure Geliştirici CLI'sı zaten yüklü olduğundan Azure Cloud Shell ile adımları izleyebilirsiniz.
- Django geliştirme ile Python bilgisi.
- (İsteğe bağlı) GitHub Copilot'ı denemek için bir GitHub Copilot hesabı gereklidir. 30 günlük ücretsiz deneme sürümü mevcuttur.
Sonuna geç
Azure'da çalışan bu öğreticideki örnek uygulamayı görmek istiyorsanız, Azure Cloud Shell'de aşağıdaki komutları çalıştırın ve istemi izleyin:
mkdir msdocs-django-postgresql-sample-app
cd msdocs-django-postgresql-sample-app
azd init --template msdocs-django-postgresql-sample-app
azd up
Örneği çalıştırma
Başlangıç noktası olarak örnek bir veri temelli uygulama ayarlayın. Sizin için daha kolay olması adına, örnek depo bir geliştirme kapsayıcısı yapılandırması içerir. Geliştirme kapsayıcısı, örnek uygulamanın ihtiyaç duyduğu veritabanı, önbellek ve tüm ortam değişkenleri dahil olmak üzere bir uygulama geliştirmek için ihtiyacınız olan her şeye sahiptir. Geliştirme kapsayıcısı GitHub kod alanında çalıştırılabilir, böylece örneği web tarayıcısıyla herhangi bir bilgisayarda çalıştırabilirsiniz.
Not
Bu öğreticiyi kendi uygulamanızla birlikte izlerseniz, hangi paketlere ihtiyacınız olduğunu görmek için README.mdrequirements.txt dosya açıklamasına bakın.
1. Adım: Yeni bir tarayıcı penceresinde:
- GitHub hesabınıza giriş yapın.
- Şuraya gidin: https://github.com/Azure-Samples/msdocs-django-postgresql-sample-app/fork
- Yalnızca ana dalı kopyala seçimini kaldırın. Tüm dalları istiyorsun.
- Çatal oluştur'u seçin.
2. Adım: GitHub forkunda:
- 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.
-
Kod>Starter-no-infra üzerinde kod alanı oluştur.
Kod alanının ayarlanması birkaç dakika sürer. Depo için
pip install -r requirements.txt'ı çalıştırır. Sağlanan .env dosyası zaten Django'nın yerel olarak çalışması için gereken bir sahteSECRET_KEYdeğişken içeriyor.
Adım 3: Kod alanı terminalinde:
-
python manage.py migrateile veritabanı geçişlerini çalıştırın. - Uyugulamayı
python manage.py runserverile çalıştırın. - Bildirimi
Your application running on port 8000 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ınCtrl+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.
App Service, veritabanı ve önbellek oluşturma
Bu adımda Azure kaynaklarını oluşturun. Bu öğreticide App Service, PostgreSQL için Azure Veritabanı ve Azure Cache gibi varsayılan olarak güvenli bir kaynak kümesi oluşturulur. 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.
- Dünyada uygulamayı fiziksel olarak çalıştıran Bölge. Ayrıca uygulamanızın DNS adının bir parçasıdır.
- Uygulamanın Çalışma Zamanı yığını . Uygulamanız için kullanılacak Python sürümünü seçersiniz.
- Uygulama için Barındırma planı . Fiyatlandırma katmanı, uygulamanız için özellik kümesini ve ölçeklendirme kapasitesini içerir.
- Uygulamanın Kaynak Grubu . Kaynak grubu, uygulama için gereken tüm Azure kaynaklarını bir mantıksal kapsayıcıda gruplandırmanıza olanak tanır.
Azure portalınaoturum açın. Azure App Service kaynaklarınızı oluşturmak için bu adımları izleyin.
1. Adım: Azure portalında:
- Azure portalının üst kısmındaki arama kutusuna web uygulaması veritabanı yazın.
- Market başlığı altında Web Uygulaması + Veritabanı etiketli öğeyi seçin. Doğrudan Web uygulaması oluştur'a da gidebilirsiniz.
2. Adım:Web Uygulaması + Veritabanı Oluştur sayfasında, formu aşağıdaki gibi doldurun.
- Kaynak Grubu: Yeni oluştur'u seçin ve msdocs-django-postgres-tutorial girin.
- Bölge: Size yakın herhangi bir Azure bölgesi.
- Ad: msdocs-python-postgres-XYZ.
- Çalışma zamanı yığını: Python 3.14.
- 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.
- Redis için Azure Cache ekleme: Evet.
- Barındırma planı: Temel. Hazır olduğunuzda, ölçeği bir üretim fiyatlandırma katmanına kadar artırabilirsiniz.
- Gözden geçir ve oluştur'u seçin.
- Doğrulama tamamlandıktan sonra Oluştur'u seçin.
Adım 3: Dağıtımın tamamlanması birkaç dakika sürer. Dağıtım tamamlandıktan sonra Kaynağa git seçeneğini seçin. Dağıtım aşağıdaki kaynakları oluşturur:
- Kaynak grubu: Oluşturulan tüm kaynaklar için kapsayıcı.
- App Service planı: App Service için işlem kaynaklarını tanımlar. Bu örnek, Temel katmanda bir Linux planıdır.
- 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ç nokta: Sanal ağdaki Redis önbelleği için erişim uç noktası.
- Ağ arabirimleri: Özel uç noktaların her biri için bir tane olan özel IP adresleri.
- PostgreSQL için Azure Veritabanı esnek sunucusu: Yalnızca sanal ağ içinden erişilebilir. Dağıtım, sunucuda bir veritabanı ve kullanıcı oluşturur.
- Redis için Azure Cache: Yalnızca özel ağından erişilebilir.
- Özel DNS bölgeleri: Sanal ağdaki Redis önbelleğinin veritabanı sunucusunun DNS çözümlemesini etkinleştirir.
Bağlantı sırlarını güvenceye alma ve SECRET_KEY ekleme
Dağıtım işlemi , uygulama ayarları olarak sizin için bağlantı değişkenlerini oluşturur. Güvenlik açısından en iyi yöntem, gizlilikleri App Service tamamen dışında tutmaktır. Gizli verilerinizi bir anahtar kasasına taşıyın ve Hizmet Bağlayıcıları yardımıyla uygulama ayarınızı Key Vault referansları olarak değiştirin.
1. Adım: Mevcut bağlantı dizesini alma
- App Service sayfasının sol menüsünde Ayarlar>Ortam değişkenleri'ni seçin.
- AZURE_POSTGRESQL_CONNECTIONSTRING'ı seçin.
- Uygulama ayarı ekle/düzenle bölümünde, Değer alanında dizenin sonundaki password= bölümünü bulun.
- Daha sonra kullanmak üzere password= sonrasındaki parola dizesini kopyalayın.
Bu uygulama ayarı Postgres veritabanına ve özel uç noktaların arkasında güvenliği sağlanan Redis önbelleğine bağlanmanızı sağlar. Gizli bilgiler doğrudan App Service uygulamasına kaydedilir, bu da en iyi yaklaşım değildir. Bu yapılandırmayı değiştireceksiniz. Ayrıca Django uygulamanızın gerektirdiği bir
SECRET_KEYayar da eklersiniz.
2. Adım: Sırların güvenli yönetimi için bir anahtar kasası oluşturun
- Üstteki arama çubuğuna key vault yazın ve ardından Pazar Yeri'nden > seçin.
- Kaynak Grubu'ndamsdocs-python-postgres-tutorial öğesini seçin.
- Anahtar kasası adı alanına yalnızca harf ve sayılardan oluşan bir ad girin.
- Bölge'de, kaynak grubuyla aynı konumu seçin.
3. Adım: Özel Uç Nokta ile anahtar kasasının güvenliğini sağlama
- Ağ sekmesini seçin.
- Genel erişimi etkinleştir'in seçimini kaldırın.
- Özel uç nokta oluştur'u seçin.
- Kaynak Grubu'ndamsdocs-python-postgres-tutorial öğesini seçin.
- İletişim kutusundaki Konum'da App Service uygulamanızla aynı konumu seçin.
- Ad alanına msdocs-python-postgres-XYZVaultEndpoint yazın.
- Sanal ağ'damsdocs-python-postgres-XYZVnet öğesini seçin.
- Alt ağda, msdocs-python-postgres-XYZSubnet.
- Tamam'ı seçin.
- Gözden geçir ve oluştur'u ve ardından 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
- Üst arama çubuğuna msdocs-python-postgres yazın, ardından App Service kaynağınızı seçin msdocs-python-postgres-XYZ.
- App Service sayfasındaki sol menüde Ayarlar>Hizmet Bağlayıcısı'nı seçin. Uygulama oluşturma işleminin sizin için oluşturduğu iki bağlayıcı zaten vardır.
- PostgreSQL bağlayıcısının yanındaki onay kutusunu ve ardından Düzenle'yi seçin.
- İstemci türü'ndeDjango'yu seçin. PostgreSQL hizmet bağlayıcısı içindeki Django istemci türü, veritabanı değişkenlerini tek bağlantı dizesi yerine ayrı ayarlarda sunar. Ayrı değişkenleri Django'nun veritabanı ayarlarında daha kolay kullanabilirsiniz.
- Kimlik doğrulaması'nı seçin.
- Parola'da, daha önce kopyaladığınız parolayı yapıştırın.
- Key Vault'ta Gizli Bilgiyi Depola seçeneğini belirle.
- Key Vault Bağlantısı'nın altında Yeni oluştur'u seçin. Bu eylem, düzenle iletişim kutusunun üzerinde Bağlantı oluştur iletişim kutusunu açar.
5. Adım: Key Vault bağlantısını kurma
- 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.
- Gözden Geçir + Oluştur'u seçin.
- Doğrulama tamamlandığında Oluştur'u seçin.
6. Adım: PostgreSQL bağlayıcı ayarlarını son haline getir
- defaultConnector için düzenleme iletişim kutusuna geri dönersiniz. Kimlik doğrulaması'nın altında anahtar kasası bağlayıcısının oluşturulmasını bekleyin. Key Vault Bağlantısı açılan listesi otomatik olarak seçer.
- İleri: Ağ'ı seçin.
- Kaydet'i seçin. Güncelleştirme başarılı bildirimi görünene kadar bekleyin.
7. Adım: Redis bağlayıcısını Key Vault gizli dizilerini kullanacak şekilde yapılandırma
- Hizmet Bağlayıcıları sayfasında, Redis için Cache bağlayıcısının yanındaki onay kutusunu ve ardından Düzenle'yi seçin.
- Kimlik doğrulaması'nı seçin.
- Key Vault'ta Gizli Bilgiyi Depola seçeneğini belirle.
- Key Vault Bağlantısı'nın altında, oluşturduğunuz anahtar kasasını seçin.
- İleri: Ağ'ı seçin.
- Hedef hizmete erişimi etkinleştirmek için Güvenlik duvarı kurallarını yapılandır'ı seçin. Uygulama oluşturma işlemi sql veritabanının güvenliğini özel bir uç noktayla zaten sağladı.
- Kaydet'i seçin. Güncelleştirme başarılı bildirimi görünene kadar bekleyin.
8. Adım: Key Vault tümleştirmesini doğrulama
- Sol menüden Ayarlar > Ortam değişkenleri'ni yeniden seçin.
-
AZURE_POSTGRESQL_PASSWORD yanında Değeri göster'i seçin. Değer
@Microsoft.KeyVault(...)olmalıdır, bu da anahtar kasası referansı olduğu anlamına gelir çünkü gizli bilgi artık anahtar kasasında yönetilmektedir. - Redis bağlantı dizesini doğrulamak için AZURE_REDIS_CONNECTIONSTRING yanındaki Değeri göster'i seçin.
9. Adım: Örnek uygulama , gerekli SECRET_KEY ayarını ayarlamak için SECRET_KEY ortam değişkenini okur. Bu adımda bir uygulama ayarı olarak oluşturursunuz.
- Uygulama ayarları sekmesinde Ekle'yi seçin.
- Ad'ıSECRET_KEY olarak ayarlayın.
- Değer'i uzun bir rastgele dize olarak ayarlayın.
- Uygula'yı, sonra yeniden Uygula'yı ve ardından Onayla'yı seçin.
Özetlemek gerekirse, bağlantı sırlarınızın güvenliğini koruma işlemi şunları içerir:
- App Service uygulamasının ortam değişkenlerinden bağlantı gizli bilgilerini alma.
- Anahtar kasası oluşturma.
- Sistem tarafından atanan yönetilen kimlikle Key Vault bağlantısı oluşturma.
- Anahtar kasasında gizli bilgileri depolamak için hizmet bağlayıcılarını güncelleme.
Not
İdeal olan, SECRET_KEY uygulama ayarının da çok adımlı bir işlem olan anahtar kasası referansı olarak yapılandırılmasıdır. Daha fazla bilgi için bkz. SECRET_KEY uygulama ayarını Key Vault başvurusu olarak nasıl değiştirebilirim?
Sorun mu yaşıyorsunuz? Sorun Giderme bölümüne bakın.
Örnek kodu dağıtma
Bu bölümde GitHub Actions kullanarak GitHub dağıtımını yapılandırın. App Service'e dağıtmanın birçok yolu vardır. Dağıtım sürecinizde sürekli entegrasyonu sağlamak için harika bir yoldur. Varsayılan olarak, GitHub deponuza her git push eklendiğinde derleme ve dağıtma işlemi başlatılır.
1. Adım: Sol menüde Dağıtım>Dağıtım Merkezi'ni seçin.
2. Adım:Dağıtım Merkezi sayfasında:
- Kaynak bölümünde GitHub'ı seçin. GitHub Actions varsayılan olarak derleme sağlayıcısı olarak seçilir.
- GitHub hesabınızda oturum açın ve Azure'ı yetkilendirme istemini izleyin.
- Kuruluş'ta hesabınızı seçin.
- Depo'damsdocs-django-postgresql-sample-app öğesini seçin.
- Branch'testarter-no-infra'yı seçin. Bu dal, Azure ile ilgili dosyalar veya yapılandırmalar olmadan örnek uygulamanızla birlikte çalıştığınız dalla aynıdır.
- Kimlik doğrulama türü içinKullanıcı tarafından atanan kimlik'i seçin.
- Üstteki menüde Kaydet'i seçin.
App Service,
.github/workflowsdizinindeki GitHub deposuna bir iş akışı dosyası kaydeder. Varsayılan olarak, dağıtım merkezi, iş akışının Microsoft Entra (OIDC kimlik doğrulaması) kullanarak kimlik doğrulaması yapabilmesi için kullanıcıya atanmış bir kimlik oluşturur. Diğer kimlik doğrulama seçenekleri için bkz. GitHub Actions kullanarak App Service'e dağıtma.
Adım 3: Örnek çatalınızın GitHub kod alanına dönün ve komutunu çalıştırın git pull origin starter-no-infra.
Bu komut, yeni işlenen iş akışı dosyasını kod alanınıza çeker.
4. Adım (Seçenek 1: GitHub Copilot ile):
- Sohbet görünümünü seçip ardından + öğesini seçerek yeni bir sohbet oturumu başlatın.
- "@workspace Uygulama veritabanına ve redis'e nasıl bağlanır? " Copilot, ayarların azureproject/development.py ve azureproject/production.py'de nasıl yapılandırıldığı hakkında size bazı açıklamalar verebilir.
- "@workspace Üretim modunda uygulamam, Django istemci türünü kullanarak PostgreSQL esnek sunucusuna bağlanmak için Azure Hizmet Bağlayıcısı'nı kullanan bir App Service web uygulamasında çalışıyor. Kullanmam gereken ortam değişkeni adları nelerdir?" Copilot size Seçenek 2'dekine benzer bir kod önerisi verebilir : GitHub Copilot adımlarını takip etmeden ve hatta azureproject/production.py dosyasında değişiklik yapmanızı bile söyleyebilir.
- Gezginde azureproject/production.py açın ve kod önerisini ekleyin.
- "@workspace'a şunu sorun: 'App Service uygulamam, Django istemci türünü kullanarak Redis için Bir Önbelleğe bağlanmak amacıyla Azure Hizmet Bağlayıcıyı da kullanıyor." Kullanmam gereken ortam değişkeni adları nelerdir?" Copilot size Seçenek 2'dekine benzer bir kod önerisi verebilir : GitHub Copilot adımlarını takip etmeden ve hatta azureproject/production.py dosyasında değişiklik yapmanızı bile söyleyebilir.
- Kod önerisini ekleyin. GitHub Copilot her seferinde aynı yanıtı vermez. Yanıtlar 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):
- Gezginde azureproject/production.py açın.
- Açıklamalı kodu (satır 29-48) bulun ve açıklamasını kaldırın.
Bu kod,
AZURE_POSTGRESQL_USER,AZURE_POSTGRESQL_PASSWORD,AZURE_POSTGRESQL_HOST,AZURE_POSTGRESQL_NAMEveAZURE_REDIS_CONNECTIONSTRINGkullanarak PostgreSQL ve Redis bağlantıları oluşturur.
5. Adım:
- Kaynak Denetimi uzantısını seçin.
- Metin kutusuna,
Configure Azure database and cache connectionsgibi bir taahhüt mesajı yazın. Alternatif olarak,
öğesini seçip GitHub Copilot'un sizin için bir işleme iletisi oluşturmasına izin verin. - İşle'yi seçin, ardından Evet ile onaylayın.
- Değişiklikleri eşitle 1'i seçin, ardından Tamam ile onaylayın.
6. Adım: Azure portalında Dağıtım Merkezi'ne geri dönün:
- Yeni dağıtım çalıştırmasını görmek için Günlükler'i ve ardından Yenile'yi seçin.
- Dağıtım işleminin günlük öğesinde, en son zaman damgasını içeren Derleme/Dağıtma Günlükleri girişini seçin.
7. Adım: GitHub deponuza yönlendirilirsiniz. GitHub eylemi çalışıyor. İş akışı dosyası derleme ve dağıtma olarak iki ayrı aşama tanımlar. GitHub çalıştırmasının Başarılı durumunu göstermesini bekleyin. Yaklaşık 5 dakika sürer.
Sorun mu yaşıyorsunuz? Sorun giderme kılavuzuna bakın.
Veritabanı şeması oluşturma
PostgreSQL veritabanı sanal ağ tarafından korunduğunda , Django 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 geri dönün:
- Geliştirme Araçları>SSH'yi seçin.
- Git'i seçin.
2. Adım: SSH oturumunda komutunu çalıştırın python manage.py migrate. Başarılı olursa App Service veritabanına başarıyla bağlanıyor.
İpucu
SSH oturumunda, /home klasöründeki dosyalarda yapılan yalnızca değişiklikler uygulama yeniden başlatmalarının ötesinde kalıcı olabilir. dışındaki /home değişiklikler kalıcı olmaz.
SSH oturumu, python manage.py gibi yaygın komutlar çalıştırmak için, örneğin python manage.py createsuperuser ile kullanıcı oluşturma komutunu kullanarak, kullanışlıdır. Daha fazla bilgi için bkz. django django-admin ve manage.py. Web sitesinin /admin bölümüne erişmek için süper kullanıcı hesabını kullanın.
Sorun mu yaşıyorsunuz? Sorun Giderme bölümüne bakın.
Uygulamaya göz atın
1. Adım:App Service sayfasında:
- Sol menüden Genel Bakış'ı seçin.
- Uygulamanızın URL'sini seçin.
2. Adım: Listeye birkaç restoran ekleyin. Tebrikler! PostgreSQL için Azure Veritabanı'na güvenli bağlantı ile Azure App Service'te bir web uygulaması çalıştırıyorsunuz.
Tanılama günlüklerini akış halinde iletmek
Azure Uygulaması Hizmeti, uygulamanızla ilgili sorunları tanılamanıza yardımcı olmak için tüm konsol günlüklerini yakalar. Örnek uygulama, print() ifadeleri bu özelliği göstermek için içerir.
def index(request):
print('Request for index page received')
restaurants = Restaurant.objects.annotate(avg_rating=Avg('review__rating')).annotate(review_count=Count('review'))
lastViewedRestaurant = request.session.get("lastViewedRestaurant", False)
1. Adım:App Service sayfasında:
- Sol menüden İzleme> seçeneğini ve ardından App Service günlüklerini seçin.
- Uygulama günlüğü'nin altında Dosya Sistemi'ne tıklayın.
- Üstteki menüde Kaydet'i seçin.
2. Adım: Sol menüden Günlük akışı'nı seçin. Kapsayıcının içinden ve platformdan gelen günlükler de dahil olmak üzere uygulamanızın günlüklerini görürsünüz.
Python uygulamalarında oturum açma hakkında daha fazla bilgi için bkz. Python uygulamanız için Azure İzleyici'yi ayarlama.
Kaynakları temizle
İş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:
- Kaynak grubu adını girin.
- Kaynak grubunu seçin.
2. Adım: Kaynak grubu sayfasında Kaynak grubunu sil'i seçin.
Adım 3:
- Silme işleminizi onaylamak için kaynak grubu adını girin.
- Sil'i seçin.
Azure kaynakları oluşturma ve örnek uygulama dağıtma
Bu bölümde Azure kaynaklarını oluşturun ve Linux üzerinde App Service'e örnek bir uygulama dağıtın. Bu öğreticide kullanılan adımlar App Service, PostgreSQL için Azure Veritabanı ve Redis için Azure Cache 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.
Depo kökünden komutunu çalıştırın
azd init.azd init --template python-app-service-postgresql-infraİ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.komutunu çalıştırıp
azd auth loginistemi izleyerek Azure'da oturum açın:azd auth loginkomutuyla
azd provisiongerekli Azure kaynaklarını oluşturun. İstemi izleyerek Azure kaynakları için istenen aboneliği ve konumu seçin.azd provisionKomutun
azd provisiontamamlanması 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ştirin veazd deploykullanarak değişiklikleri dağıtın. komutu çalışırken, sağlama ve dağıtım işlemiyle ilgili iletiler sağlar. Çıktı, Azure'daki dağıtımın bağlantısını içerir.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şturur.
- 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 adresleri.
- PostgreSQL için Azure Veritabanı esnek sunucusu: Yalnızca sanal ağdan erişilebilir. Sunucuda bir veritabanı ve kullanıcı oluşturur.
- Özel DNS bölgesi: 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, dağıtılan örnek uygulama henüz çalışmaz. Azure'daki veritabanına bağlanması için küçük değişiklikler yapmanız gerekir.
Sorun mu yaşıyorsunuz? Sorun Giderme bölümüne bakın.
Veritabanı bağlantı dizesini kullanma
Kullandığınız AZD şablonu, uygulama ayarları olarak bağlantı değişkenlerini sizin için oluşturdu. Bunları terminale aktarır. Uygulama ayarları, bağlantı gizli dizilerini kod deponuzun dışında tutmanın bir yoludur.
AZD çıkışında
AZURE_POSTGRESQL_USER,AZURE_POSTGRESQL_PASSWORD,AZURE_POSTGRESQL_HOST,AZURE_POSTGRESQL_NAMEveAZURE_REDIS_CONNECTIONSTRINGayarlarını bulun. Gizli bilgileri 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_SCOPESize 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.
Örnek kodu değiştirme ve yeniden dağıtma
GitHub kod alanında Sohbet görünümünü ve ardından öğesini seçerek + oturumu başlatın.
"@workspace Uygulama veritabanına nasıl bağlanır? " Copilot, bağlantı ayarlarının azureproject/development.py ve azureproject/production.py'de nasıl yapılandırıldığı hakkında size bazı açıklamalar verebilir.
"@workspace Üretim modunda uygulamam, Django istemci türünü kullanarak PostgreSQL esnek sunucusuna bağlanmak için Azure Hizmet Bağlayıcısı'nı kullanan bir App Service web uygulamasında çalışıyor. Kullanmam gereken ortam değişkeni adları nelerdir?" Copilot size Seçenek 2'dekine benzer bir kod önerisi verebilir : GitHub Copilot adımlarını takip etmeden ve hatta azureproject/production.py dosyasında değişiklik yapmanızı bile söyleyebilir.
Gezginde azureproject/production.py açın ve kod önerisini ekleyin.
GitHub Copilot her seferinde aynı yanıtı vermez. Yanıtlar 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?.
Terminalde
azd deploykomutunu çalıştırın.azd deploy
Sorun mu yaşıyorsunuz? Sorun Giderme bölümüne bakın.
Veritabanı şeması oluşturma
PostgreSQL veritabanı sanal ağ tarafından korunduğunda, Django veritabanı geçişlerini çalıştırmanın en kolay yolu App Service'te Linux kapsayıcısı ile bir SSH oturumundadır.
AZD çıkışında SSH oturumunun URL'sini bulun ve tarayıcıda URL'ye gidin. Çıktıda şöyle görünür:
Open SSH session to App Service container at: <URL>SSH oturumunda komutunu çalıştırın
python manage.py migrate. Komut başarılı olursa App Service veritabanına başarıyla bağlanır.Not
Yalnızca
/homeiçindeki dosyalarda yapılan değişiklikler, uygulama yeniden başlatıldığında kalıcıdır. dışındaki/homedeğişiklikler kalıcı olmaz.
Sorun mu yaşıyorsunuz? Sorun Giderme bölümüne bakın.
Uygulamaya göz atın
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>Listeye birkaç restoran ekleyin.
Tebrikler! PostgreSQL için Azure Veritabanı'na güvenli bağlantı ile Azure App Service'te bir web uygulaması çalıştırıyorsunuz.
Sorun mu yaşıyorsunuz? Sorun Giderme bölümüne bakın.
Tanılama günlüklerini akış halinde iletmek
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 kaydetmeyi zaten etkinleştirmiştir ve logları bir Log Analytics çalışma alanına göndermektedir.
Örnek uygulama, bu özelliği göstermek için print() ifadelerini, aşağıdaki kod parçacığında gösterildiği gibi içerir.
def index(request):
print('Request for index page received')
restaurants = Restaurant.objects.annotate(avg_rating=Avg('review__rating')).annotate(review_count=Count('review'))
lastViewedRestaurant = request.session.get("lastViewedRestaurant", False)
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.
Stream App Service logs at: <URL>
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.
Kaynakları temizle
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ğıdadır.
SSH oturumuna bağlanamıyorum
SSH oturumuna bağlanamıyorsanız uygulamanın kendisi başlatılamaz. 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?
- Diğer araçlarla sanal ağın arkasında güvenliği sağlanan PostgreSQL sunucusuna nasıl bağlanabilirim?
- Yerel uygulama geliştirme GitHub Actions ile nasıl çalışır?
- Django örneği Azure App Service'te çalışacak şekilde nasıl yapılandırılır?
- SECRET_KEY uygulama ayarını Key Vault başvurusu olarak nasıl değiştirebilirim?
- GitHub Actions dağıtımı sırasında hataları nasıl ayıklarım?
- Kullanıcı tarafından atanan kimlik oluşturma iznim yok
- Kod alanımda GitHub Copilot ile ne yapabilirim?
- Bu kurulumun maliyeti ne kadardır?
- Diğer araçlarla sanal ağın arkasında güvenliği sağlanan PostgreSQL sunucusuna nasıl bağlanabilirim?
- Yerel uygulama geliştirme GitHub Actions ile nasıl çalışır?
- Django örneği Azure App Service'te çalışacak şekilde nasıl yapılandırılır?
- GitHub Actions dağıtımı sırasında hataları nasıl ayıklarım?
- Kullanıcı tarafından atanan kimlik oluşturma iznim yok
- Kod alanımda GitHub Copilot ile ne yapabilirim?
Bu kurulumun maliyeti ne kadardır?
Oluşturulan kaynakların fiyatlandırması aşağıdaki gibidir:
- App Service planı Temel katmanda oluşturulur ve ölçeği artırılabilir veya azaltılabilir. Bkz. App Service fiyatlandırması.
- PostgreSQL esnek sunucusu, en düşük depolama boyutu ve artırılıp azaltılabilen Standard_B1ms en düşük patlama katmanında oluşturulur. Bkz. PostgreSQL için Azure Veritabanı fiyatlandırması.
- Eşleme gibi ek işlevler yapılandırmadığınız sürece sanal ağ ücret ödemez. Bkz. Azure Sanal Ağ fiyatlandırması.
- Özel DNS bölgesi küçük bir ücrete tabi. Bkz. Azure DNS fiyatlandırması.
Diğer araçlarla sanal ağın arkasında güvenli bir şekilde korunmuş PostgreSQL sunucusuna nasıl bağlanabilirim?
- Komut satırı aracından temel erişim için uygulamanın SSH oturumundan çalıştırabilirsiniz
psql. - Bir masaüstü aracından bağlanmak için makinenizin sanal ağ içinde olması gerekir. Örneğin, alt ağlardan birine bağlı bir Azure sanal makinesi veya Azure sanal ağıyla siteden siteye VPN bağlantısı olan bir şirket içi ağdaki bir makine olabilir.
- Ayrıca Azure Cloud Shell'i sanal ağ ile tümleştirebilirsiniz.
Yerel uygulama geliştirme GitHub Actions ile nasıl çalışır?
App Service'ten otomatik olarak oluşturulan iş akışı dosyası örnek olarak alındığında, her git push yeni bir derleme ve dağıtım çalıştırmasını 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?
Django örnek uygulamasıazureproject/production.py dosyasındaki ayarları Yapılandırarak Azure App Service'te ç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
WEBSITE_HOSTNAMEayarına eklemek için App Service'teki ortam değişkenini kullanır.# 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ı.
SECRET_KEY uygulama ayarını Key Vault referansı olarak nasıl değiştiririm?
Azure portalında açıklanan adımlardan, cloud shell'de aşağıdaki Azure CLI komutlarını çalıştırarak SECRET_KEY bir Key Vault başvurusuna geçiş yapabilirsiniz.
# Change the following variables to match your environment
SUBSCRIPTION_ID=<subscription-id>
RESOURCE_GROUP=<resource-group-name>
KEY_VAULT_NAME=<key-vault-name>
APP_SERVICE_NAME=<app-name>
SECRET_NAME=djangoSecretKey
# Set the subscription ID
az account set --subscription $SUBSCRIPTION_ID
# Assign 'Key Vault Secrets Officer' role to your user at the scope of the key vault
az role assignment create \
--assignee $(az ad signed-in-user show --query id -o tsv) \
--role $(az role definition list --name "Key Vault Secrets Officer" --query "[].id" -o tsv) \
--scope $(az keyvault show --name $KEY_VAULT_NAME --resource-group $RESOURCE_GROUP --query id --output tsv)
# Add the secret to the key vault
az keyvault secret set \
--vault-name $KEY_VAULT_NAME \
--name $SECRET_NAME \
--value $(python -c 'import secrets; print(secrets.token_hex())')
# Add Key Vault reference to the App Service configuration
az webapp config appsettings set \
--resource-group $RESOURCE_GROUP \
--name $APP_SERVICE_NAME \
--settings "SECRET_KEY=@Microsoft.KeyVault(SecretUri=https://$KEY_VAULT_NAME.vault.azure.net/secrets/$SECRET_NAME)"
Aynı işlemi portalda da yapabilirsiniz. Daha fazla bilgi için bkz.
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, python komutuna -d seçeneğini ekleyerek 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şturduğunuzda GitHub Copilot sohbet görünümü zaten sizin için oradaydı. 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ı.
İlgili içerik
Ö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ı da öğrenebilirsiniz: