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ı hizmetiyle Azure App Service'e veri temelli bir Python web uygulaması (FastAPI) dağıtacaksınız. Azure App Service, Linux sunucu ortamında Python'i destekler. İstersen, bunun yerine Flask öğreticisine veya Django öğreticisine bakın.
Bu öğreticiyi tamamlamak için ihtiyacınız olanlar:
- Aktif bir aboneliğe sahip bir Azure hesabı. Azure hesabınız yoksa, ücretsiz olarak bir tane oluşturabilirsiniz.
- FastAPI geliştirmesi ile Python bilgisi
- Aktif bir aboneliğe sahip bir Azure hesabı. Azure hesabınız yoksa, ücretsiz olarak bir tane oluşturabilirsiniz.
- Azure Developer CLI yüklendi. Azure Geliştirici CLI'sı zaten yüklü olduğundan Azure Cloud Shell ile adımları izleyebilirsiniz.
- FastAPI geliştirmesi ile Python bilgisi
Sonuna geç
Azure Geliştirici CLI'sı yüklendiğinde, boş bir çalışma dizininde aşağıdaki komutları çalıştırarak öğreticinin sonuna atlayabilirsiniz:
azd auth login
azd init --template msdocs-fastapi-postgresql-sample-app
azd up
Örnek uygulama
Bu öğreticiyi takip etmenize yardımcı olmak için FastAPI çerçevesini kullanarak örnek bir Python uygulaması sağlanır. Yerel çalıştırmadan uygulamayı dağıtmak istiyorsanız, bu bölümü atlayın.
Uygulamayı yerel olarak çalıştırmak için Python 3.8 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-fastapi-postgresql-sample-app
cd msdocs-fastapi-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.
DBHOST
, DBUSER
ve DBPASS
değerlerini yerel PostgreSQL örneğinize uygun şekilde 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:
python3 -m pip install -r src/requirements.txt
Uygulamayı düzenlenebilir bir paket olarak yükleyin:
python3 -m pip install -e src
Aşağıdaki komutlarla örnek uygulamayı çalıştırın:
# Run database migration
python3 src/fastapi_app/seed_data.py
# Run the app at http://127.0.0.1:8000
python3 -m uvicorn fastapi_app:app --reload --port=8000
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ı belirtirsiniz:
- Web uygulamasının Adı. Bu, web uygulamanızın DNS adının bir parçası olarak kullanılan addır.
- Uygulamanın dünyada fiziksel olarak çalıştırılacağı Yer.
- 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.
- Uygulama için Kaynak Grubu. Bir kaynak grubu, uygulama için gereken tüm Azure kaynaklarını (mantıksal bir konteyner içinde) gruplamanıza olanak tanır.
Azure portalında oturum açın ve Azure Uygulaması Hizmeti kaynaklarınızı oluşturmak için bu adımları izleyin.
Adım 1: Azure portalında:
- Azure portalının üst kısmındaki arama çubuğuna "web uygulaması veritabanı" yazın.
- Market başlığının altında Web Uygulaması + Veritabanı etiketli öğeyi seçin. Ayrıca oluşturma sihirbazına doğrudan gidebilirsiniz.
Adım 2:Web Uygulaması + Veritabanı Oluştur sayfasında formu aşağıdaki gibi doldurun.
- Kaynak Grubu → Yeni oluştur'u seçin ve msdocs-python-postgres-tutorial adını kullanın.
- Bölge → Yakınınızda herhangi bir Azure bölgesi.
- msdocs-python-postgres-XYZ ad → burada XYZ herhangi bir rastgele karakterdir. Bu ad Azure genelinde benzersiz olmalıdır.
- Python 3.12 → çalışma zamanı yığını.
- 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.
- Barındırma planı → Basic. Hazır olduğunuzda, daha sonra bir üretim fiyatlandırma katmanına ölçek artırabilirsiniz.
- Seçin, gözden geçir ve oluştur.
- 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 seviyede bir Linux planı oluşturuldu.
- 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 sunucusu → Yalnızca sanal ağ içinden erişilebilir. Sunucuda sizin için bir veritabanı ve kullanıcı oluşturulur.
- Özel DNS bölgesi → Sanal ağdaki PostgreSQL sunucusunun DNS çözümlemesini etkinleştirir.
4. Adım: FastAPI uygulamaları için, App Service'in uygulamanızı başlatabilmesi için bir başlangıç komutu girmeniz gerekir. App Service sayfasında:
- Soldaki menüde, Ayarlar'ın altında Yapılandırma'yı seçin.
-
Yapılandırma sayfasının Genel ayarlar sekmesinde
src/entrypoint.sh
altındaki Başlangıç Komutu alanına girin. - Kaydetseçeneğini seçin. İstendiğinde Devam'ı seçin. App Service'te uygulama yapılandırması ve başlatma hakkında daha fazla bilgi edinmek için bkz. Azure App Service için Linux Python uygulaması yapılandırma.
2. Bağlantı ayarlarını doğrulama
Oluşturma sihirbazı sizin için zaten uygulama ayarları olarak bağlantı değişkenlerini oluşturdu. Uygulama ayarları, bağlantı sırlarını kod havuzunuzdan uzak tutmanın bir yoludur. Gizli dizilerinizi daha güvenli bir konuma taşımaya hazır olduğunuzda Azure Key Vault'ta depolama hakkında bir makale aşağıda verilmiştir.
1. Adım: App Service sayfasının sol menüsünde Ortam değişkenleri'ni seçin.
2. Adım:Ortam değişkenleri sayfasının Uygulama ayarları sekmesinde mevcut olduğunu AZURE_POSTGRESQL_CONNECTIONSTRING
doğrulayın. Bağlantı dizesi çalışma zamanı ortamına ortam değişkeni olarak eklenir.
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ğıtım yapmanın birçok yolundan sadece biri olup, dağıtım sürecinizde sürekli entegrasyonu sağlamak için harika bir yol. Varsayılan olarak, GitHub deponuzun her git push
örneği derleme ve dağıtma eylemini başlatacaktır.
Adım 1: Yeni bir tarayıcı penceresinde:
- GitHub hesabınıza giriş yapın.
- https://github.com/Azure-Samples/msdocs-fastapi-postgresql-sample-app'a gidin.
- Çatal'ı seçin.
- Çatal oluştur'u seçin.
2. Adım: GitHub sayfasında, tuşa basarak tarayıcıda Visual Studio Code'ı .
açın.
Adım 3: Tarayıcıda Visual Studio Code'da gezginde src/fastapi/models.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.
4. Adım: App Service sayfasına geri dönün, soldaki menüde, Dağıtım'ın altında Dağıtım Merkezi'ni seçin.
5. 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ıza giriş yapın ve Azure'a yetki vermek için istemi takip edin.
- "Organizasyon'a gidin ve hesabınızı seçin."
- Depo'damsdocs-fastapi-postgresql-sample-app öğesini seçin.
- Branch'da main'i seçin.
- İş akışı ekle için varsayılan seçeneğin seçili kalmasını sağlayın.
- Kimlik doğrulama türü altındaKullanıcı tarafından atanan kimlik'i seçin.
- Üst menüden Kaydet'i seçin. App Service,
.github/workflows
dizininde seçilen GitHub deposuna bir iş akışı dosyası yükler.
6. Adım: Dağıtım Merkezi sayfasında:
- Günlükler’i seçin. Dağıtım işlemi zaten başlatıldı.
- Dağıtım çalıştırması için günlük öğesinde Derle/Dağıt Günlükleri seçin.
7. Adım: GitHub deponuza yönlendirilirsiniz ve GitHub eyleminin çalıştığını görürsünüz. İş akışı dosyası, yapı ve dağıtım olmak üzere iki ayrı aşamayı tanımlar. GitHub çalışmasının Durumu Tamamlandı olarak gösterilene kadar bekleyin. Yaklaşık 5 dakika sürer.
Sorun mu yaşıyorsunuz? Sorun giderme kılavuzuna bakın.
4. Veritabanı şeması oluşturma
Önceki bölümde, uygulamanızın başlangıç komutu olarak src/entrypoint.sh eklediyseniz.
entrypoint.sh şu satırı içerir: python3 src/fastapi_app/seed_data.py
. Bu komut veritabanınızı taşır. Örnek uygulamada yalnızca veritabanınızda doğru tabloların oluşturulmasını sağlar. Bu tabloları herhangi bir veriyle doldurmaz.
Bu bölümde, tanıtım amacıyla bu komutu el ile çalıştıracaksınız. PostgreSQL veritabanı sanal ağ tarafından korunduğunda, komutu çalıştırmanın en kolay yolu App Service kapsayıcısı ile bir SSH oturumudur.
1. Adım: App Service sayfasına geri dönün, soldaki menüden
- SSH'yi seçin.
- Git'i seçin.
2. Adım: SSH terminalinde komutunu çalıştırın python3 src/fastapi_app/seed_data.py
. Başarılı olursa App Service veritabanına başarıyla bağlanıyor.
Yalnızca /home
içindeki dosyalarda yapılan değişiklikler uygulama yeniden başlatmalarının ötesinde kalıcılık gösterebilir. dışındaki /home
değişiklikler kalıcı olmaz.
5. 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, 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
Örnek uygulama, uygulamanızla ilgili sorunları tanılamanıza yardımcı olması için Python Standart Kitaplığı günlük modülünü kullanır. Örnek uygulama, aşağıdaki kodda gösterildiği gibi günlükçüye çağrılar içerir.
@app.get("/", response_class=HTMLResponse)
async def index(request: Request, session: Session = Depends(get_db_session)):
logger.info("root called")
statement = (
select(Restaurant, func.avg(Review.rating).label("avg_rating"), func.count(Review.id).label("review_count"))
.outerjoin(Review, Review.restaurant == Restaurant.id)
.group_by(Restaurant.id)
)
1. Adım: App Service sayfasında:
- Soldaki menüden İzleme'nin altında App Service günlükleri'ni seçin.
- Uygulama günlüğü altında, Dosya Sistemi seçin.
- Üst menüden Kaydet'i seçin.
Adım 2: Sol menüden Günlük akışı 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.
Olayların tanılama günlüklerinde gösterilmesi birkaç dakika sürebilir. 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.
Adım 1: Azure portalının üst kısmındaki arama çubuğunda:
- Kaynak grup adını girin.
- Kaynak grubunu seçin.
Adım 2: Kaynak grubu sayfasında, Kaynak grubunu sil seçeneğini seçin.
Adım 3:
- Silme işleminizi onaylamak için kaynak grubu adını girin.
- 'ı seçin,'i silin.
1. Azure kaynakları oluşturma ve örnek uygulama dağıtma
Bu adımda, Azure kaynaklarını oluşturur ve örnek bir uygulamayı Linux üzerinde App Service’e 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.
Henüz yapmadıysanız, örnek deponun
starter-no-infra
dalını yerel terminalde klonlayın.git clone -b starter-no-infra https://github.com/Azure-Samples/msdocs-fastapi-postgresql-sample-app cd msdocs-fastapi-postgresql-sample-app
Bu kopyalanan dal başlangıç noktanızdır. Basit bir veri destekli FastAPI tabanlı uygulama içerir.
Depolama dizininin kök klasöründen
azd init
komutunu çalıştırın.azd init --template msdocs-fastapi-postgresql-sample-app
İstendiğinde aşağıdaki yanıtları verin:
Soru Cevap Geçerli dizin boş değil. Burada '<your-directory>' içinde bir proje başlatmak istiyor musunuz? Y Bu dosyalarla ne yapmak istersiniz? 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. Alfanumerik karakterlere ve tirelere izin verilir.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. Komutazd 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. Çalışırken, komut, Azure'daki dağıtım bağlantısı dahil olmak üzere, sağlama ve dağıtım süreci hakkında mesajlar sağlar. Bittiğinde, komut ayrıca dağıtım uygulamasına bir bağlantı gösterir.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 sunucusu → Yalnızca sanal ağ içinden erişilebilir. Sunucuda sizin için bir veritabanı ve kullanıcı oluşturulur.
- Ö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.
Komut tamamlandığında çıkıştaki
azd up
Abonelik Kimliği (Guid), App Service ve Kaynak Grubu değerlerini not edin. Bunları aşağıdaki bölümlerde kullanabilirsiniz. Çıkışınız aşağıdaki (kısmi) çıkışa benzer olacaktır:Subscription: Your subscription name (1111111-1111-1111-1111-111111111111) Location: East US You can view detailed progress in the Azure Portal: https://portal.azure.com/#view/HubsExtension/DeploymentDetailsBlade/~/overview/id/%2Fsubscriptions%2F1111111-1111-1111-1111-111111111111%2Fproviders%2FMicrosoft.Resources%2Fdeployments%2Fyourenv-1721867673 (✓) Done: Resource group: yourenv-rg (✓) Done: Virtual Network: yourenv-e2najjk4vewf2-vnet (✓) Done: App Service plan: yourenv-e2najjk4vewf2-service-plan (✓) Done: Log Analytics workspace: yourenv-e2najjk4vewf2-workspace (✓) Done: Application Insights: yourenv-e2najjk4vewf2-appinsights (✓) Done: Portal dashboard: yourenv-e2najjk4vewf2-dashboard (✓) Done: App Service: yourenv-e2najjk4vewf2-app-service (✓) Done: Azure Database for PostgreSQL flexible server: yourenv-e2najjk4vewf2-postgres-server (✓) Done: Cache for Redis: yourenv-e2najjk4vewf2-redisCache (✓) Done: Private Endpoint: cache-privateEndpoint SUCCESS: Your application was provisioned in Azure in 32 minutes. You can view the resources created under the resource group yourenv-rg in Azure Portal: https://portal.azure.com/#@/resource/subscriptions/1111111-1111-1111-1111-111111111111/resourceGroups/yourenv-rg/overview Deploying services (azd deploy) (✓) Done: Deploying service web - Endpoint: https://yourenv-e2najjk4vewf2-app-service.azurewebsites.net/
2. Veritabanı bağlantı dizesini inceleyin
azd şablonu, uygulama ayarları olarak bağlantı değişkenlerini sizin için oluşturur. Uygulama ayarları, bağlantı sırlarını kod havuzunuzdan uzak tutmanın bir yoludur.
infra/resources.bicep
dosyasında uygulama ayarlarını bulun veAZURE_POSTGRESQL_CONNECTIONSTRING
ayarını bulun.resource appSettings 'config' = { name: 'appsettings' properties: { SCM_DO_BUILD_DURING_DEPLOYMENT: 'true' AZURE_POSTGRESQL_CONNECTIONSTRING: 'dbname=${pythonAppDatabase.name} host=${postgresServer.name}.postgres.database.azure.com port=5432 sslmode=require user=${postgresServer.properties.administratorLogin} password=${databasePassword}' SECRET_KEY: secretKey AZURE_REDIS_CONNECTIONSTRING: 'rediss://:${redisCache.listKeys().primaryKey}@${redisCache.name}.redis.cache.windows.net:6380/0' } }
AZURE_POSTGRESQL_CONNECTIONSTRING
Azure'daki Postgres veritabanına bağlantı dizesini içerir. Ona bağlanmak için kodunuzda kullanmanız gerekir. Bu ortam değişkenini kullanan kodu src/fastapi/models.py bulabilirsiniz:sql_url = "" if os.getenv("WEBSITE_HOSTNAME"): logger.info("Connecting to Azure PostgreSQL Flexible server based on AZURE_POSTGRESQL_CONNECTIONSTRING...") env_connection_string = os.getenv("AZURE_POSTGRESQL_CONNECTIONSTRING") if env_connection_string is None: logger.info("Missing environment variable AZURE_POSTGRESQL_CONNECTIONSTRING") else: # Parse the connection string details = dict(item.split('=') for item in env_connection_string.split()) # Properly format the URL for SQLAlchemy sql_url = ( f"postgresql://{quote_plus(details['user'])}:{quote_plus(details['password'])}" f"@{details['host']}:{details['port']}/{details['dbname']}?sslmode={details['sslmode']}" ) else: logger.info("Connecting to local PostgreSQL server based on .env file...") load_dotenv() POSTGRES_USERNAME = os.environ.get("DBUSER") POSTGRES_PASSWORD = os.environ.get("DBPASS") POSTGRES_HOST = os.environ.get("DBHOST") POSTGRES_DATABASE = os.environ.get("DBNAME") POSTGRES_PORT = os.environ.get("DBPORT", 5432) sql_url = f"postgresql://{POSTGRES_USERNAME}:{POSTGRES_PASSWORD}@{POSTGRES_HOST}:{POSTGRES_PORT}/{POSTGRES_DATABASE}" engine = create_engine(sql_url)
3. Başlangıç komutunu inceleyin
Azure App Service, FastAPI uygulamanızı çalıştırmak için bir başlangıç komutu gerektirir. azd şablonu bu komutu App Service örneğinizde sizin için ayarlar.
infra/resources.bicep
dosyasında, web sitenizin bildirimini bulun ve ardındanappCommandLine
ayarını bulun. Bu, başlangıç komutunuz için ayardır.resource web 'Microsoft.Web/sites@2022-03-01' = { name: '${prefix}-app-service' location: location tags: union(tags, { 'azd-service-name': 'web' }) kind: 'app,linux' properties: { serverFarmId: appServicePlan.id siteConfig: { alwaysOn: true linuxFxVersion: 'PYTHON|3.11' ftpsState: 'Disabled' appCommandLine: 'src/entrypoint.sh' minTlsVersion: '1.2' } httpsOnly: true } identity: { type: 'SystemAssigned' }
Başlangıç komutu src/entrypoint.sh dosyasını çalıştırır. App Service'in uygulamanızı başlatmak için çalıştırdığını komutları anlamak için bu dosyadaki kodu inceleyin:
#!/bin/bash set -e python3 -m pip install --upgrade pip python3 -m pip install -e src python3 src/fastapi_app/seed_data.py python3 -m gunicorn fastapi_app:app -c src/gunicorn.conf.py
App Service'te uygulama yapılandırması ve başlatma hakkında daha fazla bilgi edinmek için bkz. Azure App Service için Linux Python uygulaması yapılandırma.
4. Veritabanı şeması oluşturma
Önceki bölümde entrypoint.sh aşağıdaki satırı içerdiğini fark etmiş olabilirsiniz: python3 src/fastapi_app/seed_data.py
. Bu komut veritabanınızı taşır. Örnek uygulamada yalnızca veritabanınızda doğru tabloların oluşturulmasını sağlar. Bu tabloları herhangi bir veriyle doldurmaz.
Bu bölümde, tanıtım amacıyla bu komutu el ile çalıştıracaksınız. PostgreSQL veritabanı sanal ağ tarafından korunduğunda, komutu çalıştırmanın en kolay yolu App Service kapsayıcısı ile bir SSH oturumudur.
SSH oturumunun URL'sini oluşturmak ve tarayıcıda bu urlye gitmek için azd çıkışında daha önce not ettiğiniz App Service değerini kullanın:
SSH terminalinde komutunu çalıştırın
python3 src/fastapi_app/seed_data.py
. Başarılı olursa App Service veritabanına başarıyla bağlanıyor.Uyarı
Yalnızca
/home
içindeki dosyalarda yapılan değişiklikler uygulama yeniden başlatmalarının ötesinde kalıcılık gösterebilir. dışındaki/home
değişiklikler kalıcı olmaz.
5. Uygulamaya göz atın
azd çıkışında uygulamanızın URL'sini bulun ve tarayıcıda bu URL'ye gidin. AZD çıktısındaki URL şöyle görünür:
Deploying services (azd deploy) (✓) Done: Deploying service web - Endpoint: <URL>
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 App Service, uygulamanızla ilgili sorunları tanılamanıza yardımcı olmak için günlükleri yakalayabilir. Kolaylık olması için azd şablonu yerel dosya sisteminde kayıt tutmayı zaten etkinleştirmiştir.
Örnek uygulama, günlükleri çıktı olarak almak için Python Standart Kitaplığı günlük modülünü kullanır. Örnek uygulama aşağıda gösterildiği gibi günlükçüye çağrılar içerir.
@app.get("/", response_class=HTMLResponse)
async def index(request: Request, session: Session = Depends(get_db_session)):
logger.info("root called")
statement = (
select(Restaurant, func.avg(Review.rating).label("avg_rating"), func.count(Review.id).label("review_count"))
.outerjoin(Review, Review.restaurant == Restaurant.id)
.group_by(Restaurant.id)
)
Günlük akışına erişmek için uygulamanızı Azure portalında açın. İzleme>Günlük akışı'nı seçin.
Olayların tanılama günlüklerinde gösterilmesi birkaç dakika sürebilir. 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ça sorulan sorular
- Bu kurulumun maliyeti ne kadardır?
- Sanal ağın arkasında güvenliği sağlanan PostgreSQL sunucusuna diğer araçlarla nasıl bağlanabilirim?
- Yerel uygulama geliştirme, GitHub Actions ile nasıl çalışır?
Bu kurulumun maliyeti ne kadardır?
Oluşturulan kaynakların fiyatlandırması aşağıdaki gibidir:
- App Service planı Basic katmanında oluşturulur ve yukarı veya aşağı ölçeklenebilir. Bkz. App Service fiyatlandırması.
- PostgreSQL esnek sunucusu, en düşük patlayabilen katmanda Standard_B1ms ve minimum depolama boyutuyla oluşturulur; ölçek artırılabilir veya azaltılabilir. Bkz. PostgreSQL için Azure Veritabanı fiyatlandırması.
- Sanal ağ, eşleştirme gibi ekstra işlevler yapılandırmadığınız sürece bir ücret getirmez. 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ılığıyla temel erişim sağlamak için uygulamanın SSH terminalinden
psql
çalıştırabilirsiniz. - 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 VM veya Azure sanal ağıyla siteden siteye VPN bağlantısı olan bir şirket içi ağda bulunan 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
Sonraki Adımlar
Bir sonraki eğitici derse geçerek uygulamanızı özel bir alan adı ve sertifika ile nasıl güvence altına alacağınızı öğrenin.
App Service'in python uygulamasını nasıl çalıştıracağınızı öğrenin: