Öğretici: Linux ve MySQL üzerinde Azure Uygulaması Hizmeti ile JBoss web uygulaması oluşturma
Bu öğreticide, MySQL veritabanına bağlanan (MySQL için Azure Veritabanı kullanarak) Azure Uygulaması Hizmetinde güvenli bir JBoss uygulamasının nasıl derlendiğini, yapılandırılacağı ve dağıtılacağı gösterilmektedir. Azure Uygulaması Hizmeti, Windows veya Linux'ta kolayca uygulama dağıtabilen yüksek oranda ölçeklenebilir, kendi kendine düzeltme eki uygulamalı bir web barındırma hizmetidir. İşiniz bittiğinde, Linux üzerinde Azure Uygulaması Hizmeti üzerinde çalışan bir JBoss uygulamanız olur.
Bu öğreticide aşağıdakilerin nasıl yapılacağını öğreneceksiniz:
- Azure Uygulaması Hizmeti ve MySQL için Azure Veritabanı Esnek Sunucu için varsayılan olarak güvenli bir mimari oluşturun.
- Parolasız bağlantı dizesi kullanarak veritabanı bağlantısının güvenliğini sağlayın.
- JBoss CLI kullanarak App Service'te JBoss veri kaynaklarını doğrulayın.
- GitHub deposundan App Service'e bir JBoss örnek uygulaması dağıtın.
- Uygulama kodunda App Service uygulama ayarlarına erişin.
- Güncelleştirmeler yapın ve uygulama kodunu yeniden dağıtın.
- Tanılama günlüklerini App Service'ten akışla aktarabilirsiniz.
- Uygulamayı Azure portalında yönetin.
- Azure Geliştirici CLI'sını kullanarak aynı mimariyi sağlayın ve dağıtın.
- GitHub Codespaces ve GitHub Copilot ile geliştirme iş akışınızı iyileştirin.
Önkoşullar
- Etkin aboneliği olan bir Azure hesabı. Azure hesabınız yoksa ücretsiz olarak bir hesap oluşturabilirsiniz.
- Bir GitHub hesabı. Ücretsiz olarak da bir tane alabilirsiniz.
- JBoss geliştirme ile Java bilgisi.
- (İsteğe bağlı) GitHub Copilot hesabı olan GitHub Copilot'ı denemek için. 30 günlük ücretsiz deneme sürümü mevcuttur.
- Etkin aboneliği olan bir Azure hesabı. Azure hesabınız yoksa ücretsiz olarak bir hesap oluşturabilirsiniz.
- Azure Geliştirici CLI'sı yüklü. Azure Geliştirici CLI'sı zaten yüklü olduğundan Azure Cloud Shell ile adımları izleyebilirsiniz.
- JBoss geliştirme ile Java bilgisi.
- (İsteğe bağlı) GitHub Copilot hesabı olan GitHub Copilot'ı denemek için. 30 günlük ücretsiz deneme sürümü mevcuttur.
Sona atla
Bu öğreticide örnek uygulamayı hızla dağıtabilir ve Azure'da çalıştığını görebilirsiniz. Azure Cloud Shell'de aşağıdaki komutları çalıştırmanız ve istemi izlemesi gerekir:
mkdir msdocs-jboss-mysql-sample-app
cd msdocs-jboss-mysql-sample-app
azd init --template msdocs-jboss-mysql-sample-app
azd up
1. Örneği çalıştırın
İlk olarak, başlangıç noktası olarak örnek bir veri temelli uygulama ayarlarsınız. Kolaylık sağlamak için örnek depo bir geliştirme kapsayıcısı yapılandırması içerir. Geliştirme kapsayıcısı veritabanı, önbellek ve örnek uygulamanın ihtiyaç duyduğu tüm ortam değişkenleri dahil olmak üzere bir uygulama geliştirmek için ihtiyacınız olan her şeye sahiptir. Geliştirme kapsayıcısı GitHub kod alanında çalıştırılabilir; başka bir deyişle örneği web tarayıcısıyla herhangi bir bilgisayarda çalıştırabilirsiniz.
1. Adım: Yeni bir tarayıcı penceresinde:
- GitHub hesabınıza giriş yapın.
- Şuraya gidin: https://github.com/Azure-Samples/msdocs-jboss-mysql-sample-app/fork
- Yalnızca ana dalı kopyala seçimini kaldırın. Tüm dalları istiyorsun.
- Çatal oluştur'u seçin.
2. Adım: GitHub çatalında:
- Başlangıç dalı için main>starter-no-infra öğesini seçin. Bu dal yalnızca örnek projeyi içerir ve Azure ile ilgili dosya veya yapılandırma içermez. Starter-no-infra üzerinde Kod>Oluştur kod alanı'na tıklayın. Kod alanının ayarlanması birkaç dakika sürer.
3. Adım: Codespace terminalinde:
-
mvn clean wildfly:run
'i çalıştırın. - bildirimini
Your application running on port 8080 is available.
gördüğünüzde, WildFly sunucusunun uygulamayı yüklemeyi bitirmesi için birkaç saniye daha bekleyin. Ardından Tarayıcıda Aç'ı seçin. Örnek uygulamayı yeni bir tarayıcı sekmesinde görmeniz gerekir. WildFly sunucusunu durdurmak için yazınCtrl
+C
.
İpucu
GitHub Copilot'a bu depo hakkında soru sorabilirsiniz. Örneğin:
- @workspace Bu proje ne yapar?
- @workspace .devcontainer klasörü ne yapar?
Sorun mu yaşıyorsunuz? Sorun Giderme bölümüne bakın.
2. App Service ve MySQL oluşturma
İlk olarak Azure kaynaklarını oluşturursunuz. Bu öğreticide kullanılan adımlar, App Service ve MySQL 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ı. Uygulamanızın DNS adının bir parçası olarak biçiminde
https://<app-name>-<hash>.<region>.azurewebsites.net
kullanılır. - Uygulamayı dünyada fiziksel olarak çalıştırılacak Bölge. Ayrıca uygulamanızın DNS adının bir parçası olarak da kullanılır.
- Uygulamanın Çalışma Zamanı yığını . Burası, uygulamanız için kullanılacak Java 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.
- Uygulamanın Kaynak Grubu . Kaynak grubu, uygulama için gereken tüm Azure kaynaklarını gruplandırmanıza (mantıksal bir kapsayıcıda) olanak tanır.
Azure portalında oturum açın ve Azure Uygulaması Hizmeti kaynaklarınızı oluşturmak için bu adımları izleyin.
1. Adım: Azure portalında:
2. Adım:Web Uygulaması Oluştur sayfasında, formu aşağıdaki gibi doldurun.
- Ad: msdocs-jboss-mysql. Sizin için msdocs-jboss-mysql_group adlı bir kaynak grubu oluşturulur.
- Çalışma zamanı yığını: Java 17.
- Java web sunucusu yığını: Red Hat JBoss EAP 8. Red Hat aboneliğinizi Azure ile yapılandırdıysanız Red Hat JBoss EAP 8 BYO Lisansı'yı seçin.
- Bölge: Size yakın herhangi bir Azure bölgesi.
- Linux Planı: Yeni oluşturun ve msdocs-jboss-mysql adını kullanın.
- Fiyatlandırma planı: Premium V3 P0V3. Hazır olduğunuzda ölçeği farklı bir fiyatlandırma katmanına artırabilirsiniz.
- Uygulamanızla dağıtma: Veritabanı'nı seçin. MySQL için Azure Veritabanı - Esnek Sunucu varsayılan olarak sizin için seçilir. Azure'da hizmet olarak tam olarak yönetilen bir MySQL veritabanıdır ve en son topluluk sürümleriyle uyumludur.
- Gözden geçir ve oluştur’u seçin.
- 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 katmanda bir Linux planı oluşturulur.
- App Service: Uygulamanızı temsil eder ve App Service planında çalışır.
- Sanal ağ: App Service uygulamasıyla tümleştirilmiş ve arka uç ağ trafiğini yalıtıyor.
- MySQL için Azure Veritabanı Esnek Sunucu: Yalnızca sanal ağdan erişilebilir. Sunucuda sizin için bir veritabanı ve kullanıcı oluşturulur.
- Özel DNS bölgeleri: Sanal ağdaki veritabanı sunucusunun DNS çözümlemesini etkinleştirin.
- Özel uç noktalar: Sanal ağdaki veritabanı sunucusu için erişim uç noktaları.
Sorun mu yaşıyorsunuz? Sorun Giderme bölümüne bakın.
3. Parolasız bağlantı oluşturma
Bu adımda, daha sonra JBoss sunucunuzda bir veri kaynağı oluşturmak için kullanabileceğiniz yönetilen kimlik tabanlı bir hizmet bağlantısı oluşturursunuz. MySQL veritabanına bağlanmak için yönetilen kimlik kullanarak kodunuz yanlışlıkla gizli dizi sızıntılarına karşı güvende olur.
1. Adım: Yönetilen kimlik oluşturma.
- Üstteki arama çubuğuna yönetilen kimlik yazın.
- Hizmetler başlığı altında Yönetilen Kimlikler etiketli öğeyi seçin.
- Oluştur'u belirleyin.
- Kaynak grubunda msdocs-jboss-mysql_group öğesini seçin.
- Bölge'de, web uygulamanız için kullandığınız bölgeyi seçin.
- Ad alanına msdocs-jboss-mysql-server-identity yazın.
- Gözden geçir ve oluştur’u seçin.
- Oluştur'u belirleyin.
2. Adım: MySQL sunucusunda Microsoft Entra kimlik doğrulamasını etkinleştirin.
- Üst arama çubuğuna msdocs-jboss-mysql-server yazın.
- msdocs-jboss-mysql-server adlı MySQL için Azure Veritabanı Esnek Sunucu kaynağını seçin.
- Sol menüden Güvenlik>Kimlik Doğrulaması'nı seçin.
- Erişim ata bölümünde Yalnızca Microsoft Entra kimlik doğrulamasını seçin.
- Kullanıcı tarafından atanan yönetilen kimlik bölümünde Seç'i seçin.
- msdocs-jboss-mysql-server-identity öğesini ve ardından Ekle'yi seçin. Kimliğin MySQL sunucusuna atanmış olması biraz zaman alır.
- Microsoft Entra Yönetici Adı'nda Seç'i seçin.
- Azure hesabınızı bulun ve seçin, ardından Seç'i seçin.
- Kaydet'i seçin ve işlemin tamamlanmasını bekleyin.
3. Adım: Yönetilen kimlik tabanlı hizmet bağlayıcısı ekleme.
- Üst arama çubuğuna msdocs-jboss-mysql yazın.
- msdocs-jboss-mysql adlı App Service kaynağını seçin.
- App Service sayfasındaki sol menüde Ayarlar > Hizmet Bağlayıcısı'nı seçin.
- Oluştur'u belirleyin.
- Temel Bilgiler sekmesinde:
- Hizmet türünü MySQL için DB esnek sunucusu olarak ayarlayın.
- MySQL esnek sunucusunu msdocs-jboss-mysql-server olarak ayarlayın.
- MySQL veritabanını msdocs-jboss-mysql-database olarak ayarlayın.
- İstemci türünü Java olarak ayarlayın.
- Kimlik Doğrulaması sekmesini seçin.
- Sistem tarafından atanan yönetilen kimlik'i seçin.
- Gözden Geçir + Oluştur sekmesini seçin.
- Doğrulama tamamlandığında Cloud Shell'de oluştur'u seçin ve Cloud Shell'de işlemin tamamlanmasını bekleyin.
- Çıkış JSON'unu gördüğünüzde Cloud Shell'i kapatabilirsiniz. Ayrıca, Bağlantı oluştur iletişim kutusunu kapatın.
- Yeni hizmet bağlayıcısını göstermek için Yenile'yi seçin.
4. Adım: bağlantı dizesi kimlik doğrulama eklentileri ekleyin.
- Soldaki menüden Ortam değişkenleri'ni seçin.
- AZURE_MYSQL_CONNECTIONSTRING'ı seçin.
Değer alanı bir
user
içermelidir, ancak içermemelidirpassword
. Kullanıcı yönetilen bir kimliktir. - App Service uygulamanızdaki JBoss sunucusunda kimlik doğrulama eklentileri yönetilen kimliğin kimliğini doğrular ancak yine de bağlantı dizesi eklemeniz gerekir. Değerinin sonuna kadar kaydırın ve öğesini ekleyip yazın
&defaultAuthenticationPlugin=com.azure.identity.extensions.jdbc.mysql.AzureMysqlAuthenticationPlugin&authenticationPlugins=com.azure.identity.extensions.jdbc.mysql.AzureMysqlAuthenticationPlugin
. - Uygula’yı seçin.
- Uygula'yı ve ardından Onayla'yı seçin.
Sorun mu yaşıyorsunuz? Sorun Giderme bölümüne bakın.
4. JNDI veri kaynağını onaylayın
Oracle, SQL Server, PostgreSQL veya MySQL için geçerli bir JDBC bağlantı dizesi içeren bir uygulama ayarı eklerseniz, App Service bunun için JBoss sunucusuna bir Java Adlandırma ve Dizin Arabirimi (JNDI) veri kaynağı ekler. Bu adımda, JNDI veri kaynağını doğrulamak için uygulama kapsayıcısına SSH bağlantısını kullanırsınız. Bu süreçte SSH kabuğuna erişmeyi ve JBoss CLI'yi çalıştırmayı öğreneceksiniz.
1. Adım: App Service sayfasına geri dönün:
- Sol menüde Geliştirme Araçları > SSH'yi seçin.
- Git'i seçin.
2. Adım: SSH terminalinde:
-
$JBOSS_HOME/bin/jboss-cli.sh --connect
'i çalıştırın. - JBoss CLI bağlantısında komutunu çalıştırın
ls subsystem=datasources/data-source
. AdlıAZURE_MYSQL_CONNECTIONSTRING_DS
otomatik olarak oluşturulan veri kaynağını görmeniz gerekir. - ile
/subsystem=datasources/data-source=AZURE_MYSQL_CONNECTIONSTRING_DS:read-attribute(name=jndi-name)
veri kaynağının JNDI adını alın. Artık daha sonra uygulama kodunuzda kullanabileceğiniz bir JNDI adınızjava:jboss/env/jdbc/AZURE_MYSQL_CONNECTIONSTRING_DS
vardır.
Not
Yalnızca içindeki dosyalarda /home
yapılan değişiklikler uygulama yeniden başlatmalarının ötesinde kalıcı olabilir. Örneğin, JBoss CLI'da sunucu yapılandırmasını düzenler /opt/eap/standalone/configuration/standalone.xml
veya değiştirirseniz, değişiklikler uygulamanın yeniden başlatılmasının ötesinde kalıcı olmaz. Değişikliklerinizi kalıcı hale getirmek için, Tomcat, JBoss veya Java SE uygulaması için veri kaynaklarını yapılandırma Azure Uygulaması Hizmeti'nde gösterildiği gibi bir başlangıç betiği kullanın
Sorun mu yaşıyorsunuz? Sorun Giderme bölümüne bakın.
5. Örnek kodu dağıtma
Bu adımda GitHub Actions'ı kullanarak GitHub dağıtımını yapılandıracaksınız. App Service'e dağıtmanın birçok yolundan yalnızca biridir, aynı zamanda dağıtım sürecinizde sürekli tümleştirmeye sahip olmanın harika bir yoludur. Varsayılan olarak, GitHub deponuzun her git push
örneği derleme ve dağıtma eylemini başlatıyor.
JBoss kuralında olduğu gibi, JBoss'un kök bağlamını dağıtmak istiyorsanız, yerleşik yapıtınızı ROOT.war olarak adlandırın.
1. Adım: App Service sayfasının sol menüsünde Dağıtım > Dağıtım Merkezi'ni seçin.
2. 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ızda oturum açın ve Azure'ı yetkilendirme istemini izleyin.
- Kuruluş'ta hesabınızı seçin.
- Depo'da msdocs-jboss-mysql-sample-app öğesini seçin.
- Branch'te starter-no-infra'yı seçin. Bu, Azure ile ilgili dosyalar veya yapılandırmalar olmadan örnek uygulamanızla birlikte çalıştığınız dalla aynıdır.
- Kimlik doğrulama türü için Kullanıcı tarafından atanan kimlik'i seçin.
- Üstteki menüde Kaydet'i seçin. App Service,
.github/workflows
dizinde seçilen GitHub deposuna bir iş akışı dosyası işler. Varsayılan olarak, dağıtım merkezi Microsoft Entra (OIDC kimlik doğrulaması) kullanarak kimlik doğrulaması yapmak üzere iş akışı için kullanıcı tarafından atanan bir kimlik oluşturur. Alternatif kimlik doğrulama seçenekleri için bkz . GitHub Actions kullanarak App Service'e dağıtma.
3. Adım: Örnek çatalınızın GitHub kod alanında komutunu çalıştırın git pull origin starter-no-infra
.
Bu, yeni işlenen iş akışı dosyasını kod alanınıza çeker. .github/workflows/starter-no-infra_msdocs-jboss-mysql.yml adresinde gereksinimlerinize göre değiştirebilirsiniz.
4. Adım (Seçenek 1: GitHub Copilot ile):
- Sohbet görünümüne ve ardından öğesine tıklayarak +yeni bir sohbet oturumu başlatın.
- "@workspace Uygulama veritabanına nasıl bağlanır?" sorusunu sorun. Copilot, veri kaynağı ve nasıl yapılandırıldığı hakkında
java:jboss/MySQLDS
size bazı açıklamalar verebilir. - "Azure'daki JBoss'taki veri kaynağı java:jboss/env/jdbc/AZURE_MYSQL_CONNECTIONSTRING_DS JNDI adını kullanır" deyin. Copilot size Seçenek 2'dekine benzer bir kod önerisi verebilir: aşağıdaki GitHub Copilot adımları olmadan ve hatta sınıfta değişiklik yapmanızı bile söyleyebilir. GitHub Copilot size her seferinde aynı yanıtı vermez. Yanıtta ince ayar yapmak için daha fazla soru sormanız gerekebilir. İpuçları için bkz . Kod alanımda GitHub Copilot ile ne yapabilirim?.
4. Adım (Seçenek 2: GitHub Copilot olmadan):
- Gezginde src/main/resources/META-INF/persistence.xml açın. Uygulama başlatıldığında, bu dosyadaki veritabanı ayarlarını yükler.
- değerini
<jta-data-source>
java:jboss/MySQLDS
java:jboss/env/jdbc/AZURE_MYSQL_CONNECTIONSTRING_DS
olarak değiştirin. Bu, daha önce SSH kabuğunda JBoss CLI ile bulduğunuz veri kaynağıdır.
5. Adım:
- Kaynak Denetimi uzantısını seçin.
- Metin kutusuna gibi
Configure Azure JNDI name
bir işleme iletisi yazın. - İşle'yi seçin, ardından Evet ile onaylayın.
- Değişiklikleri eşitle 1'i seçin, ardından Tamam ile onaylayın.
6. Adım: Azure portalındaki Dağıtım Merkezi sayfasına geri dönün:
- Günlükler’i seçin. İşlemiş değişikliklerinizden yeni bir dağıtım çalıştırması zaten başlatılıyor.
- Dağıtım çalıştırmasının günlük öğesinde, en son zaman damgasını içeren Derleme/Dağıtma Günlükleri girdisini seçin.
7. Adım: GitHub deponuza yönlendirilirsiniz ve GitHub eyleminin çalıştığını görürsünüz. İş akışı dosyası derleme ve dağıtma olarak iki ayrı aşama tanımlar. GitHub çalıştırmasının Tamamlandı durumunu göstermesini bekleyin. Yaklaşık 5 dakika sürer.
Sorun mu yaşıyorsunuz? Sorun Giderme bölümüne bakın.
6. Uygulamaya göz atın
1. Adım: App Service sayfasında:
- Sol menüden Genel Bakış'ı seçin.
- Varsayılan etki alanında uygulamanızın URL'sini seçin.
2. Adım: Listeye birkaç görev ekleyin. Tebrikler, Azure Uygulaması Hizmeti'nde MySQL için Azure Veritabanı güvenli bağlantısı olan bir web uygulaması çalıştırıyorsunuz.
Sorun mu yaşıyorsunuz? Sorun Giderme bölümüne bakın.
7. Tanılama günlüklerini akışla aktarma
Azure Uygulaması Hizmeti, uygulamanızla ilgili sorunları tanılamanıza yardımcı olmak için konsola gönderilen tüm iletileri yakalar. Örnek uygulama, aşağıdaki kod parçacığında gösterildiği gibi bu özelliği göstermek için standart Log4j günlük deyimlerini içerir:
private static final Logger logger = Logger.getLogger(MethodHandles.lookup().lookupClass().getName());
@PersistenceContext
private EntityManager entityManager;
public List<Task> getAllTasks() {
logger.log(Level.INFO, "Finding all tasks. ");
return this.entityManager.createNamedQuery("findAllTasks", Task.class).getResultList();
}
App Service sayfasında, soldaki menüden Günlük akışı'nı seçin. Kapsayıcının içinden platform günlükleri ve günlükler de dahil olmak üzere uygulamanızın günlüklerini görürsünüz.
.NET, Node.js, Python ve Java uygulamaları için Azure İzleyici OpenTelemetry'yi etkinleştirme konusundaki serideki Java uygulamalarında oturum açma hakkında daha fazla bilgi edinin.
Sorun mu yaşıyorsunuz? Sorun Giderme bölümüne bakın.
8. Kaynakları temizleme
İşiniz bittiğinde, kaynak grubunu silerek Azure aboneliğinizdeki tüm kaynakları silebilirsiniz.
1. Adım: Azure portalının üst kısmındaki arama çubuğunda:
- msdocs-jboss-mysql_group kaynak grubu adını girin.
- Kaynak grubunu seçin.
2. Adım: Kaynak grubu sayfasında Kaynak grubunu sil'i seçin.
3. Adım:
- Kaynak grubu adını yazarak silme işleminizi onaylayın.
- Sil'i seçin.
- Sil ile yeniden onaylayın.
2. Azure kaynakları oluşturma ve örnek uygulama dağıtma
Bu adımda Azure kaynaklarını oluşturur ve Linux üzerinde App Service için örnek bir uygulama dağıtırsınız. Bu öğreticide kullanılan adımlar, App Service ve MySQL için Azure Veritabanı içeren varsayılan olarak güvenli bir kaynak kümesi oluşturur.
Geliştirme kapsayıcısı zaten Azure Geliştirici CLI'sine (AZD) sahiptir.
Depo kökünden komutunu çalıştırın
azd init
.azd init --template jboss-app-service-mysql-infra
İstendiğinde aşağıdaki yanıtları verin:
Soru Yanıt ' <your-directory>
' içinde bir uygulamayı başlatmaya devam mı edin?Y Bu dosyalarla ne yapmak istiyorsunuz? Mevcut dosyalarımı değiştirmeden tut Yeni bir ortam adı girin Benzersiz bir ad yazın. AZD şablonu, Azure'da ( <app-name>-<hash>.azurewebsites.net
) web uygulamanızın DNS adının bir parçası olarak bu adı kullanır. Alfasayısal karakterlere ve kısa çizgilere izin verilir.komutunu çalıştırıp
azd auth login
istemi izleyerek Azure'da oturum açın:azd auth login
Gerekli Azure kaynaklarını oluşturun ve komutuyla uygulama kodunu dağıtın
azd up
. İstemi izleyerek Azure kaynakları için istenen aboneliği ve konumu seçin.azd up
Komutun
azd up
tamamlanması yaklaşık 15 dakika sürer (Redis önbelleği en çok zaman alır). Ayrıca uygulama kodunuzu derleyip dağıtır, ancak kodunuzu daha sonra App Service ile çalışacak şekilde değiştireceksiniz. Komutu çalışırken, Azure'daki dağıtıma bir bağlantı da dahil olmak üzere sağlama ve dağıtım işlemiyle ilgili iletiler sağlar. Tamamlandığında, komut dağıtım uygulamasının bağlantısını da görüntüler.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ı oluşturulur.
- App Service: Uygulamanızı temsil eder ve App Service planında çalışır.
- Sanal ağ: App Service uygulamasıyla tümleştirilmiş ve arka uç ağ trafiğini yalıtıyor.
- MySQL için Azure Veritabanı Esnek Sunucu: Yalnızca sanal ağdan erişilebilir. Sunucuda sizin için bir veritabanı oluşturulur.
- Redis için Azure Cache: Yalnızca sanal ağ içinden erişilebilir.
- Özel uç noktalar: Sanal ağdaki anahtar kasası ve Redis önbelleği için erişim uç noktaları.
- Özel DNS bölgeleri: Sanal ağda anahtar kasasının, veritabanı sunucusunun ve Redis önbelleğinin DNS çözümlemesini etkinleştirin.
- 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.
- Anahtar kasası: AZD ile yeniden dağıttığınızda veritabanı parolanızı aynı tutmak için kullanılır.
Komut kaynak oluşturmayı ve uygulama kodunu ilk kez dağıtmayı tamamladıktan sonra, Azure'daki veritabanına bağlanmak için küçük değişiklikler yapmanız gerektiğinden dağıtılan örnek uygulama henüz çalışmaz.
Sorun mu yaşıyorsunuz? Sorun Giderme bölümüne bakın.
3. bağlantı dizesi doğrulama
Kullandığınız AZD şablonu, sizin için zaten uygulama ayarları olarak bağlantı değişkenlerini oluşturmuş ve size kolaylık sağlamak için bunları terminale çıkış olarak göndermektedir. Uygulama ayarları, bağlantı gizli dizilerini kod deponuzun dışında tutmanın bir yoludur.
AZD çıkışında uygulama ayarını
AZURE_MYSQL_CONNECTIONSTRING
bulun. Yalnızca ayar adları görüntülenir. AZD çıkışında aşağıdakine benzerler:App Service app has the following app settings: - AZURE_KEYVAULT_RESOURCEENDPOINT - AZURE_KEYVAULT_SCOPE - AZURE_MYSQL_CONNECTIONSTRING - AZURE_REDIS_CONNECTIONSTRING
AZURE_MYSQL_CONNECTIONSTRING
Azure'daki MySQL veritabanına bağlantı dizesi içerir. Daha sonra kodunuzda kullanmanız gerekir.Size kolaylık sağlamak için AZD şablonu size uygulamanın uygulama ayarları sayfasının doğrudan bağlantısını gösterir. Bağlantıyı bulun ve yeni bir tarayıcı sekmesinde açın.
Geçerli bir Oracle, SQL Server, PostgreSQL veya MySQL bağlantı dizesi içeren bir uygulama ayarı eklerseniz, App Service bunu JBoss sunucusunun context.xml dosyasına Java Adlandırma ve Dizin Arabirimi (JNDI) veri kaynağı olarak ekler.
Sorun mu yaşıyorsunuz? Sorun Giderme bölümüne bakın.
4. JNDI veri kaynağını onaylayın
Bu adımda, JBoss sunucusundaki JNDI veri kaynağını doğrulamak için uygulama kapsayıcısına SSH bağlantısını kullanırsınız. Bu süreçte, JBoss kapsayıcısı için SSH kabuğuna erişmeyi öğreneceksiniz.
AZD çıkışında SSH oturumunun URL'sini bulun ve tarayıcıda oturuma gidin. Çıktıda şöyle görünür:
Open SSH session to App Service container at: https://<app-name>-<hash>.scm.azurewebsites.net/webssh/host
SSH terminalinde komutunu çalıştırın
$JBOSS_HOME/bin/jboss-cli.sh --connect
.JBoss CLI bağlantısında komutunu çalıştırın
ls subsystem=datasources/data-source
. AdlıAZURE_MYSQL_CONNECTIONSTRING_DS
otomatik olarak oluşturulan veri kaynağını görmeniz gerekir.ile
/subsystem=datasources/data-source=AZURE_MYSQL_CONNECTIONSTRING_DS:read-attribute(name=jndi-name)
veri kaynağının JNDI adını alın. Artık daha sonra uygulama kodunuzda kullanabileceğiniz bir JNDI adınızjava:jboss/env/jdbc/AZURE_MYSQL_CONNECTIONSTRING_DS
vardır.
Not
Yalnızca içindeki dosyalarda /home
yapılan değişiklikler uygulama yeniden başlatmalarının ötesinde kalıcı olabilir. Örneğin, JBoss CLI'da sunucu yapılandırmasını düzenler /opt/eap/standalone/configuration/standalone.xml
veya değiştirirseniz, değişiklikler uygulamanın yeniden başlatılmasının ötesinde kalıcı olmaz. Değişikliklerinizi kalıcı hale getirmek için, Tomcat, JBoss veya Java SE uygulaması için veri kaynaklarını yapılandırma Azure Uygulaması Hizmeti'nde gösterildiği gibi bir başlangıç betiği kullanın
Sorun mu yaşıyorsunuz? Sorun Giderme bölümüne bakın.
5. Örnek kodu değiştirme ve yeniden dağıtma
GitHub kod alanında Sohbet görünümüne ve ardından öğesine tıklayarak +yeni bir sohbet oturumu başlatın.
"@workspace Uygulama veritabanına nasıl bağlanır?" sorusunu sorun. Copilot, veri kaynağı ve nasıl yapılandırıldığı hakkında
java:jboss/MySQLDS
size bazı açıklamalar verebilir."@workspace persistence.xml tanımlanan veri kaynağını JBoss'ta mevcut bir JNDI veri kaynağıyla değiştirmek istiyorum" sorusunu sorun. Copilot, aşağıdaki GitHub Copilot adımları olmadan 2. Seçenek'tekine benzer bir kod önerisi verebilir ve hatta persistence.xml dosyasında değişiklik yapmanızı bile söyleyebilir.
Gezginde src/main/resources/META-INF/persistence.xml açın ve önerilen JNDI değişikliğini yapın.
GitHub Copilot size her seferinde aynı yanıtı vermez. Yanıtta ince ayar yapmak için başka sorular sormanız gerekebilir. İpuçları için bkz . Kod alanımda GitHub Copilot ile ne yapabilirim?.
Codespace terminalinde komutunu çalıştırın
azd deploy
.azd deploy
İpucu
Ayrıca, tüm , ve işlemlerini azd package
yapan her zaman da kullanabilirsinizazd up
.azd deploy
azd provision
War dosyasının nasıl paketlenmiş olduğunu öğrenmek için kendi başına çalıştırabilirsiniz azd package --debug
.
Sorun mu yaşıyorsunuz? Sorun Giderme bölümüne bakın.
6. Uygulamaya göz atın
AZD çıkışında uygulamanızın URL'sini bulun ve tarayıcıda bu URL'ye gidin. URL, AZD çıkışında şöyle görünür:
Deploying services (azd deploy) (✓) Done: Deploying service web - Endpoint: https://<app-name>-<hash>.azurewebsites.net/
Listeye birkaç görev ekleyin.
Tebrikler, Azure Uygulaması Hizmeti'nde MySQL için Azure Veritabanı güvenli bağlantısı olan bir web uygulaması çalıştırıyorsunuz.
Sorun mu yaşıyorsunuz? Sorun Giderme bölümüne bakın.
7. Tanılama günlüklerini akışla aktarma
Azure Uygulaması Hizmeti, uygulamanızla ilgili sorunları tanılamanıza yardımcı olmak için konsol günlüklerini yakalayabilir. Kolaylık olması için AZD şablonu yerel dosya sisteminde günlüğe kaydetmeyi zaten etkinleştirdi ve günlükleri Log Analytics çalışma alanına gönderiyor.
Örnek uygulama, aşağıdaki kod parçacığında gösterildiği gibi bu özelliği göstermek için standart Log4j günlük deyimlerini içerir:
private static final Logger logger = Logger.getLogger(MethodHandles.lookup().lookupClass().getName());
@PersistenceContext
private EntityManager entityManager;
public List<Task> getAllTasks() {
logger.log(Level.INFO, "Finding all tasks. ");
return this.entityManager.createNamedQuery("findAllTasks", Task.class).getResultList();
}
AZD çıkışında App Service günlüklerinin akışının bağlantısını bulun ve tarayıcıda bu bağlantıya gidin. Bağlantı, AZD çıkışında şöyle görünür:
Stream App Service logs at: https://portal.azure.com/#@/resource/subscriptions/<subscription-guid>/resourceGroups/<group-name>/providers/Microsoft.Web/sites/<app-name>/logStream
.NET, Node.js, Python ve Java uygulamaları için Azure İzleyici OpenTelemetry'yi etkinleştirme konusundaki serideki Java uygulamalarında oturum açma hakkında daha fazla bilgi edinin.
Sorun mu yaşıyorsunuz? Sorun Giderme bölümüne bakın.
8. Kaynakları temizleme
Geçerli dağıtım ortamındaki tüm Azure kaynaklarını silmek için komutunu çalıştırın azd down
ve istemleri izleyin.
azd down
Sorun giderme
- Oluşturma sihirbazında 'Kendi Lisansını Getir özelliğini kullanma hakkı yok' hatasını görüyorum.
- MySQL için Azure Veritabanı Esnek Sunucu için portal dağıtım görünümünde Çakışma durumu gösterilir.
- Bağlantı oluştur iletişim kutusunda Cloud Shell'de Oluştur düğmesi gösterilir, ancak etkinleştirilmez.
- Uygulamam başlatılamadı ve 'Kullanıcı için erişim reddedildi... (parola kullanarak: HAYIR)' yazın.
- Dağıtılan örnek uygulama, görev listesi uygulamasını göstermez.
- Tanılama günlüklerinde "Tablo 'Görev' zaten var" hatası görüyorum.
Oluşturma sihirbazında 'Kendi Lisansını Getir özelliğini kullanma hakkı yok' hatasını görüyorum.
Şu hatayı The subscription '701ea799-fb46-4407-bb67-9cbcf289f1c7' is not entitled to use the Bring Your Own License feature when creating the application
görüyorsanız, Java web sunucusu yığınında Red Hat JBoss EAP 7/8 BYO Lisansı'nı seçtiğiniz ancak Red Hat Cloud Access'te Azure hesabınızı ayarlamadığınız veya Red Hat Cloud Access'te etkin bir JBoss EAP lisansınız olmadığı anlamına gelir.
MySQL için Azure Veritabanı Esnek Sunucu için portal dağıtım görünümünde Çakışma durumu gösterilir.
Aboneliğinize ve seçtiğiniz bölgeye bağlı olarak, MySQL için Azure Veritabanı Esnek Sunucunun Conflict
dağıtım durumunu, İşlem ayrıntıları bölümünde aşağıdaki iletiyle görebilirsiniz:
InternalServerError: An unexpected error occured while processing the request.
Bu hata büyük olasılıkla aboneliğinizde seçtiğiniz bölge için bir sınırdan kaynaklanır. Dağıtımınız için farklı bir bölge seçmeyi deneyin.
Bağlantı oluştur iletişim kutusunda Cloud Shell'de Oluştur düğmesi gösterilir, ancak etkinleştirilmez.
İletişim kutusunda bir hata iletisi de görebilirsiniz: The database server is in Virtual Network and Cloud Shell can't connect to it. Please copy the commands and execute on an environment which can connect to the database server in Virtual Network.
Hizmet bağlayıcısı otomasyonu için MySQL sunucusuna ağ erişimi gerekir. MySQL sunucu kaynağınızın ağ ayarlarına bakın ve genel IP adresi kullanarak İnternet üzerinden bu kaynağa genel erişime izin ver'in en azından seçili olduğundan emin olun. Hizmet Bağlayıcısı bunu oradan alabilir.
Bu onay kutusunu görmüyorsanız, bunun yerine Web App + Veritabanı sihirbazını kullanarak dağıtımı oluşturmuş olabilirsiniz ve dağıtım, MySQL sunucusuna tüm genel ağ erişimini kilitler. Yapılandırmayı değiştirmenin bir yolu yoktur. Uygulamanın Linux kapsayıcısı sanal ağ tümleştirmesi aracılığıyla MySQL'e erişebildiğinden, uygulamanın SSH oturumuna Azure CLI yükleyebilir ve sağlanan Cloud Shell komutlarını orada çalıştırabilirsiniz.
Dağıtılan örnek uygulama, görev listesi uygulamasını göstermez.
Görev listesi uygulaması yerine JBoss giriş sayfasını görüyorsanız App Service büyük olasılıkla en son kod dağıtımınızdan güncelleştirilmiş kapsayıcıyı yüklemeye devam ediyordur. Birkaç dakika bekleyin ve sayfayı yenileyin.
Uygulamam başlatılamadı ve 'Kullanıcı için erişim reddedildi... (parola kullanarak: HAYIR)' yazın.
Bu hatanın nedeni büyük olasılıkla parolasız kimlik doğrulama eklentisini bağlantı dizesi eklememiş olmanızdır (Hizmet Bağlayıcısı ile MySQL için Azure Veritabanı Tümleştirme için Java örnek koduna bakın). 3' teki yönergeleri izleyerek MySQL bağlantı dizesi değiştirin. Parolasız bağlantı oluşturun.
Tanılama günlüklerinde "Tablo 'Görev' zaten var" hatası görüyorum.
Uygulama kodunun MySQL veritabanına bağlı olduğunu gösterdiğinden bu Hazırda Bekletme hatasını yoksayabilirsiniz. Uygulama başlatıldığında gerekli tabloları oluşturacak şekilde yapılandırılır (bkz . src/main/resources/META-INF/persistence.xml). Uygulama ilk kez başlatıldığında tabloları başarıyla oluşturması gerekir, ancak sonraki yeniden başlatmalarda tablolar zaten mevcut olduğundan bu hatayı görürsünüz.
Sık sorulan sorular
- Bu kurulumun maliyeti ne kadardır?
- Nasıl yaparım? diğer araçlarla sanal ağın arkasındaki MySQL sunucusuna bağlanın?
- Microsoft Entra kimlik doğrulamasını kullanarak MySQL bağlantısı için geçerli bir erişim belirteci Nasıl yaparım??
- Yerel uygulama geliştirme GitHub Actions ile nasıl çalışır?
- Kullanıcı tarafından atanan kimlik oluşturma iznim yok
- Kod alanımda GitHub Copilot ile ne yapabilirim?
Bu kurulumun maliyeti ne kadardır?
Oluşturulan kaynakların fiyatlandırması aşağıdaki gibidir:
- App Service planı P0v3 katmanında oluşturulur ve ölçeği artırılabilir veya azaltılabilir. Bkz. App Service fiyatlandırması.
- MySQL esnek sunucusu D2ds katmanında oluşturulur ve ölçeği artırılabilir veya azaltılabilir. Bkz. MySQL için Azure Veritabanı fiyatlandırma.
- Redis için Azure Cache temel katmanda en düşük önbellek boyutuyla oluşturulur. Bu katmanla ilişkili küçük bir maliyet vardır. Daha yüksek kullanılabilirlik, kümeleme ve diğer özellikler için ölçeğini daha yüksek performans katmanlarına artırabilirsiniz. Bkz. Redis için Azure Cache fiyatlandırma.
- Eşleme gibi ek işlevler yapılandırmadığınız sürece sanal ağ ücret ödemez. Bkz. Azure Sanal Ağ fiyatlandırması.
- Özel DNS bölgesi küçük bir ücrete tabi. Bkz. Azure DNS fiyatlandırması.
Nasıl yaparım? diğer araçlarla sanal ağın arkasındaki MySQL sunucusuna bağlanın?
Bu öğreticide App Service uygulamasının MySQL sunucusuna zaten ağ bağlantısı vardır ve sistem tarafından atanan yönetilen kimliğini kullanarak Microsoft Entra ile kimlik doğrulaması yapabilir. SSH oturumunda aşağıdaki komutları çalıştırarak uygulama kapsayıcısından doğrudan MySQL'e bağlanabilirsiniz (uygulama ayarından AZURE_MYSQL_CONNECTIONSTRING
, <user>
ve <database>
değerlerinizi <server>
alın):
apt-get update
apt-get install curl less mysql-client jq -y
mysql -h <server> --user <user> --database <database> --enable-cleartext-plugin --password=`curl "${IDENTITY_ENDPOINT}?resource=https://ossrdbms-aad.database.windows.net&api-version=2019-08-01" -H "X-IDENTITY-HEADER: $IDENTITY_HEADER" -s | jq -r '.access_token'`
Dikkat edilmesi gereken birkaç nokta:
- SSH oturumuna yüklediğiniz araçlar, uygulama yeniden başlatmalarında kalıcı olmaz.
- Portal adımlarını izlediyseniz ve Yönetici olarak Microsoft Entra kullanıcınızı kullanarak MySQL'i yapılandırdıysanız, Microsoft Entra kullanıcısını kullanarak MySQL'e bağlanabilirsiniz.
- MySQL Workbench gibi bir masaüstü aracından bağlanmak için makinenizin aynı sanal ağa dağıtılan Azure VM gibi bir sanal ağ içinde olması gerekir. Ayrıca, kimlik doğrulamayı yönetilen kimlikle veya Microsoft Entra kullanıcısı ile ayrı olarak yapılandırmanız gerekir.
- Azure sanal ağıyla siteden siteye VPN bağlantısı olan bir şirket içi ağdaki bir makineden bağlanmak için, yönetilen kimlikle kimlik doğrulamasını yapılandıramazsınız, ancak microsoft Entra kullanıcısını kullanarak kimlik doğrulamasını yapılandırabilirsiniz.
- Ayrıca Azure Cloud Shell'i tümleştirebilir ve Azure CLI veya MySQL CLI kullanarak bağlanabilirsiniz. Kimlik doğrulaması yapmak için bir Microsoft Entra kullanıcısı yapılandırabilirsiniz.
Microsoft Entra kimlik doğrulamasını kullanarak MySQL bağlantısı için geçerli bir erişim belirteci Nasıl yaparım??
Microsoft Entra kullanıcısı, sistem tarafından atanan yönetilen kimlik veya MySQL veritabanına erişme yetkisi olan kullanıcı tarafından atanan yönetilen kimlik için Azure CLI, erişim belirteci oluşturmanıza yardımcı olabilir. Yönetilen kimlik söz konusu olduğunda, kimliğin Azure CLI'yı çalıştırdığınız App Service uygulamasında veya VM'de yapılandırılması gerekir.
# Sign in as a Microsoft Entra user
az login
# Sign in as the system-assigned managed identity
az login --identity
# Sign in as a user-assigned managed identity
az login --identity --username <client-id-of-user-assigned-identity>
# Get an access token
az account get-access-token --resource-type oss-rdbms
İsterseniz, MySQL'e bağlanmak için az mysql flexible-server connect Azure CLI komutunu da kullanabilirsiniz. İstendiğinde, parola olarak erişim belirtecini kullanın.
az mysql flexible-server connect -n <server-name-only> -u <user> -d <database> --interactive
Daha fazla bilgi için bkz.
- App Service ve Azure İşlevleri için yönetilen kimlikleri kullanma
- Azure CLI kullanarak Azure'da kimlik doğrulaması
- Microsoft Entra Id kullanarak MySQL için Azure Veritabanı Esnek Sunucuya bağlanma
Yerel uygulama geliştirme GitHub Actions ile nasıl çalışır?
Örnek olarak App Service'ten otomatik olarak oluşturulan iş akışı dosyasının kullanılması, yeni git push
bir derleme ve dağıtım çalıştırması 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 starter-no-infra
Kullanıcı tarafından atanan kimlik oluşturma iznim yok
Bkz . Dağıtım Merkezi'nden GitHub Actions dağıtımını ayarlama.
Kod alanımda GitHub Copilot ile ne yapabilirim?
Kod alanını oluştururken GitHub Copilot sohbet görünümünün zaten sizin için orada olduğunu fark edebilirsiniz. Kolaylık sağlamak için kapsayıcı tanımına GitHub Copilot sohbet uzantısını dahil ediyoruz (bkz . .devcontainer/devcontainer.json). Ancak, bir GitHub Copilot hesabına ihtiyacınız vardır (30 günlük ücretsiz deneme sürümü kullanılabilir).
GitHub Copilot ile konuşurken size birkaç ipucu:
- Tek bir sohbet oturumunda, sorular ve yanıtlar birbirleri üzerinde derlenebilir ve sorularınızı ayarlayarak, elde ettiğiniz yanıta ince ayar yapabilirsiniz.
- Varsayılan olarak, GitHub Copilot'un deponuzdaki hiçbir dosyaya erişimi yoktur. Dosya hakkında soru sormak için önce düzenleyicide dosyayı açın.
- GitHub Copilot'ın yanıtlarını hazırlarken depodaki tüm dosyalara erişmesine izin vermek için sorunuza ile
@workspace
başlayın. Daha fazla bilgi için bkz. Use the @workspace agent. - Sohbet oturumunda, GitHub Copilot değişiklikleri önerebilir ve (ile
@workspace
) değişikliklerin yapılacağı yeri bile önerebilir, ancak değişiklikleri sizin için yapmasına izin verilmez. Önerilen değişiklikleri eklemek ve test etmek size bağlı.
Elde ettiğiniz yanıta ince ayar yapmak için söyleyebileceğiniz diğer bazı şeyler şunlardır:
- Bu kodu jdbc/AZURE_MYSQL_CONNECTIONSTRING_DS veri kaynağını kullanacak şekilde değiştirin.
- Kodunuzdaki bazı içeri aktarmalar javax kullanıyor ama Jakarta uygulamam var.
- Bu kodun yalnızca ortam değişkeni AZURE_MYSQL_CONNECTIONSTRING ayarlanmışsa çalışmasını istiyorum.
- Bu kodun yerel olarak değil yalnızca Azure Uygulaması Hizmetinde çalışmasını istiyorum.
Sonraki adımlar
Geliştirici kılavuzunda App Service'te Java uygulamalarını çalıştırma hakkında daha fazla bilgi edinin.
Özel bir etki alanı ve sertifikayla uygulamanızın güvenliğini sağlamayı öğrenin.