Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Azure App Service menyediakan layanan hosting web yang sangat mudah diskalakan dan memperbarui sendiri di Azure. Ini juga menyediakan identitas terkelola untuk aplikasi Anda, yang merupakan solusi siap pakai untuk mengamankan akses ke Azure Database untuk PostgreSQL dan layanan Azure lainnya. Identitas terkelola di App Service membuat aplikasi Anda lebih aman dengan menghilangkan rahasia dari aplikasi Anda, seperti kredensial dalam variabel lingkungan. Dalam tutorial ini, Anda akan belajar cara:
- Buat database PostgreSQL.
- Sebarkan aplikasi sampel untuk Azure App Service di Tomcat menggunakan kemasan WAR.
- Konfigurasikan aplikasi web Tomcat untuk menggunakan autentikasi Microsoft Entra dengan PostgreSQL Database.
- Sambungkan ke Database PostgreSQL dengan Identitas Terkelola menggunakan Konektor Layanan.
Jika Anda tidak memiliki akun Azure, buat akun free sebelum Memulai.
Prasyarat
- Git
- Java Development Kit (JDK)
- Maven
- Azure CLI versi 2.45.0 atau yang lebih tinggi.
Mengkloning aplikasi sampel dan menyiapkan repositori
Jalankan perintah berikut pada terminal Anda untuk mengkloning repositori sampel dan menyiapkan lingkungan aplikasi sampel.
git clone https://github.com/Azure-Samples/Passwordless-Connections-for-Java-Apps
cd Passwordless-Connections-for-Java-Apps/Tomcat/
Membuat Database Azure untuk PostgreSQL
Ikuti langkah-langkah ini untuk membuat Azure Database for Postgres di langganan Anda. Aplikasi Tomcat terhubung ke database ini dan menyimpan datanya saat berjalan, mempertahankan status aplikasi di mana pun Anda menjalankan aplikasi.
Masuk ke Azure CLI, dan jika diperlukan, atur langganan Anda jika Anda memiliki lebih dari satu yang terhubung dengan kredensial masuk Anda.
az login az account set --subscription <subscription-ID>Buat Grup Sumber Daya Azure, dengan mencatat nama grup sumber daya.
export RESOURCE_GROUP=<resource-group-name> export LOCATION=eastus az group create --name $RESOURCE_GROUP --location $LOCATIONBuat sebuah server Azure Database untuk PostgreSQL. Server dibuat dengan akun administrator, tetapi tidak digunakan karena kami akan menggunakan akun admin Microsoft Entra untuk melakukan tugas administratif.
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_v3Buat database untuk aplikasi.
export DATABASE_NAME=checklist az postgres flexible-server db create \ --resource-group $RESOURCE_GROUP \ --server-name $POSTGRESQL_HOST \ --database-name $DATABASE_NAME
Menyebarkan aplikasi ke App Service
Ikuti langkah-langkah ini untuk membangun file WAR dan menyebarkan ke Azure App Service di Tomcat menggunakan kemasan WAR.
Aplikasi sampel berisi file pom.xml yang dapat menghasilkan file WAR. Untuk membuat aplikasi, jalankan perintah berikut.
mvn clean package -f pom.xmlBuat sumber daya Azure App Service di Linux menggunakan Tomcat 9.0.
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"Sebarkan paket WAR ke App Service.
az webapp deploy \ --resource-group $RESOURCE_GROUP \ --name $APPSERVICE_NAME \ --src-path target/app.war \ --type war
Menyambungkan database Postgres dengan konektivitas identitas
Selanjutnya, sambungkan database menggunakan Konektor Layanan.
Instal ekstensi tanpa kata sandi Konektor Layanan untuk Azure CLI:
az extension add --name serviceconnector-passwordless --upgrade
Kemudian, sambungkan aplikasi Anda ke database Postgres dengan identitas terkelola yang ditetapkan sistem menggunakan Konektor Layanan.
Untuk membuat koneksi ini, jalankan perintah az webapp connection create .
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
Perintah ini membuat koneksi antara aplikasi web dan server PostgreSQL Anda, dan mengelola autentikasi melalui identitas terkelola yang ditetapkan sistem.
Selanjutnya, perbarui Pengaturan Aplikasi dan tambahkan plugin di connection string
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"'
Menguji sampel aplikasi web
Uji aplikasi dengan menjalankan perintah berikut.
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
Membersihkan sumber daya
Pada langkah-langkah sebelumnya, Anda membuat sumber daya Azure dalam kelompok sumber daya. Jika Anda tidak mengharapkan untuk membutuhkan sumber daya ini di masa mendatang, hapus grup sumber daya dengan menjalankan perintah berikut di Cloud Shell:
az group delete --name myResourceGroup
Perintah ini mungkin perlu waktu satu menit untuk dijalankan.
Langkah selanjutnya
Pelajari selengkapnya tentang menjalankan aplikasi Java di App Service on Linux di panduan pengembang.
Pelajari cara mengamankan aplikasi Anda dengan domain dan sertifikat kustom.