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.
Yüksek oranda ölçeklenebilir, otomatik güncellemeli bir web barındırma hizmeti, Azure App Service tarafından Azure'da sağlanır. Ayrıca uygulamanız için Azure Database for PostgreSQL ve diğer Azure hizmetlerine erişimi güvenli hale getirmek için anahtar teslimi bir çözüm olan managed identity sağlar. App Service'teki yönetilen kimlikler, uygulamanızdaki ortam değişkenlerindeki kimlik bilgileri gibi gizli dizileri ortadan kaldırarak uygulamanızı daha güvenli hale getirir. Bu öğreticide aşağıdakilerin nasıl yapılacağını öğreneceksiniz:
- PostgreSQL veritabanı oluşturun.
- WAR paketlemesini kullanarak Tomcat'te Azure App Service için örnek uygulamayı dağıtın.
- PostgreSQL Veritabanı ile Microsoft Entra kimlik doğrulamasını kullanmak için bir Tomcat web uygulaması yapılandırın.
- Hizmet Bağlayıcısı'nı kullanarak Yönetilen Kimlik ile Postgre SQL Veritabanı'ye bağlanın.
Azure hesabınız yoksa başlamadan önce free hesabı oluşturun.
Önkoşullar
- Git
- Java Geliştirme Seti (JDK)
- Maven
- Azure CLI sürüm 2.45.0 veya üzeri.
Örnek uygulamayı kopyalama ve depoyu hazırlama
Örnek depoyu kopyalamak ve örnek uygulama ortamını ayarlamak için terminalinizde aşağıdaki komutları çalıştırın.
git clone https://github.com/Azure-Samples/Passwordless-Connections-for-Java-Apps
cd Passwordless-Connections-for-Java-Apps/Tomcat/
Azure Database for PostgreSQL oluşturun
Aboneliğinizde Postgres için Azure Veritabanı oluşturmak için bu adımları izleyin. Tomcat uygulaması bu veritabanına bağlanır ve çalıştırırken verilerini depolar ve uygulamayı nerede çalıştırdığınızdan bağımsız olarak uygulama durumunu kalıcı hale getirmektedir.
Azure CLI içinde oturum açın ve oturum açma kimlik bilgilerinize birden fazla abonelik bağlıysa, aboneliğinizi isteğe bağlı olarak seçin.
az login az account set --subscription <subscription-ID>Kaynak grubu adını not ederek bir Azure Kaynak Grubu oluşturun.
export RESOURCE_GROUP=<resource-group-name> export LOCATION=eastus az group create --name $RESOURCE_GROUP --location $LOCATIONbir Azure Database for PostgreSQL sunucusu oluşturun. Sunucu bir yönetici hesabıyla oluşturulur, ancak yönetim görevlerini gerçekleştirmek için Microsoft Entra yönetici hesabını kullanacağımız için kullanılmaz.
export POSTGRESQL_ADMIN_USER=azureuser # PostgreSQL admin access rights won't be used because Azure AD authentication is leveraged to administer the database. export POSTGRESQL_ADMIN_PASSWORD=<admin-password> export POSTGRESQL_HOST=<postgresql-host-name> # Create a PostgreSQL server. az postgres flexible-server create \ --resource-group $RESOURCE_GROUP \ --name $POSTGRESQL_HOST \ --location $LOCATION \ --admin-user $POSTGRESQL_ADMIN_USER \ --admin-password $POSTGRESQL_ADMIN_PASSWORD \ --public-access 0.0.0.0 \ --sku-name Standard_D2s_v3Uygulama için bir veritabanı oluşturun.
export DATABASE_NAME=checklist az postgres flexible-server db create \ --resource-group $RESOURCE_GROUP \ --server-name $POSTGRESQL_HOST \ --database-name $DATABASE_NAME
Uygulamayı App Service'e dağıtma
War dosyası oluşturmak ve WAR paketi kullanarak Tomcat'te Azure App Service dağıtmak için bu adımları izleyin.
Örnek uygulama WAR dosyasını oluşturabilen bir pom.xml dosyası içerir. Uygulamayı oluşturmak için aşağıdaki komutu çalıştırın.
mvn clean package -f pom.xmlTomcat 9.0 kullanarak Linux üzerinde bir Azure App Service kaynağı oluşturun.
export APPSERVICE_PLAN=<app-service-plan> export APPSERVICE_NAME=<app-service-name> # Create an App Service plan az appservice plan create \ --resource-group $RESOURCE_GROUP \ --name $APPSERVICE_PLAN \ --location $LOCATION \ --sku B1 \ --is-linux # Create an App Service resource. az webapp create \ --resource-group $RESOURCE_GROUP \ --name $APPSERVICE_NAME \ --plan $APPSERVICE_PLAN \ --runtime "TOMCAT:10.0-java11"WAR paketini App Service'e dağıtın.
az webapp deploy \ --resource-group $RESOURCE_GROUP \ --name $APPSERVICE_NAME \ --src-path target/app.war \ --type war
Postgres veritabanını kimlik bağlantısıyla bağlama
Ardından, Service Connector'ı kullanarak veritabanını bağlayın.
Azure CLI için Hizmet Bağlayıcısı parolasız uzantısını yükleyin:
az extension add --name serviceconnector-passwordless --upgrade
Ardından, Service Connector'ı kullanarak uygulamanızı sistem tarafından atanan yönetilen kimlikle postgres veritabanına bağlayın.
Bu bağlantıyı kurmak için az webapp connection create komutunu çalıştırın.
az webapp connection create postgres-flexible \
--resource-group $RESOURCE_GROUP \
--name $APPSERVICE_NAME \
--target-resource-group $RESOURCE_GROUP \
--server $POSTGRESQL_HOST \
--database $DATABASE_NAME \
--system-identity \
--client-type java
Bu komut, web uygulamanızla PostgreSQL sunucunuz arasında bir bağlantı oluşturur ve sistem tarafından atanan yönetilen kimlik aracılığıyla kimlik doğrulamasını yönetir.
Ardından Uygulama Ayarları'nı güncelleyin ve connection string'e eklentiyi ekleyin.
export AZURE_POSTGRESQL_CONNECTIONSTRING=$(\
az webapp config appsettings list \
--resource-group $RESOURCE_GROUP \
--name $APPSERVICE_NAME \
| jq -c -r '.[] \
| select ( .name == "AZURE_POSTGRESQL_CONNECTIONSTRING" ) \
| .value')
az webapp config appsettings set \
--resource-group $RESOURCE_GROUP \
--name $APPSERVICE_NAME \
--settings 'CATALINA_OPTS=-DdbUrl="'"${AZURE_POSTGRESQL_CONNECTIONSTRING}"'&authenticationPluginClassName=com.azure.identity.extensions.jdbc.postgresql.AzurePostgresqlAuthenticationPlugin"'
Örnek web uygulamasını test etme
Aşağıdaki komutu çalıştırarak uygulamayı test edin.
export WEBAPP_URL=$(az webapp show \
--resource-group $RESOURCE_GROUP \
--name $APPSERVICE_NAME \
--query defaultHostName \
--output tsv)
# Create a list
curl -X POST -H "Content-Type: application/json" -d '{"name": "list1","date": "2022-03-21T00:00:00","description": "Sample checklist"}' https://${WEBAPP_URL}/checklist
# Create few items on the list 1
curl -X POST -H "Content-Type: application/json" -d '{"description": "item 1"}' https://${WEBAPP_URL}/checklist/1/item
curl -X POST -H "Content-Type: application/json" -d '{"description": "item 2"}' https://${WEBAPP_URL}/checklist/1/item
curl -X POST -H "Content-Type: application/json" -d '{"description": "item 3"}' https://${WEBAPP_URL}/checklist/1/item
# Get all lists
curl https://${WEBAPP_URL}/checklist
# Get list 1
curl https://${WEBAPP_URL}/checklist/1
Kaynakları temizleme
Önceki adımlarda, bir kaynak grubunda Azure kaynakları oluşturdunuz. Gelecekte bu kaynaklara ihtiyaç duymayı beklemiyorsanız, Cloud Shell aşağıdaki komutu çalıştırarak kaynak grubunu silin:
az group delete --name myResourceGroup
Bu komutun çalıştırılması bir dakika sürebilir.
Sonraki adımlar
Geliştirici kılavuzunda App Service on Linux üzerinde Java uygulamaları çalıştırma hakkında daha fazla bilgi edinin.
App Service Linux geliştirme kılavuzunda Java
Özel bir etki alanı ve sertifikayla uygulamanızın güvenliğini sağlamayı öğrenin.