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 megtudhatja, hogyan helyezhet üzembe adatvezérelt Python Django-webalkalmazást Azure App Service és a Service Connector használatával más Azure szolgáltatásokhoz való csatlakozáshoz. A minta webalkalmazás egy Azure Database for PostgreSQL-adatbázisban tárolja az éttermi és az áttekintési információkat, és egy Azure Storage tárolóban tárolja a fényképeket.
A Azure CLI a következő feladatokat hajtja végre:
- Hozzon létre egy Python Django webalkalmazást, és telepítse Azure App Service.
- Hozzon létre egy Azure Database for PostgreSQL rugalmas kiszolgálót és adatbázist.
- Hozzon létre egy Azure Storage fiókot és tárolót.
- Csatlakoztassa a webalkalmazást az adatbázishoz és a tárolóhoz a Service Connector használatával felügyelt identitáshitelesítéssel.
- A webalkalmazás használata.
Feljegyzés
Ez az oktatóanyag hasonló az App Service Python Django webalkalmazás telepítése a PostgreSQL-lel az Azure-ban oktatóanyaghoz, de a rendszer által hozzárendelt jelszó nélküli felügyelt identitást használja Azure szerepköralapú hozzáférés-vezérléssel más Azure erőforrások elérésére. A cikk jelszó nélküli szolgáltatáskapcsolat létrehozása szakasza bemutatja, hogyan egyszerűsíti a Service Connector a csatlakozási folyamatot.
A webalkalmazás a Python
Előfeltételek
Az oktatóanyag erőforrásaihoz írási és szerepkör-hozzárendelési engedélyekkel rendelkező Azure előfizetés egy Azure régióban, amely támogatja a Service Connectort, és rendelkezik elegendő App Service-támogatással és -kvótával.
Azure Cloud Shell az oktatóanyag lépéseinek futtatásához, vagy ha inkább helyileg szeretne futtatni:
- Telepítse a Azure CLI 2.30.0-s vagy újabb verzióját. A verzió ellenőrzéséhez futtassa a következőt
az --version: . A frissítéshez futtassa a következőtaz upgrade: . - Jelentkezzen be a Azure a
az loginhasználatával, és kövesse az utasításokat.
- Telepítse a Azure CLI 2.30.0-s vagy újabb verzióját. A verzió ellenőrzéséhez futtassa a következőt
Saját környezet beállítása
Győződjön meg arról, hogy az előfizetés regisztrálva van a
Microsoft.ServiceLinkerésMicrosoft.DBforPostgreSQLerőforrás-szolgáltatók használatára. Ha nem, futtassaaz provider register -n Microsoft.[name of service]a szolgáltatók regisztrálásához.Telepítse a következő Azure CLI bővítményeket:
az extension add --name serviceconnector-passwordless --upgrade az extension add --name rdbms-connect
A mintaalkalmazás klónozása
Klónozza a mintaalkalmazás-adattárat.
git clone https://github.com/Azure-Samples/serviceconnector-webapp-postgresql-django-passwordless.gitMásik lehetőségként letöltheti az alkalmazást a https://github.com/Azure-Samples/serviceconnector-webapp-postgresql-django-passwordless fájlból, és kibonthatja egy serviceconnector-webapp-postgresql-django-passwordless nevű mappába.
Váltson könyvtárat a tároló mappájába
cd serviceconnector-webapp-postgresql-django-passwordlesssegítségével, és onnan futtassa az összes további parancsot.
A mintaalkalmazásban a webalkalmazás éles beállításai az azuresite/production.py fájlban találhatók. A fejlesztési beállítások az azuresite/settings.py találhatók. Az élesbeállítások úgy konfigurálják a Django-t, hogy bármilyen gyártási környezetben fusson, és nem az App Service-re vonatkoznak.
Amikor a WEBSITE_HOSTNAME környezeti változó be van állítva, az alkalmazás gyártási beállításokat használ. Azure Postgres kapcsolati sztringek esetén az App Service automatikusan beállítja ezt a változót a webalkalmazás URL-címére, például https://msdocs-django.azurewebsites.net.
További információt a Django üzembehelyezési ellenőrzőlistájában talál. Lásd még a Produkciós beállításokat a Django és Azure számára.
Kezdeti környezeti változók definiálása
Az alábbi kód határozza meg az oktatóanyaghoz szükséges környezeti változókat.
-
LOCATIONolyan Azure régiónak kell lennie, ahol az előfizetés elegendő kvótával rendelkezik az erőforrások létrehozásához, és ahol az Azure nem korlátozza az Azure Database for PostgreSQL használatát az előfizetésre nézve. - A
ADMIN_PWnégy kategória közül legalább háromban 8–128 karakternek kell szerepelnie, kivéve$a kisbetűket, a számokat és a nonalphanumerikus karaktereket.
Állítsa be a következő környezeti változókat, és
<region>cserélje le a<database password>helyőrzőket érvényes értékekkel.LOCATION="<region>" RAND_ID=$RANDOM RESOURCE_GROUP_NAME="msdocs-mi-web-app" APP_SERVICE_NAME="msdocs-mi-web-$RAND_ID" DB_SERVER_NAME="msdocs-mi-postgres-$RAND_ID" ADMIN_USER="demoadmin" ADMIN_PW="<database password>"Hozzon létre egy erőforráscsoportot , amely az összes projekterőforrást tartalmazza. A rendszer gyorsítótárazza az erőforráscsoport nevét, és automatikusan alkalmazza a következő parancsokra.
az group create --name $RESOURCE_GROUP_NAME --location $LOCATION
Az alkalmazáskód üzembe helyezése az App Service-ben
Hozza létre az app-gazdagépet az App Service-ben, és helyezze üzembe a mintaalkalmazás-kódot az adott gazdagépen. A az webapp up parancs a következő műveleteket hajtja végre:
- Létrehoz egy App Service-csomagot az alapszintű (B1) tarifacsomagban.
- Létrehozza az App Service-alkalmazást.
- Engedélyezi az alkalmazás alapértelmezett naplózását.
- Feltölti az adattárat ZIP-telepítéssel, és engedélyezve van a buildautomatizálás.
- Létrehozza az alkalmazást.
A kódban a sku rendszer meghatározza az App Service-csomag processzorát, memóriáját és költségét. Az alapszintű (B1) szolgáltatáscsomag kis költséget von maga után Azure előfizetésében. Elhagyhatja a --sku paramétert az alapértelmezett termékváltozat használatához, amely általában a P1v3 (Premium v3). Az App Service-csomagok teljes listáját az App Service díjszabásában találja.
A serviceconnector-webapp-postgresql-django-passwordless adattár mappában futtassa a következő
az webapp upparancsot:az webapp up \ --resource-group $RESOURCE_GROUP_NAME \ --location $LOCATION \ --name $APP_SERVICE_NAME \ --runtime PYTHON:3.10 \ --sku B1Feljegyzés
Az üzembe helyezés néhány percet vesz igénybe, és a parancs lefagyhat vagy időtúllépést okozhat, különösen egy alapszintű termékváltozaton. Miután az alkalmazás sikeresen elkészült, és a kimenet megjelenik
Starting the site, a Ctrl+C billentyűkombinációval kiléphet a parancsból.Konfigurálja az alkalmazást az adattár start.sh fájl használatára az az webapp config set parancs futtatásával.
az webapp config set \ --resource-group $RESOURCE_GROUP_NAME \ --name $APP_SERVICE_NAME \ --startup-file "start.sh"
A Postgres-adatbázis létrehozása a Azure
Hozza létre a Azure Database for PostgreSQL adatbázist az alkalmazásadatok tárolásához. A az postgres flexible-server create parancs létrehoz egy Azure Database for PostgreSQL rugalmas kiszolgálót a megadott erőforráscsoportban.
- A paraméterben
--namemegadott kiszolgálónév. A névnek minden Azure egyedinek kell lennie. - A paraméterben
--sku-namemegadott termékváltozat. - A rendszergazdai fiók felhasználóneve és jelszava a
--admin-userés--admin-passwordparaméterekben van megadva.
Hozza létre a Azure Database for PostgreSQL kiszolgálót. Ha a rendszer arra kéri, hogy engedélyezze az aktuális ügyfél IP-címéhez való hozzáférést, adja meg
yaz igent.az postgres flexible-server create \ --resource-group $RESOURCE_GROUP_NAME \ --name $DB_SERVER_NAME \ --location $LOCATION \ --admin-user $ADMIN_USER \ --admin-password $ADMIN_PW \ --sku-name Standard_D2ds_v4 \ --microsoft-entra-auth EnabledHa a rendszer nem kéri az aktuális ügyfél IP-címhez való hozzáférés engedélyezését, konfiguráljon egy tűzfalszabályt a kiszolgálón az az postgres flexible-server firewall-rule create paranccsal. Ez a szabály lehetővé teszi a helyi környezet számára a kiszolgálóhoz való hozzáférést.
IP_ADDRESS=<your IP address> az postgres flexible-server firewall-rule create \ --resource-group $RESOURCE_GROUP_NAME \ --name $DB_SERVER_NAME \ --rule-name AllowMyIP \ --start-ip-address $IP_ADDRESS \ --end-ip-address $IP_ADDRESSJótanács
Használjon bármilyen eszközt vagy webhelyet, amely az IP-címét jeleníti meg, hogy azt a
<your IP address>helyére helyettesítse a parancsban. Használhatja például a What's My IP Address?-t.Hozzon létre egy, a kiszolgálón elnevezett
restaurantadatbázist az az postgres flexible-server execute paranccsal.az postgres flexible-server execute \ --name $DB_SERVER_NAME \ --admin-user $ADMIN_USER \ --admin-password $ADMIN_PW \ --database-name postgres \ --querytext 'create database restaurant;'
Jelszó nélküli szolgáltatáskapcsolat létrehozása
az webapp connection create postgres-flexible használatával hozzon létre egy szolgáltatás-összekötőt, amely az Azure webalkalmazást jelszó nélküli felügyelt identitás-hitelesítéssel csatlakoztatja a Postgres-adatbázishoz. Az alábbi parancs Azure Database for PostgreSQL konfigurálja a felügyelt identitás és Azure szerepköralapú hozzáférés-vezérlés használatára. A parancs kimenete felsorolja a Service Connector által végrehajtott műveleteket.
A parancs létrehoz egy környezeti változót, amely AZURE_POSTGRESQL_CONNECTIONSTRING megadja az alkalmazás adatbázis-kapcsolati adatait. Az alkalmazáskód olyan utasításokkal fér hozzá az alkalmazáskörnyezet változóihoz, mint a os.environ.get('AZURE_POSTGRESQL_HOST'). További információ: Access környezeti változók.
az webapp connection create postgres-flexible \
--resource-group $RESOURCE_GROUP_NAME \
--name $APP_SERVICE_NAME \
--target-resource-group $RESOURCE_GROUP_NAME \
--server $DB_SERVER_NAME \
--database restaurant \
--client-type python \
--system-identity
Tárfiók létrehozása és csatlakoztatása
az webapp connection create storage-blob parancsot használja egy Azure Storage-fiók és egy szolgáltatás-összekötő létrehozásához. A parancs a következő műveleteket hajtja végre:
- Engedélyezi a rendszer által hozzárendelt felügyelt identitást a webalkalmazásban.
- Hozzáadja a webalkalmazást az Storage Blob Data Contributor szerepkörrel az új tárfiókhoz.
- A tárfiók-hálózatot úgy konfigurálja, hogy a webalkalmazásból fogadja el a hozzáférést.
- Létrehoz egy
AZURE_STORAGEBLOB_RESOURCEENDPOINTnevű környezeti változót a Azure Storage-fiókhoz.
Futtassa a következő parancsot a tárfiók és a kapcsolat létrehozásához:
STORAGE_ACCOUNT_URL=$(az webapp connection create storage-blob \ --new true \ --resource-group $RESOURCE_GROUP_NAME \ --name $APP_SERVICE_NAME \ --target-resource-group $RESOURCE_GROUP_NAME \ --client-type python \ --system-identity \ --query configurations[].value \ --output tsv) STORAGE_ACCOUNT_NAME=$(cut -d . -f1 <<< $(cut -d / -f3 <<< $STORAGE_ACCOUNT_URL))Frissítse a tárfiókot, hogy az alkalmazás felhasználói nyilvánosan hozzáférhessenek a blobokhoz a fényképek eléréséhez.
az storage account update \ --name $STORAGE_ACCOUNT_NAME \ --allow-blob-public-accessAz az storage container create használatával hozzon létre egy tárolót
photosa tárfiókban, és engedélyezze a névtelen nyilvános olvasási hozzáférést a blobokhoz az új tárolóban.# Set the BLOB_ENDPOINT variable BLOB_ENDPOINT=$(az storage account show --name $STORAGE_ACCOUNT_NAME --query "primaryEndpoints.blob" | sed 's/"//g') echo $BLOB_ENDPOINT # Create the storage container using the BLOB_ENDPOINT variable az storage container create \ --account-name $STORAGE_ACCOUNT_NAME \ --name photos \ --public-access blob \ --auth-mode login \ --blob-endpoint $BLOB_ENDPOINT
A Python webalkalmazás tesztelése a Azure
Nyissa meg és tesztelje a Azure Restaurant Review webalkalmazást. Az alkalmazás az azure.identity csomagot és annak osztályát DefaultAzureCredential használja. Amikor az alkalmazás Azure fut, a DefaultAzureCredential automatikusan észleli, hogy az App Service-hez létezik-e felügyelt identitás, és ezzel éri el a Azure Storage és Azure Database for PostgreSQL erőforrásokat. Az alkalmazásnak nem kell megadnia a tárkulcsokat, tanúsítványokat vagy hitelesítő adatokat az erőforrások eléréséhez.
Helyi Azure CLI telepítés esetén a
az webapp browsehasználatával megnyithatja az alkalmazást az alapértelmezett böngészőben:az webapp browse --name $APP_SERVICE_NAME.azurewebsites.net --resource-group $RESOURCE_GROUP_NAMEAzure Cloud Shell nem tud megnyitni egy helyi böngészőt, ezért nem támogatja a
az webapp browseparancsot. A Cloud Shell-ből a webalkalmazást a legegyszerűbben az alkalmazás Azure portállapjának jobb felső sarkában található Default domain hivatkozás kiválasztásával lehet megnyitni.
Az alkalmazás indítása akár egy-két percet is igénybe vehet. Ha olyan alapértelmezett alkalmazásoldalt lát, amely nem a mintaalkalmazás, várjon egy percet, és frissítse a böngészőt.
Tesztelje a mintaalkalmazás funkcióit egy étterem hozzáadásával és néhány fényképes értékeléssel. Az alkalmazásnak az alábbi képernyőképhez kell hasonlítania:
Az erőforrások tisztítása
A folyamatban lévő díjak elkerülése érdekében törölheti az oktatóanyaghoz létrehozott erőforrásokat az őket tartalmazó erőforráscsoport törlésével. A parancs futtatása előtt győződjön meg arról, hogy már nincs szüksége az alkalmazásra vagy az erőforrásokra.
az group delete --name $RESOURCE_GROUP_NAME --no-wait
Az összes erőforrás törlése eltarthat egy ideig. Az --no-wait argumentum lehetővé teszi, hogy a parancs azonnal visszatérjen.
Hibaelhárítás
Ha problémái vannak az oktatóanyag futtatásával, tekintse meg a következő erőforrásokat:
Kapcsolódó tartalom
- Gyorsútmutató: Az Azure App Service csatlakoztatása adatbázisokhoz és szolgáltatásokkal a Service Connector használatával
- Szolgáltatáskapcsolatok létrehozása IaC-eszközökkel
A Python Django-webalkalmazás üzembe helyezése a PostgreSQL-lel a Azure