Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Ebben az oktatóanyagban egy adatvezérelt Python-webalkalmazást (FastAPI) helyez üzembe Azure-alkalmazás Szolgáltatásban az Azure Database for PostgreSQL relációsadatbázis-szolgáltatással. Azure-alkalmazás szolgáltatás támogatja Python linuxos kiszolgálói környezetben. Ha szeretné, tekintse meg inkább a Flask-oktatóanyagot vagy a Django-oktatóanyagot .
Az oktatóanyag elvégzéséhez a következőkre lesz szüksége:
- Egy Azure-fiók, aktív előfizetéssel. Ha nem rendelkezik Azure-fiókkal, ingyenesen létrehozhat egyet.
- A Python ismerete FastAPI-fejlesztéssel
- Egy Azure-fiók, aktív előfizetéssel. Ha nem rendelkezik Azure-fiókkal, ingyenesen létrehozhat egyet.
- Az Azure Developer CLI telepítve van. Kövesse az Azure Cloud Shell lépéseit, mert már telepítve van az Azure Developer CLI.
- A Python ismerete FastAPI-fejlesztéssel
Ugrás a végére
Ha telepítve van az Azure Developer CLI , az oktatóanyag végére ugorhat úgy, hogy az alábbi parancsokat futtatja egy üres munkakönyvtárban:
azd auth login
azd init --template msdocs-fastapi-postgresql-sample-app
azd up
Mintaalkalmazás
A FastAPI-keretrendszert használó Python-mintaalkalmazások segítenek az oktatóanyag követésében. Ha helyi futtatás nélkül szeretné üzembe helyezni, hagyja ki ezt a részt.
Az alkalmazás helyi futtatásához győződjön meg arról, hogy helyileg telepítve van a Python 3.8 vagy újabb verziója, valamint a PostgreSQL . Ezután klónozza a mintaadattár ágát starter-no-infra
, és váltson az adattár gyökerére.
git clone -b starter-no-infra https://github.com/Azure-Samples/msdocs-fastapi-postgresql-sample-app
cd msdocs-fastapi-postgresql-sample-app
Hozzon létre egy .env fájlt az alább látható módon az .env.sample fájl használatával útmutatóként. Állítsa be az értéket DBNAME
egy meglévő adatbázis nevére a helyi PostgreSQL-példányban. Adja meg a helyi DBHOST
DBUSER
PostgreSQL-példány értékeitDBPASS
.
DBNAME=<database name>
DBHOST=<database-hostname>
DBUSER=<db-user-name>
DBPASS=<db-password>
Hozzon létre egy virtuális környezetet az alkalmazáshoz:
py -m venv .venv
.venv\scripts\activate
Telepítse a függőségeket:
python3 -m pip install -r src/requirements.txt
Telepítse az alkalmazást szerkeszthető csomagként:
python3 -m pip install -e src
Futtassa a mintaalkalmazást a következő parancsokkal:
# 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. Az App Service és a PostgreSQL létrehozása
Ebben a lépésben hozza létre az Azure-erőforrásokat. Az oktatóanyagban használt lépések az App Service-t és az Azure Database for PostgreSQL-t tartalmazó, alapértelmezés szerint biztonságos erőforrások készletét hozzák létre. A létrehozási folyamathoz a következőket kell megadnia:
- A webalkalmazás neve . Ez a webalkalmazás
https://<app-name>.azurewebsites.net
DNS-nevének részeként használt név. - A régió , amely fizikailag futtatja az alkalmazást a világon.
- Az alkalmazás futtatókörnyezeti vereme . Itt választhatja ki az alkalmazáshoz használni kívánt Python-verziót.
- Az alkalmazás üzemeltetési terve . Ez a tarifacsomag, amely tartalmazza az alkalmazás funkcióit és skálázási kapacitását.
- Az alkalmazás erőforráscsoportja . Az erőforráscsoportokkal (logikai tárolóban) csoportosíthatja az alkalmazáshoz szükséges Összes Azure-erőforrást.
Jelentkezzen be az Azure Portalra, és kövesse az alábbi lépéseket a Azure-alkalmazás szolgáltatás erőforrásainak létrehozásához.
1. lépés: Az Azure Portalon:
- Írja be a "webalkalmazás-adatbázis" kifejezést az Azure Portal tetején található keresősávba.
- Válassza ki a Web App + Adatbázis címkével ellátott elemet a Marketplace címsora alatt. A létrehozási varázslót közvetlenül is megnyithatja.
2. lépés: A Webalkalmazás létrehozása + Adatbázis lapon töltse ki az űrlapot az alábbiak szerint.
- Erőforráscsoport → Válassza a Új lehetőség létrehozása opciót, és használja az msdocs-python-postgres-tutorial nevet.
- Régió → Az Önhöz közeli Bármely Azure-régió.
- Adja →msdocs-python-postgres-XYZ nevet, ahol az XYZ tetszőleges három véletlenszerű karakter. Ennek a névnek az Azure-on belül egyedinek kell lennie.
- Runtime stack → Python 3.12.
- Database → PostgreSQL – A rugalmas kiszolgáló alapértelmezés szerint adatbázismotorként van kiválasztva. A kiszolgáló neve és az adatbázis neve alapértelmezés szerint a megfelelő értékekre is be van állítva.
- Üzemeltetési terv → Alapszintű. Ha készen áll, később bővítheti az üzemeltetési árkategóriát.
- Válassza az Áttekintés + létrehozás lehetőséget.
- Az ellenőrzés befejezése után válassza a Létrehozás lehetőséget.
3. lépés: Az üzembe helyezés néhány percet vesz igénybe. Az üzembe helyezés befejeződése után válassza az Erőforrás megnyitása gombot. Közvetlenül az App Service-alkalmazásba kerül, de a következő erőforrások jönnek létre:
- Az erőforráscsoport az összes létrehozott erőforrás tárolóját →.
- Az App Service-csomag → Az App Service számítási erőforrásait határozza meg. Létrejön egy Linux-terv a Alap szinten.
- Az App Service → Az alkalmazást jelöli, és az App Service-csomagban fut.
- A virtuális hálózat → Integrálva van az App Service alkalmazással, és elkülöníti a háttérbeli hálózati forgalmat.
- Azure PostgreSQL rugalmas adatbázis-kiszolgáló → Csak a virtuális hálózaton belülről érhető el. A rendszer létrehoz egy adatbázist és egy felhasználót a kiszolgálón.
- saját DNS zóna → Engedélyezi a PostgreSQL-kiszolgáló DNS-feloldását a virtuális hálózaton.
4. lépés: A FastAPI-alkalmazásokhoz be kell írnia egy indítási parancsot, hogy az App Service elindíthassa az alkalmazást. Az App Service oldalán:
- A bal oldali menü Beállítások területén válassza a Konfiguráció lehetőséget.
- A Általános beállítások fülön, a Konfiguráció oldalon, adja meg a
src/entrypoint.sh
értéket az Stack beállításai alatt található Indítási parancs mezőben. - Válassza a Mentés lehetőséget. Amikor a rendszer kéri, válassza a Folytatás lehetőséget. Az appkonfigurációval és az App Service-ben való indítással kapcsolatos további információkért lásd: Linux Python-alkalmazás konfigurálása Azure-alkalmazás Service-hez.
2. Kapcsolati beállítások ellenőrzése
A létrehozási varázsló már alkalmazásbeállításokként létrehozta a kapcsolati változókat. Az alkalmazásbeállítások az egyik módja annak, hogy a kapcsolati titkokat távol tartsuk a kódrepozitóriumodtól. Ha készen áll a titkos kulcsok biztonságosabb helyre való áthelyezésére, az alábbi cikk az Azure Key Vaultban való tárolásról szóló cikket ismerteti.
1. lépés: Az App Service lap bal oldali menüjében válassza a Környezeti változók lehetőséget.
2. lépés: A Környezeti változók lap Alkalmazásbeállítások lapján ellenőrizze, hogy létezik-eAZURE_POSTGRESQL_CONNECTIONSTRING
. A kapcsolati sztring környezeti változóként injektáljuk a futtatókörnyezetbe.
3. Mintakód üzembe helyezése
Ebben a lépésben konfigurálja a GitHub üzembe helyezését a GitHub Actions használatával. Ez csak egy az App Service-ben történő üzembe helyezés számos módja közül, de nagyszerű módja annak is, hogy folyamatos integrációt nyújtsunk az üzembe helyezési folyamatba. Alapértelmezés szerint a GitHub-adattár minden git push
eleme elindítja a buildelési és üzembe helyezési műveletet.
1. lépés: Új böngészőablakban:
- Jelentkezzen be a GitHub-fiókjába.
- Navigáljon a https://github.com/Azure-Samples/msdocs-fastapi-postgresql-sample-app.
- Válassza a Fork lehetőséget.
- Válassza az Elágazás létrehozása lehetőséget.
2. lépés: A GitHub lapon nyissa meg a Visual Studio Code-ot a böngészőben a .
kulcs lenyomásával.
3. lépés: Nyissa meg az src/fastapi/models.py böngészőben a Visual Studio Code-ban. Tekintse meg a gyártási környezetben használt környezeti változókat, beleértve a konfigurációs lapon látott alkalmazásbeállításokat is.
4. lépés: Az App Service lap bal oldali menüjében, az Üzembe helyezés csoportban válassza az Üzembe helyezési központ lehetőséget.
5. lépés: Az Üzembehelyezési központ lapon:
- A Forrás területen válassza a GitHubot. Alapértelmezés szerint a GitHub Actions van kiválasztva buildszolgáltatóként.
- Jelentkezzen be a GitHub-fiókjába, és kövesse az utasításokat az Azure engedélyezéséhez.
- A Szervezetben válassza ki a fiókját.
- Az Adattárban válassza az msdocs-fastapi-postgresql-sample-app lehetőséget.
- Az Ág alatt válassza ki a fő-t.
- Hagyja bejelölve az alapértelmezett beállítást a munkafolyamat hozzáadásához.
- A Hitelesítés típusa területen válassza a felhasználó által hozzárendelt identitást.
- A felső menüben válassza a Mentés lehetőséget. Az App Service véglegesít egy munkafolyamat-fájlt a kiválasztott GitHub-adattárba a
.github/workflows
címtárban.
6. lépés: Az Üzembehelyezési központ lapon:
- Válassza a Naplókat. Az üzembehelyezési futtatás már elindult.
- Az üzembe helyezési futtatás naplóelemében válassza a Build/Deploy Logs lehetőséget.
7. lépés: A GitHub-adattárba kerül, és láthatja, hogy a GitHub-művelet fut. A munkafolyamat-fájl két különálló szakaszt határoz meg, a buildelést és az üzembe helyezést. Várja meg, amíg a GitHub fut, és megjeleníti a Kész állapotot. Körülbelül 5 percig tart.
Problémákat tapasztal? Tekintse meg a hibaelhárítási útmutatót.
4. Adatbázisséma létrehozása
Az előző szakaszban hozzáadta a src/entrypoint.sh fájlt az alkalmazás indítási parancsaként.
entrypoint.sh a következő sort tartalmazza: python3 src/fastapi_app/seed_data.py
. Ez a parancs migrálja az adatbázist. A mintaalkalmazásban csak a megfelelő táblák létrehozását biztosítja az adatbázisban. Nem tölti fel ezeket a táblákat adatokkal.
Ebben a szakaszban ezt a parancsot manuálisan fogja futtatni bemutató célokra. A virtuális hálózat által védett PostgreSQL-adatbázissal a parancs futtatásának legegyszerűbb módja az App Service-tárolóval folytatott SSH-munkamenet.
1. lépés: Vissza az App Service lap bal oldali menüjébe,
- Válassza az SSH-t.
- Válassza az Indít elemet.
2. lépés: Futtassa python3 src/fastapi_app/seed_data.py
az SSH-terminálban. Ha sikeres, az App Service sikeresen csatlakozik az adatbázishoz.
Csak a fájlok /home
módosításai őrizhetők meg az alkalmazás újraindítása után. A /home
-n kívüli módosítások nem maradnak meg.
5. Keressen az alkalmazásra
1. lépés: Az App Service oldalán:
- A bal oldali menüben válassza az Áttekintés lehetőséget.
- Válassza ki az alkalmazás URL-címét. Közvetlenül navigálhat a
https://<app-name>.azurewebsites.net
címre is.
2. lépés: Vegyen fel néhány éttermet a listára. Gratulálunk, ön most egy webalkalmazást futtat az Azure App Service-ben, amely biztonságos kapcsolatot biztosít az Azure Database for PostgreSQL-hez.
6. Diagnosztikai naplók streamelése
A mintaalkalmazás a Python Standard Library naplózási moduljával segít diagnosztizálni az alkalmazással kapcsolatos problémákat. A mintaalkalmazás az alábbi kódban látható módon meghívja a naplózót.
@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. lépés: Az App Service oldalán:
- A bal oldali menü Figyelés területén válassza az App Service-naplókat.
- Az Alkalmazásnaplózás területen válassza a Fájlrendszer lehetőséget.
- A felső menüben válassza a Mentés lehetőséget.
2. lépés: A bal oldali menüben válassza a Naplóstream lehetőséget. Láthatja az alkalmazás naplóit, beleértve a platformnaplókat és a tárolón belüli naplókat.
Az események több percig is eltarthatnak, amíg megjelennek a diagnosztikai naplókban. További információ a Python-alkalmazásokban való naplózásról a Python-alkalmazásHoz készült Azure Monitor beállításáról szóló sorozatban.
7. Erőforrások törlése
Ha végzett, törölheti az összes erőforrást az Azure-előfizetéséből az erőforráscsoport törlésével.
1. lépés: Az Azure Portal tetején található keresősávon:
- Adja meg az erőforráscsoport nevét.
- Válassza ki az erőforráscsoportot.
2. lépés: Az erőforráscsoport lapján válassza az Erőforráscsoport törlése lehetőséget.
3. lépés:
- A törlés megerősítéséhez adja meg az erőforráscsoport nevét.
- Válassza a Törlés lehetőséget.
1. Azure-erőforrások létrehozása és mintaalkalmazás üzembe helyezése
Ebben a lépésben létrehozza az Azure-erőforrásokat, és üzembe helyez egy mintaalkalmazást a Linuxon futó App Service-ben. Az oktatóanyagban használt lépések az App Service-t és az Azure Database for PostgreSQL-t tartalmazó, alapértelmezés szerint biztonságos erőforrások készletét hozzák létre.
Ha még nem tette meg, klónozza a mintaadattár ágát
starter-no-infra
egy helyi terminálban.git clone -b starter-no-infra https://github.com/Azure-Samples/msdocs-fastapi-postgresql-sample-app cd msdocs-fastapi-postgresql-sample-app
Ez a klónozott ág a kiindulópont. Egyszerű adatmeghajtó FastAPI-alkalmazást tartalmaz.
Az adattár gyökerében futtassa a
azd init
parancsot.azd init --template msdocs-fastapi-postgresql-sample-app
Amikor a rendszer kéri, adja meg a következő válaszokat:
Kérdés Válasz Az aktuális könyvtár nem üres. Inicializálni szeretne egy projektet itt a "saját könyvtárában<"?> Y Mit szeretne tenni ezekkel a fájlokkal? Meglévő fájljaim változatlanul tartása Adjon meg egy új környezetnevet Írjon be egy egyedi nevet. Az azd-sablon ezt a nevet használja a webalkalmazás DNS-nevének részeként az Azure-ban ( <app-name>.azurewebsites.net
). Alfanumerikus karakterek és kötőjelek engedélyezettek.Futtassa a
azd up
parancsot a szükséges Azure-erőforrások kiépítéséhez és az alkalmazáskód üzembe helyezéséhez. Ha még nem jelentkezett be az Azure-ba, a böngésző elindul, és megkéri, hogy jelentkezzen be. Aazd up
parancs arra is kéri, hogy válassza ki a kívánt előfizetést és helyet, ahová üzembe szeretne helyezni.azd up
A
azd up
parancs végrehajtása több percet is igénybe vehet. Emellett lefordítja és üzembe helyezi az alkalmazáskódot. Amíg fut, a parancs üzeneteket küld a kiépítési és üzembe helyezési folyamatról, beleértve az Azure-beli üzembe helyezésre mutató hivatkozást is. Amikor befejeződik, a parancs egy hivatkozást is megjelenít az üzembe helyezési alkalmazásra.Ez az azd-sablon olyan fájlokat (azure.yaml és infra könyvtár) tartalmaz, amelyek az alábbi Azure-erőforrásokkal létrehoznak egy alapértelmezett, biztonságos architektúrát:
- Az erőforráscsoport az összes létrehozott erőforrás tárolóját →.
- Az App Service-csomag → Az App Service számítási erőforrásait határozza meg. A B1 szinten egy Linux csomag van megadva.
- Az App Service → Az alkalmazást jelöli, és az App Service-csomagban fut.
- A virtuális hálózat → Integrálva van az App Service alkalmazással, és elkülöníti a háttérbeli hálózati forgalmat.
- Azure Database for PostgreSQL rugalmas kiszolgáló → Csak a virtuális hálózaton belülről érhető el. A rendszer létrehoz egy adatbázist és egy felhasználót a kiszolgálón.
- saját DNS zóna → Engedélyezi a PostgreSQL-kiszolgáló DNS-feloldását a virtuális hálózaton.
- A Log Analytics-munkaterület → Az alkalmazás céltárolójaként szolgál a naplók elküldéséhez, ahol a naplókat is lekérdezheti.
Amikor a
azd up
parancs befejeződik, jegyezze fel az előfizetés azonosítójának (Guid) értékeit, az App Service-t és az erőforráscsoportot a kimenetben. Ezeket a következő szakaszokban használhatja. A kimenet a következő (részleges) kimenethez hasonlóan fog kinézni: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. Ellenőrizze az adatbázis kapcsolati karaktersorát
Az azd sablon alkalmazásbeállításokként generálja a kapcsolati változókat. Az alkalmazásbeállítások egy módja annak, hogy a kapcsolati titkok ne szerepeljenek a kódtárban.
A
infra/resources.bicep
fájlban keresse meg az alkalmazás beállításait, majd aAZURE_POSTGRESQL_CONNECTIONSTRING
beállítását.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
tartalmazza az Azure Postgres-adatbázis kapcsolati sztring. Fel kell használnia a programkódjában, hogy kapcsolatot létesítsen vele. A környezeti változót használó kódot az src/fastapi/models.py találhatja meg: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. Az indítási parancs vizsgálata
Azure-alkalmazás Szolgáltatáshoz indítási parancs szükséges a FastAPI-alkalmazás futtatásához. Az azd-sablon beállítja önnek ezt a parancsot az App Service-példányban.
A fájlban
infra/resources.bicep
keresse meg a webhely deklarációját, majd keresse meg a beállítástappCommandLine
. Ez az indítási parancs beállítása.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' }
Az indítási parancs futtatja az src/entrypoint.sh fájlt. Vizsgálja meg a fájlban lévő kódot, és ismerje meg az App Service által az alkalmazás indításához futtatott parancsokat:
#!/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
Az appkonfigurációval és az App Service-ben való indítással kapcsolatos további információkért lásd: Linux Python-alkalmazás konfigurálása Azure-alkalmazás Service-hez.
4. Adatbázisséma létrehozása
Előfordulhat, hogy az előző szakaszban észrevette, hogy entrypoint.sh a következő sort tartalmazza: python3 src/fastapi_app/seed_data.py
. Ez a parancs migrálja az adatbázist. A mintaalkalmazásban csak a megfelelő táblák létrehozását biztosítja az adatbázisban. Nem tölti fel ezeket a táblákat adatokkal.
Ebben a szakaszban ezt a parancsot manuálisan fogja futtatni bemutató célokra. A virtuális hálózat által védett PostgreSQL-adatbázissal a parancs futtatásának legegyszerűbb módja az App Service-tárolóval folytatott SSH-munkamenet.
Használja az App Service értékét, amelyet korábban az azd kimenetben és az alább látható sablonban észlelt, az SSH-munkamenet URL-címének létrehozásához és a böngészőben való navigáláshoz:
https://<app-name>.scm.azurewebsites.net/webssh/host
Az SSH-terminálban futtassa a következőt
python3 src/fastapi_app/seed_data.py
: . Ha sikeres, az App Service sikeresen csatlakozik az adatbázishoz.Feljegyzés
Csak a fájlok
/home
módosításai őrizhetők meg az alkalmazás újraindítása után. A/home
-n kívüli változások nincsenek elmentve.
5. Nyissa meg az alkalmazást
Az azd kimenetben keresse meg az alkalmazás URL-címét, és keresse meg a böngészőben. Az URL-cím így néz ki az AZD-kimenetben:
Deploying services (azd deploy) (✓) Done: Deploying service web - Endpoint: https://<app-name>.azurewebsites.net/
Vegyen fel néhány éttermet a listára.
Gratulálunk, az Azure App Service-ben futtat egy webalkalmazást, biztonságos kapcsolattal az Azure Database for PostgreSQL-hez.
6. Diagnosztikai naplók streamelése
Azure-alkalmazás szolgáltatás naplókat rögzíthet az alkalmazással kapcsolatos problémák diagnosztizálásához. A kényelem érdekében az azd sablon már engedélyezte a helyi fájlrendszerbe való naplózást.
A mintaalkalmazás a Python standard kódtár naplózási modulját használja a naplók kimenetéhez. A mintaalkalmazás az alább látható módon meghívja a naplózót.
@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)
)
Az előzőleg az azd kimenetben és az alább látható sablonban feljegyzett Előfizetés-azonosító (GUID), Erőforráscsoport és App Service értékeivel hozza létre az App Service naplók streameléséhez és a böngészőben való navigáláshoz használt URL-címet.
https://portal.azure.com/#@/resource/subscriptions/<subscription-guid>/resourceGroups/<group-name>/providers/Microsoft.Web/sites/<app-name>/logStream
Az események több percig is eltarthatnak, amíg megjelennek a diagnosztikai naplókban. További információ a Python-alkalmazásokban való naplózásról a Python-alkalmazáshoz készült Azure Monitor beállításáról szóló sorozatból.
7. Erőforrások törlése
Az aktuális üzemi környezetben lévő összes Azure-erőforrás törléséhez futtassa a következőt azd down
:
azd down
Hibaelhárítás
Az alábbiakban azokat a problémákat soroljuk fel, amelyekkel az oktatóanyag és a megoldásuk lépései során találkozhat.
Nem tudok csatlakozni az SSH-munkamenethez
Ha nem tud csatlakozni az SSH-munkamenethez, akkor maga az alkalmazás nem indult el. Részletekért tekintse meg a diagnosztikai naplókat . Ha például egy hasonló KeyError: 'AZURE_POSTGRESQL_CONNECTIONSTRING'
hibaüzenet jelenik meg, az azt jelentheti, hogy a környezeti változó hiányzik (lehet, hogy eltávolította az alkalmazásbeállítást).
Hibaüzenet jelenik meg az adatbázis-migrálások futtatásakor
Ha bármilyen, az adatbázishoz való csatlakozással kapcsolatos hibát tapasztal, ellenőrizze, hogy módosultak-e az alkalmazás beállításai (AZURE_POSTGRESQL_CONNECTIONSTRING
). A kapcsolati sztring nélkül a migrálási parancs nem tud kommunikálni az adatbázissal.
Gyakori kérdések
- Mennyibe kerül ez a beállítás?
- Hogyan csatlakozni a virtuális hálózat mögött más eszközökkel védett PostgreSQL-kiszolgálóhoz?
- Hogyan működik a helyi alkalmazásfejlesztés a GitHub Actions használatával?
Mennyibe kerül ez a beállítás?
A létrehozott erőforrások díjszabása a következő:
- Az App Service-csomag a alap szinten jön létre és fel- vagy leskálázható. Lásd az App Service díjszabását.
- A Rugalmas PostgreSQL-kiszolgáló a legalacsonyabb, kipukkanható rétegben Standard_B1ms jön létre, a minimális tárterületmérettel, amely fel- vagy leskálázható. Tekintse meg az Azure Database for PostgreSQL díjszabását.
- A virtuális hálózat csak akkor számít fel díjat, ha nem konfigurál további funkciókat, például társviszony-létesítést. Tekintse meg az Azure Virtual Network díjszabását.
- A privát DNS-zóna kis díjat számít fel. Tekintse meg az Azure DNS díjszabását.
Hogyan csatlakozni a virtuális hálózat mögött más eszközökkel védett PostgreSQL-kiszolgálóhoz?
- A parancssori eszközről való alapszintű hozzáféréshez az alkalmazás SSH-termináljáról is futtatható
psql
. - Asztali eszközről való csatlakozáshoz a gépnek a virtuális hálózaton belül kell lennie. Ez lehet például egy Azure-beli virtuális gép, amely az egyik alhálózathoz csatlakozik, vagy egy helyszíni hálózat egy olyan gépe, amely helyek közötti VPN-kapcsolattal rendelkezik az Azure-beli virtuális hálózattal.
- Az Azure Cloud Shellt a virtuális hálózattal is integrálhatja.
Hogyan működik a helyi alkalmazásfejlesztés a GitHub Actions használatával?
Ha például az App Service automatikus munkafolyamat-fájlját használja, mindegyik git push
elindít egy új buildet és üzembe helyezést. A GitHub-adattár helyi klónjából elvégezheti a kívánt frissítéseket, és leküldheti a GitHubra. Példa:
git add .
git commit -m "<some-message>"
git push origin main
Következő lépések
Folytassa a következő oktatóanyaggal, amelyből megtudhatja, hogyan védheti meg az alkalmazást egyéni tartománnyal és tanúsítvánnyal.
Megtudhatja, hogyan futtatja az App Service a Python-alkalmazásokat: