Bagikan melalui


Tutorial: Membangun aplikasi web Tomcat dengan Azure App Service di Linux dan MySQL

Tutorial ini menunjukkan cara membangun, mengonfigurasi, dan menyebarkan aplikasi Tomcat yang aman di Azure App Service yang tersambung ke database MySQL (menggunakan Azure Database for MySQL). Azure App Service adalah layanan patch mandiri dan hosting web yang sangat dapat diskalakan, yang dapat dengan mudah menyebarkan aplikasi di Windows atau Linux. Setelah selesai, Anda memiliki aplikasi Tomcat yang berjalan di Azure App Service di Linux.

Cuplikan layar aplikasi Tomcat yang menyimpan data di MySQL.

Dalam tutorial ini, Anda akan mempelajari cara:

  • Buat arsitektur aman secara default untuk Azure App Service dan Azure Database for MySQL.
  • Amankan rahasia koneksi menggunakan identitas terkelola dan referensi Key Vault.
  • Sebarkan aplikasi sampel Tomcat ke App Service dari repositori GitHub.
  • Akses pengaturan aplikasi App Service dalam kode aplikasi.
  • Buat pembaruan dan sebarkan ulang kode aplikasi.
  • Streaming log diagnostik dari App Service.
  • Kelola aplikasi di portal Azure.
  • Sediakan arsitektur yang sama dan terapkan dengan menggunakan Azure Developer CLI.
  • Optimalkan alur kerja pengembangan Anda dengan GitHub Codespaces dan GitHub Copilot.

Prasyarat

  • Akun Azure dengan langganan aktif. Jika Anda tidak memiliki akun Azure, Anda dapat membuat akun secara gratis.
  • Azure Developer CLI terinstal. Anda dapat mengikuti langkah-langkah dengan Azure Cloud Shell karena sudah menginstal Azure Developer CLI.
  • Pengetahuan tentang Java dalam pengembangan menggunakan Tomcat.
  • (Opsional) Untuk mencoba GitHub Copilot, diperlukan akun GitHub Copilot. Uji coba gratis 30 hari tersedia.

Lewati ke akhir

Anda dapat dengan cepat menyebarkan aplikasi sampel dalam tutorial ini dan melihatnya berjalan di Azure. Cukup jalankan perintah berikut di Azure Cloud Shell, dan ikuti perintahnya:

mkdir msdocs-tomcat-mysql-sample-app
cd msdocs-tomcat-mysql-sample-app
azd init --template msdocs-tomcat-mysql-sample-app
azd up

1. Jalankan sampel

Pertama, Anda menyiapkan contoh aplikasi berbasis data sebagai titik awal. Untuk kenyamanan Anda, repositori sampel berisi konfigurasi kontainer pengembangan. Kontainer dev memiliki semua yang Anda butuhkan untuk mengembangkan aplikasi, termasuk database, cache, dan semua variabel lingkungan yang diperlukan oleh aplikasi sampel. Kontainer dev dapat berjalan di codespace GitHub, yang berarti Anda dapat menjalankan sampel di komputer apa pun dengan browser web.

Langkah 1: Di jendela browser baru:

  1. Masuk ke akun GitHub Anda.
  2. Arahkan ke https://github.com/Azure-Samples/msdocs-tomcat-mysql-sample-app/fork.
  3. Hapus centang Salin cabang utama saja. Anda ingin semua cabang.
  4. Pilih Buat fork.

Langkah 2: Di fork GitHub:

  1. Pilih utama>starter-no-infra untuk cabang starter. Cabang ini hanya berisi proyek sampel dan tidak ada file atau konfigurasi terkait Azure.
  2. Pilih Kode>Buat codespace pada starter-no-infra. Codespace membutuhkan waktu beberapa menit untuk disiapkan.

Langkah 3: Di terminal codespace:

  1. Jalankan mvn jetty:run.
  2. Saat Anda melihat pemberitahuan Your application running on port 80 is available., pilih Buka di Browser. Anda akan melihat aplikasi sampel di tab browser baru. Untuk menghentikan server Jetty, ketik Ctrl+C.

Tips

Anda dapat bertanya kepada GitHub Copilot tentang repositori ini. Contohnya:

  • @workspace Apa yang dilakukan proyek ini?
  • @workspace Apa yang dilakukan folder .devcontainer?

Mengalami masalah? Periksa bagian Pemecahan Masalah.

2. Buat App Service dan MySQL

Pertama, Anda membuat sumber daya Azure. Langkah-langkah yang digunakan dalam tutorial ini membuat sekumpulan sumber daya aman secara default yang menyertakan App Service dan Azure Database for MySQL. Untuk proses pembuatan, Anda menentukan:

  • Nama untuk aplikasi web. Ini digunakan sebagai bagian dari nama DNS.
  • Wilayah tempat menjalankan aplikasi secara fisik di dunia. Ini juga digunakan sebagai bagian dari nama DNS untuk aplikasi Anda.
  • Tumpukan Runtime untuk aplikasi. Di sinilah Anda memilih versi Java yang akan digunakan untuk aplikasi Anda.
  • Paket hosting untuk aplikasi. Ini adalah tingkat harga yang mencakup serangkaian fitur dan kapasitas penskalaan untuk aplikasi Anda.
  • Resource Group untuk aplikasi. Grup sumber daya memungkinkan Anda mengelompokkan (dalam kontainer logika) semua sumber daya Azure yang diperlukan untuk aplikasi.

Masuk ke portal Microsoft Azure dan ikuti langkah-langkah ini untuk membuat sumber daya Azure App Service Anda.

Langkah 1: Di portal Azure:

  1. Masukkan "database apl web" di bilah pencarian di bagian atas portal Azure.
  2. Pilih item berlabel Apl Web + Database di bawah judul Marketplace. Anda juga dapat menavigasi ke wizard pembuatan secara langsung.

Langkah 2: Di halaman Buat Aplikasi Web + Database , isi formulir sebagai berikut.

  1. Grup Sumber Daya: Pilih Buat baru dan gunakan nama msdocs-tomcat-mysql-tutorial.
  2. Wilayah: Wilayah Azure apa pun di dekat Anda.
  3. Nama: msdocs-tomcat-mysql-XYZ, di mana XYZ adalah tiga karakter acak.
  4. Tumpukan waktu proses: Java 17.
  5. Stack server web Java: Apache Tomcat 10.1.
  6. Mesin: MySQL - Server Fleksibel dipilih untuk Anda secara default sebagai mesin database. Jika tidak, pilih itu. Azure Database for MySQL - Server Fleksibel adalah database MySQL yang dikelola sepenuhnya sebagai layanan di Azure, kompatibel dengan edisi komunitas terbaru.
  7. Paket hosting: Dasar. Setelah siap, Anda dapat meningkatkan skala ke tingkat harga produksi.
  8. Pilih Tinjau dan Buat.
  9. Setelah validasi selesai, pilih Buat.

Langkah 3: Penyebaran membutuhkan waktu beberapa menit untuk diselesaikan. Setelah penyebaran selesai, pilih tombol Buka sumber daya. Anda diarahkan ke aplikasi App Service, tetapi sumber daya berikut dibuat:

  • Grup sumber daya: Kontainer untuk semua sumber daya yang dibuat.
  • Rencana App Service: Mengatur sumber daya komputasi untuk App Service. Rencana Linux pada tingkat Dasar dibuat.
  • App Service: Mewakili aplikasi Anda dan berjalan dalam paket App Service.
  • Jaringan virtual: Terintegrasi dengan aplikasi App Service dan mengisolasi lalu lintas jaringan back-end.
  • Azure Database for MySQL Flexible Server: Hanya dapat diakses dari jaringan virtual. Database dan pengguna dibuat untuk Anda di server.
  • Zona DNS privat: Aktifkan resolusi DNS server database di jaringan virtual.

Mengalami masalah? Periksa bagian Pemecahan Masalah.

3. Amankan rahasia koneksi

Wizard pembuat telah menghasilkan string konektivitas database untuk Anda sebagai pengaturan aplikasi. Namun, praktik terbaik keamanan adalah mencegah rahasia berada dalam App Service sepenuhnya. Anda memindahkan rahasia ke brankas kunci dan mengubah pengaturan aplikasi ke Key Vault reference dengan bantuan Service Connectors.

Langkah 1: Ambil string koneksi yang ada

  1. Di menu sebelah kiri halaman App Service, pilih Pengaturan > Variabel lingkungan.
  2. Pilih AZURE_MYSQL_CONNECTIONSTRING. Ini berisi string koneksi JDBC. Jika Anda menambahkan pengaturan aplikasi yang berisi string koneksi Oracle, SQL Server, PostgreSQL, atau MySQL yang valid, App Service menyuntikkannya sebagai sumber data JNDI (Java Naming and Directory Interface) di file context.xml di server Tomcat.
  3. Di pengaturan Tambahkan/Edit aplikasi, di bidang Nilai , temukan bagian kata sandi= di akhir string.
  4. Salin string kata sandi setelah Kata Sandi= untuk digunakan nanti. Pengaturan aplikasi ini memungkinkan Anda terhubung ke database MySQL yang diamankan di belakang endpoint pribadi. Namun, rahasia disimpan langsung di aplikasi App Service, yang bukan yang terbaik. Anda akan mengubah ini.

Langkah 2: Buat brankas kunci untuk manajemen rahasia yang aman

  1. Di bilah pencarian atas, ketik "Key Vault", lalu pilih Marketplace>Key Vault.
  2. Di Grup Sumber Daya, pilih msdocs-tomcat-mysql-tutorial.
  3. Di Nama brankas kunci, ketik nama yang hanya terdiri dari huruf dan angka.
  4. Di Wilayah, atur ke lokasi yang sama dengan grup sumber daya.

Langkah 3: Amankan Key Vault dengan Private Endpoint

  1. Pilih tab Jaringan.
  2. Batal pilih Aktifkan akses publik.
  3. Pilih Buat endpoint privat.
  4. Di Grup Sumber Daya, pilih msdocs-tomcat-mysql-tutorial.
  5. Di Nama, ketik nama untuk titik akhir privat yang hanya terdiri dari huruf dan angka.
  6. Di Wilayah, atur ke lokasi yang sama dengan grup sumber daya.
  7. Dalam dialog, di Lokasi, pilih lokasi yang sama dengan aplikasi App Service Anda.
  8. Di Grup Sumber Daya, pilih msdocs-tomcat-mysql-tutorial.
  9. Di Nama, ketik msdocs-tomcat-mysql-XYZVaultEndpoint.
  10. Di Jaringan virtual, pilih msdocs-tomcat-mysql-XYZVnet.
  11. Di Subnet, msdocs-tomcat-mysql-XYZSubnet.
  12. Pilih OK.
  13. Pilih Tinjau + buat, lalu pilih Buat. Tunggu hingga penyebaran Key Vault selesai. Anda seharusnya melihat "Penyebaran Anda sudah selesai."

Langkah 4: Mengonfigurasi Konektor Layanan

  1. Di bilah pencarian atas, ketik msdocs-tomcat-mysql, lalu sumber daya App Service yang disebut msdocs-tomcat-mysql-XYZ.
  2. Di halaman App Service, di menu sebelah kiri, pilih Pengaturan Konektor Layanan>. Sudah ada konektor yang dibuat oleh panduan langkah-langkah pembuatan aplikasi untuk Anda.
  3. Pilih kotak centang di samping konektor, lalu pilih Edit.
  4. Di tab Dasar , atur Jenis klien ke Java.
  5. Pilih tab Autentikasi .
  6. Di Kata Sandi, tempelkan kata sandi yang Anda salin sebelumnya.
  7. Pilih Simpan Rahasia di Key Vault.
  8. Di bawah Koneksi Key Vault, pilih Buat baru. Dialog Buat koneksi dibuka di atas dialog edit.

Langkah 5: Buat koneksi Key Vault

  1. Dalam dialog Buat koneksi untuk koneksi Key Vault, di Key Vault, pilih brankas kunci yang Anda buat sebelumnya.
  2. Pilih Tinjau + Buat. Anda harus melihat bahwa identitas terkelola yang ditetapkan sistem diatur ke Dipilih.
  3. Saat validasi selesai, pilih Buat.

Langkah 6: Menyelesaikan konfigurasi Konektor Layanan

  1. Anda kembali ke dialog edit untuk defaultConnector. Pada tab Autentikasi, tunggu konektor Key Vault dibuat. Setelah selesai, dropdown Koneksi Key Vault secara otomatis memilihnya.
  2. Pilih Next: Networking.
  3. Pilih Simpan. Tunggu hingga pemberitahuan Pembaruan berhasil muncul.

Langkah 7: Verifikasi integrasi Key Vault

  1. Dari menu sebelah kiri, pilih > lagi.
  2. Di samping AZURE_MYSQL_CONNECTIONSTRING, pilih Perlihatkan nilai. Nilainya harus @Microsoft.KeyVault(...), yang berarti bahwa itu adalah referensi brankas kunci karena rahasia sekarang dikelola dalam brankas kunci.

Untuk meringkas, proses yang terlibat mengambil string koneksi MySQL dari variabel lingkungan App Service, membuat Azure Key Vault untuk manajemen rahasia yang aman dengan akses privat, dan memperbarui konektor layanan untuk menyimpan kata sandi di brankas kunci. Koneksi aman antara aplikasi App Service dan brankas kunci dibuat menggunakan identitas terkelola yang ditetapkan sistem, dan penyiapan diverifikasi dengan mengonfirmasi string koneksi menggunakan referensi Key Vault.

Mengalami masalah? Periksa bagian Pemecahan Masalah.

4. Konfirmasi sumber data JNDI

Jika Anda menambahkan pengaturan aplikasi yang berisi string koneksi JDBC yang valid untuk Oracle, SQL Server, PostgreSQL, atau MySQL, App Service menambahkan sumber data Java Naming and Directory Interface (JNDI) untuk itu di file context.xml server Tomcat. Dalam langkah ini, Anda menggunakan koneksi SSH ke kontainer aplikasi untuk memverifikasi sumber data JNDI. Dalam prosesnya, Anda mempelajari cara mengakses shell SSH untuk kontainer Tomcat.

Langkah 1: Kembali ke halaman App Service:

  1. Di menu sebelah kiri, pilih SSH.
  2. Pilih Buka.

Langkah 2: Di terminal SSH, jalankan cat /usr/local/tomcat/conf/context.xml. Anda akan melihat bahwa sumber daya JNDI yang disebut jdbc/AZURE_MYSQL_CONNECTIONSTRING_DS telah ditambahkan. Anda akan menggunakan sumber data ini nanti.

Catatan

Hanya perubahan pada file di /home yang dapat bertahan di luar mulai ulang aplikasi. Misalnya, jika Anda mengedit /usr/local/tomcat/conf/server.xml, perubahan tidak akan bertahan di luar mulai ulang aplikasi.

Mengalami masalah? Periksa bagian Pemecahan Masalah.

5. Menyebarkan kode sampel

Dalam langkah ini, Anda mengonfigurasi penyebaran GitHub menggunakan GitHub Actions. Ini hanya salah satu dari banyak cara untuk menyebarkan ke App Service, tetapi juga cara yang bagus untuk memiliki integrasi berkelanjutan dalam proses penyebaran Anda. ** Secara default, setiap git push ke repositori GitHub Anda memulai proses build dan deploy.

Seperti konvensi Tomcat, jika Anda ingin menyebarkan ke konteks akar Tomcat, beri nama artefak bawaan Anda ROOT.war.

Langkah 1: Kembali ke halaman App Service, di menu sebelah kiri, pilih Pusat Penyebaran.

Langkah 2: Di halaman Pusat Penyebaran:

  1. Di Sumber, pilih GitHub. Secara default, GitHub Actions dipilih sebagai penyedia build.
  2. Masuk ke akun GitHub Anda dan ikuti perintah untuk mengotorisasi Azure.
  3. Di Organisasi, pilih akun Anda.
  4. Di Repositori, pilih msdocs-tomcat-mysql-sample-app.
  5. Di Cabang, pilih starter-no-infra. Ini adalah cabang yang sama dengan tempat Anda bekerja dengan aplikasi sampel Anda, tanpa file atau konfigurasi terkait Azure.
  6. Untuk Jenis autentikasi, pilih Identitas yang ditetapkan pengguna.
  7. Di menu atas, pilih Simpan. App Service menerapkan file alur kerja ke dalam repositori GitHub yang dipilih, di direktori .github/workflows. Secara bawaan, pusat penempatan membuat identitas yang ditugaskan kepada pengguna untuk alur kerja guna mengautentikasi menggunakan Microsoft Entra (autentikasi OIDC). Untuk opsi autentikasi alternatif, lihat Menyebarkan ke App Service menggunakan GitHub Actions.

Langkah 3: Kembali ke ruang kode GitHub dari fork sampel Anda, jalankan git pull origin starter-no-infra. Ini menarik file alur kerja yang baru dikomit ke dalam codespace Anda.

Langkah 4 (Opsi 1: dengan GitHub Copilot):

  1. Mulai sesi obrolan baru dengan mengklik tampilan Obrolan , lalu klik +.
  2. Tanyakan, "@workspace Bagaimana aplikasi tersambung ke database?" Copilot mungkin memberi Anda beberapa penjelasan tentang data sumber jdbc/MYSQLDS dan bagaimana itu dikonfigurasi.
  3. Tanyakan, "@workspace saya ingin mengganti sumber data yang ditentukan dalam persistence.xml dengan sumber data JNDI yang ada di Tomcat tetapi saya ingin melakukannya secara dinamis.". Copilot mungkin memberi Anda saran kode yang mirip dengan yang ada di Opsi 2: tanpa langkah-langkah GitHub Copilot di bawah ini dan bahkan memberi tahu Anda untuk membuat perubahan di kelas ContextListener .
  4. Buka src/main/java/com/microsoft/azure/appservice/examples/tomcatmysql/ContextListener.java di penjelajah dan tambahkan saran kode dalam contextInitialized metode . GitHub Copilot tidak memberi Anda respons yang sama setiap kali, Anda mungkin perlu mengajukan lebih banyak pertanyaan untuk menyempurnakan responsnya. Untuk tips, lihat Apa yang bisa saya lakukan dengan GitHub Copilot di codespace saya?.

Langkah 4 (Opsi 2: tanpa GitHub Copilot):

  1. Buka src/main/java/com/microsoft/azure/appservice/examples/tomcatmysql/ContextListener.java di penjelajah. Saat aplikasi dimulai, kelas ini memuat pengaturan database di src/main/resources/META-INF/persistence.xml.
  2. Dalam metode , contextIntialized() temukan kode yang dikomentari (baris 29-33) dan batalkan komentar. Kode ini memeriksa untuk melihat apakah AZURE_MYSQL_CONNECTIONSTRING pengaturan aplikasi ada, dan mengubah sumber data menjadi java:comp/env/jdbc/AZURE_MYSQL_CONNECTIONSTRING_DS, yang merupakan sumber data yang Anda temukan sebelumnya di context.xml di shell SSH.

Langkah 5:

  1. Pilih ekstensi Kontrol Sumber.
  2. Di kotak teks, ketik pesan penerapan seperti Configure Azure data source.
  3. Pilih Terapkan, lalu konfirmasi dengan Ya.
  4. Pilih Sinkronkan perubahan 1, lalu konfirmasi dengan OK.

Langkah 6: Kembali ke halaman Pusat Penyebaran di portal Azure:

  1. Pilih Log. Eksekusi penyebaran baru sudah dimulai dari perubahan yang Anda lakukan.
  2. Di item log untuk eksekusi penyebaran, pilih entri Bangun/Sebarkan Log dengan tanda waktu terbaru.

Langkah 7: Anda dibawa ke repositori GitHub Anda dan melihat bahwa tindakan GitHub sedang berjalan. File alur kerja menentukan dua tahap terpisah, mem-build dan menyebarkan. Tunggu hingga eksekusi GitHub menampilkan status Selesai. Dibutuhkan sekitar 5 menit.

Mengalami masalah? Periksa bagian Pemecahan Masalah.

6. Menelusuri aplikasi

Langkah 1: Di halaman App Service:

  1. Dari menu kiri, pilih Ringkasan.
  2. Pilih URL aplikasi Anda.

Langkah 2: Tambahkan beberapa tugas ke daftar. Selamat, Anda menjalankan aplikasi web di Azure App Service, dengan konektivitas yang aman ke Azure Database for MySQL.

Mengalami masalah? Periksa bagian Pemecahan Masalah.

7. Mengalirkan log diagnostik

Azure App Service mengambil semua output pesan ke konsol untuk membantu Anda mendiagnosis masalah dengan aplikasi Anda. Aplikasi sampel mencakup pernyataan pengelogan Log4j standar untuk menunjukkan kemampuan ini, seperti yang ditunjukkan dalam cuplikan berikut:

@WebServlet(urlPatterns = "/")
public class ViewServlet extends HttpServlet {
    private static Logger logger = LogManager.getLogger(ViewServlet.class.getName());
    
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        logger.info("GET /");

        EntityManagerFactory emf = (EntityManagerFactory) req.getServletContext().getAttribute("EMFactory");

Langkah 1: Di halaman App Service:

  1. Dari menu di sebelah kiri, pilih log Layanan Aplikasi.
  2. Di Pengelogan aplikasi, pilih Sistem File.
  3. Di menu atas, pilih Simpan.

Langkah 2: Dari menu sebelah kiri, pilih Aliran log. Anda dapat melihat log untuk aplikasi Anda, termasuk log platform dan log dari dalam kontainer.

Pelajari selengkapnya tentang pengelogan di aplikasi Java dalam seri di Mengaktifkan Azure Monitor OpenTelemetry untuk aplikasi .NET, Node.js, Python, dan Java.

Mengalami masalah? Periksa bagian Pemecahan Masalah.

8. Membersihkan sumber daya

Setelah selesai, Anda dapat menghapus semua sumber daya dari langganan Azure dengan menghapus grup sumber daya.

Langkah 1: Di bilah pencarian di bagian atas portal Azure:

  1. Masukkan nama grup sumber daya.
  2. Pilih grup sumber daya.

Langkah 2: Di halaman grup sumber daya, pilih Hapus grup sumber daya.

Langkah 3:

  1. Konfirmasikan penghapusan Anda dengan mengetik nama grup sumber daya.
  2. Pilih Hapus.
  3. Konfirmasi dengan Hapus lagi.

2. Buat sumber daya Azure dan sebarkan aplikasi sampel

Dalam langkah ini, Anda membuat sumber daya Azure dan menyebarkan aplikasi sampel ke App Service di Linux. Langkah-langkah yang digunakan dalam tutorial ini membuat sekumpulan sumber daya aman secara default yang menyertakan App Service dan Azure Database for MySQL.

Kontainer pengembangan sudah memiliki Azure Developer CLI (AZD).

  1. Dari akar repositori, jalankan azd init.

    azd init --template tomcat-app-service-mysql-infra
    
  2. Saat diminta, berikan jawaban berikut:

    Pertanyaan Jawaban
    Direktori saat ini tidak kosong. Apakah Anda ingin menginisialisasi proyek di sini di '<your-directory>'? Y
    Apa yang ingin Anda lakukan dengan file-file ini? Jaga agar file saya yang ada tidak berubah
    Masukkan nama lingkungan baru Ketik nama unik. Templat AZD menggunakan nama ini sebagai bagian dari nama DNS aplikasi web Anda di Azure (<app-name>-<hash>.azurewebsites.net). Karakter alfanumerik dan tanda hubung diperbolehkan.
  3. Masuk ke Azure dengan menjalankan azd auth login perintah dan ikuti perintah:

    azd auth login
    
  4. Buat sumber daya Azure yang diperlukan dan sebarkan kode aplikasi dengan azd up perintah . Ikuti perintah untuk memilih langganan dan lokasi yang diinginkan untuk sumber daya Azure.

    azd up
    

    Perintah azd up membutuhkan waktu sekitar 15 menit untuk diselesaikan (cache Redis membutuhkan waktu paling lama). Ini juga mengkompilasi dan menyebarkan kode aplikasi Anda, tetapi Anda memodifikasi kode di kemudian hari agar dapat bekerja dengan App Service. Saat sedang berjalan, perintah menyediakan pesan tentang proses provisi dan penyebaran, termasuk tautan ke penyebaran di Azure. Setelah selesai, perintah juga menampilkan tautan ke aplikasi penyebaran.

    Templat AZD ini berisi file (azure.yaml dan direktori infra ) yang menghasilkan arsitektur aman secara default dengan sumber daya Azure berikut:

    • Grup sumber daya: Kontainer untuk semua sumber daya yang dibuat.
    • Rencana App Service: Mengatur sumber daya komputasi untuk App Service. Sebuah paket Linux dibuat di tingkat B1.
    • App Service: Mewakili aplikasi Anda dan berjalan dalam paket App Service.
    • Jaringan virtual: Terintegrasi dengan aplikasi App Service dan mengisolasi lalu lintas jaringan back-end.
    • Azure Database for MySQL Flexible Server: Hanya dapat diakses dari jaringan virtual melalui integrasi zona DNS. Database dibuat untuk Anda di server.
    • Azure Cache for Redis: Hanya dapat diakses dari dalam jaringan virtual.
    • Private endpoints: Titik akhir akses untuk brankas kunci dan cache Redis di jaringan virtual.
    • Zona DNS Private: Aktifkan resolusi DNS pusat penyimpanan kunci, server database, dan cache Redis pada jaringan virtual.
    • Ruang kerja Analitik Log: Bertindak sebagai kontainer target untuk aplikasi Anda untuk mengirimkan lognya, di mana Anda juga dapat mengkueri log.
    • Key Vault: Digunakan untuk menjaga kata sandi database Anda tetap sama saat melakukan penyebaran ulang dengan AZD.

    Setelah perintah selesai membuat sumber daya dan menyebarkan kode aplikasi untuk pertama kalinya, aplikasi sampel yang disebarkan belum berfungsi karena Anda harus membuat perubahan kecil untuk membuatnya terhubung ke database di Azure.

Mengalami masalah? Periksa bagian Pemecahan Masalah.

3. Verifikasi string koneksi

Templat AZD yang Anda gunakan menghasilkan variabel konektivitas untuk Anda sudah sebagai pengaturan aplikasi dan mengeluarkannya ke terminal untuk kenyamanan Anda. Pengaturan aplikasi adalah salah satu cara untuk menjaga rahasia koneksi keluar dari repositori kode Anda.

  1. Dalam output AZD, temukan pengaturan aplikasi AZURE_MYSQL_CONNECTIONSTRING. Hanya nama pengaturan yang ditampilkan. Mereka terlihat seperti ini dalam output AZD:

     App Service app has the following connection strings:
             - AZURE_MYSQL_CONNECTIONSTRING
             - AZURE_REDIS_CONNECTIONSTRING
             - AZURE_KEYVAULT_RESOURCEENDPOINT
             - AZURE_KEYVAULT_SCOPE
     

    AZURE_MYSQL_CONNECTIONSTRING berisi string koneksi ke database MySQL di Azure. Anda perlu menggunakannya dalam kode Anda nanti.

  2. Demi kenyamanan Anda, templat AZD menunjukkan tautan langsung ke halaman pengaturan aplikasi aplikasi. Temukan tautan dan buka di tab browser baru.

    Jika Anda menambahkan pengaturan aplikasi yang berisi string koneksi Oracle, SQL Server, PostgreSQL, atau MySQL yang valid, App Service menambahkannya sebagai sumber data Java Naming dan Directory Interface (JNDI) di file context.xml server Tomcat.

Mengalami masalah? Periksa bagian Pemecahan Masalah.

4. Konfirmasi sumber data JNDI

Dalam langkah ini, Anda menggunakan koneksi SSH ke kontainer aplikasi untuk memverifikasi sumber data JNDI di server Tomcat. Dalam prosesnya, Anda mempelajari cara mengakses shell SSH untuk kontainer Tomcat.

  1. Dalam output AZD, temukan URL untuk sesi SSH dan navigasikan ke dalamnya di browser. Ini terlihat seperti ini dalam output:

     Open SSH session to App Service container at: <URL>
     
  2. Di terminal SSH, jalankan cat /usr/local/tomcat/conf/context.xml. Anda akan melihat bahwa sumber daya JNDI yang disebut jdbc/AZURE_MYSQL_CONNECTIONSTRING_DS telah ditambahkan. Anda akan menggunakan sumber data ini nanti.

    Cuplikan layar yang menampilkan perintah untuk menjalankan shell SSH dan keluarannya.

Catatan

Hanya perubahan pada file di /home yang dapat bertahan di luar mulai ulang aplikasi. Misalnya, jika Anda mengedit /usr/local/tomcat/conf/server.xml, perubahan tidak akan bertahan di luar mulai ulang aplikasi.

Mengalami masalah? Periksa bagian Pemecahan Masalah.

5. Ubah kode sampel dan sebarkan ulang

  1. Di ruang kode GitHub, mulai sesi obrolan baru dengan mengklik tampilan Obrolan , lalu klik +.

  2. Tanyakan, "@workspace Bagaimana aplikasi tersambung ke database?" Copilot mungkin memberi Anda beberapa penjelasan tentang data sumber jdbc/MYSQLDS dan bagaimana itu dikonfigurasi.

  3. Tanyakan, "@workspace saya ingin mengganti sumber data yang ditentukan dalam persistence.xml dengan sumber data JNDI yang ada di Tomcat tetapi saya ingin melakukannya secara dinamis." Copilot mungkin memberi Anda saran kode yang mirip dengan yang ada di Opsi 2: tanpa langkah-langkah GitHub Copilot di bawah ini dan bahkan memberi tahu Anda untuk membuat perubahan di kelas ContextListener .

  4. Buka src/main/java/com/microsoft/azure/appservice/examples/tomcatmysql/ContextListener.java di penjelajah dan tambahkan saran kode dalam contextInitialized metode .

    GitHub Copilot tidak memberi Anda respons yang sama setiap kali, Anda mungkin perlu mengajukan pertanyaan lain untuk menyempurnakan responsnya. Untuk tips, lihat Apa yang bisa saya lakukan dengan GitHub Copilot di codespace saya?.

  5. Di terminal codespace, jalankan azd deploy.

    azd deploy
    

Tips

Anda juga dapat selalu menggunakan azd up, yang mencakup semua azd package, azd provision, dan azd deploy.

Untuk mengetahui bagaimana file War dikemas, Anda dapat menjalankan azd package --debug secara mandiri.

Mengalami masalah? Periksa bagian Pemecahan Masalah.

6. Menelusuri aplikasi

  1. Di output AZD, temukan URL aplikasi Anda dan navigasikan ke url tersebut di browser. URL terlihat seperti ini dalam output AZD:

     Deploying services (azd deploy)
    
       (✓) Done: Deploying service web
       - Endpoint: <URL>
     
  2. Tambahkan beberapa tugas ke dalam daftar.

    Cuplikan layar aplikasi web Tomcat dengan MySQL yang berjalan di Azure memperlihatkan tugas.

    Selamat, Anda menjalankan aplikasi web di Azure App Service, dengan konektivitas yang aman ke Azure Database for MySQL.

Mengalami masalah? Periksa bagian Pemecahan Masalah.

7. Mengalirkan log diagnostik

Azure App Service dapat mengambil log konsol untuk membantu Anda mendiagnosis masalah dengan aplikasi Anda. Untuk kenyamanan, templat AZD sudah mengaktifkan pengelogan ke sistem file lokal dan mengirimkan log ke ruang kerja Analitik Log.

Aplikasi sampel mencakup pernyataan pengelogan Log4j standar untuk menunjukkan kemampuan ini, seperti yang ditunjukkan dalam cuplikan berikut:

@WebServlet(urlPatterns = "/")
public class ViewServlet extends HttpServlet {
    private static Logger logger = LogManager.getLogger(ViewServlet.class.getName());
    
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        logger.info("GET /");

        EntityManagerFactory emf = (EntityManagerFactory) req.getServletContext().getAttribute("EMFactory");

Dalam keluaran AZD, temukan tautan untuk menstreamingkan log App Service dan membukanya di browser. Tautan terlihat seperti ini dalam output AZD:

Stream App Service logs at: <URL>

Pelajari selengkapnya tentang pengelogan di aplikasi Java dalam seri di Mengaktifkan Azure Monitor OpenTelemetry untuk aplikasi .NET, Node.js, Python, dan Java.

Mengalami masalah? Periksa bagian Pemecahan Masalah.

8. Membersihkan sumber daya

Untuk menghapus semua sumber daya Azure di lingkungan penyebaran saat ini, jalankan azd down dan ikuti perintahnya.

azd down

Pemecahan Masalah

Saya melihat banyak peringatan <Kelas> yang dipindai dari beberapa lokasi dengan mvn jetty:run

Anda dapat mengabaikan peringatan ini. Plugin Maven Jetty memberikan peringatan karena pom.xml aplikasi mengandung dependensi untuk , yang sudah disediakan oleh Jetty secara default. Anda memerlukan ketergantungan untuk Tomcat.

Tampilan penyebaran portal untuk Server Fleksibel Azure Database for MySQL memperlihatkan status Konflik

Bergantung pada langganan dan wilayah yang Anda pilih, Anda mungkin melihat status penyebaran untuk Azure Database for MySQL Flexible Server menjadi Conflict, dengan pesan berikut dalam Detail operasi:

InternalServerError: An unexpected error occurred while processing the request.

Kesalahan ini kemungkinan besar disebabkan oleh batas langganan Anda untuk wilayah yang Anda pilih. Coba pilih wilayah yang berbeda untuk penyebaran Anda.

Aplikasi sampel yang disebarkan tidak menampilkan aplikasi daftar tugas

Jika Anda melihat halaman Hey, Java developers! alih-alih aplikasi daftar tugas, kemungkinan besar App Service masih memuat kontainer yang telah diperbarui dari penyebaran kode terbaru Anda. Tunggu beberapa menit dan refresh halaman.

Saya melihat kesalahan Halaman 404 Tidak Ditemukan di aplikasi sampel yang disebarkan

Pastikan Anda membuat perubahan kode untuk menggunakan java:comp/env/jdbc/AZURE_MYSQL_CONNECTIONSTRING_DS sumber data. Jika Anda membuat perubahan dan menyebarkan ulang kode Anda, App Service kemungkinan besar masih memuat kontainer yang diperbarui. Tunggu beberapa menit dan refresh halaman.

Tanya jawab umum

Berapa biaya untuk penyiapan ini?

Harga untuk sumber daya yang dibuat adalah sebagai berikut:

  • Paket App Service dibuat di tingkat Dasar dan dapat ditingkatkan atau diturunkan. Lihat Harga App Service.
  • Server fleksibel MySQL dibuat di tingkat B1ms dan dapat ditingkatkan atau diturunkan skalanya. Dengan akun gratis Azure, tier B1ms tersedia secara gratis selama 12 bulan, hingga mencapai batas bulanan. Lihat Azure Database untuk Harga MySQL.
  • Azure Cache for Redis dibuat di tingkat Dasar dengan ukuran cache minimum. Ada biaya kecil yang terkait dengan tingkat ini. Anda dapat meningkatkannya ke tingkat performa yang lebih tinggi untuk ketersediaan, pengklusteran, dan fitur lainnya yang lebih tinggi. Lihat Harga Azure Cache untuk Redis.
  • Jaringan virtual tidak dikenakan biaya kecuali Anda mengonfigurasi fungsionalitas tambahan, seperti peering. Lihat Harga Azure Virtual Network.
  • Zona DNS privat dikenakan biaya kecil. Lihat Harga Azure DNS.

Bagaimana cara menyambungkan ke server MySQL di belakang jaringan virtual dengan alat lain?

  • Kontainer Tomcat saat ini tidak memiliki mysql-client terminal juga. Jika mau, Anda harus menginstalnya secara manual. Ingatlah bahwa apa pun yang Anda instal tidak akan bertahan setelah aplikasi dimulai ulang.
  • Untuk terhubung dari alat desktop seperti MySQL Workbench, komputer Anda harus berada dalam jaringan virtual. Misalnya, itu bisa menjadi Azure VM di salah satu subnet, atau komputer di jaringan lokal yang memiliki koneksi VPN situs-ke-situs dengan jaringan virtual Azure.
  • Anda juga dapat mengintegrasikan Azure Cloud Shell dengan jaringan virtual.

Bagaimana cara kerja pengembangan aplikasi lokal dengan GitHub Actions?

Menggunakan file alur kerja yang dibuat secara otomatis dari App Service sebagai contoh, masing-masing git push memulai proses build dan deployment baru. Dari klon lokal repositori GitHub, Anda membuat pembaruan yang diinginkan dan mengirimnya ke GitHub. Contohnya:

git add .
git commit -m "<some-message>"
git push origin main

Saya tidak memiliki izin untuk membuat identitas yang ditetapkan pengguna

Lihat Menyiapkan proses GitHub Actions dari Pusat Penyiapan.

Apa yang dapat saya lakukan dengan GitHub Copilot di codespace saya?

Anda mungkin melihat bahwa tampilan obrolan GitHub Copilot sudah ada untuk Anda saat membuat codespace. Untuk kenyamanan Anda, kami menyertakan ekstensi obrolan GitHub Copilot dalam definisi kontainer (lihat .devcontainer/devcontainer.json). Namun, Anda memerlukan akun GitHub Copilot (uji coba gratis 30 hari tersedia).

Beberapa tips untuk Anda ketika Anda berbicara dengan GitHub Copilot:

  • Dalam satu sesi obrolan, pertanyaan dan jawaban dibangun satu sama lain dan Anda dapat menyesuaikan pertanyaan Anda untuk menyempurnakan jawaban yang Anda dapatkan.
  • Secara default, GitHub Copilot tidak memiliki akses ke file apa pun di repositori Anda. Untuk mengajukan pertanyaan tentang file, buka file di editor terlebih dahulu.
  • Untuk membiarkan GitHub Copilot memiliki akses ke semua file di repositori saat menyiapkan jawabannya, mulai pertanyaan Anda dengan @workspace. Untuk informasi selengkapnya, lihat Use the @workspace agent .
  • Dalam sesi obrolan, GitHub Copilot dapat menyarankan perubahan dan (dengan @workspace) bahkan menunjukkan bagian mana yang perlu diubah, tetapi tidak diperkenankan membuat perubahan tersebut untuk Anda. Terserah Anda untuk menambahkan perubahan yang disarankan dan mengujinya.

Berikut adalah beberapa hal lain yang dapat Anda katakan untuk menyempurnakan jawaban yang Anda dapatkan:

  • Ubah kode ini untuk menggunakan sumber data jdbc/AZURE_MYSQL_CONNECTIONSTRING_DS.
  • Beberapa impor dalam kode Anda menggunakan javax, sedangkan aplikasi saya berbasis Jakarta.
  • Saya ingin kode ini berjalan hanya jika variabel lingkungan AZURE_MYSQL_CONNECTIONSTRING diatur.
  • Saya ingin kode ini hanya berjalan di Azure App Service dan bukan secara lokal.

Langkah berikutnya

Pelajari selengkapnya tentang menjalankan aplikasi Java di App Service di panduan pengembang.

Pelajari cara mengamankan aplikasi Anda dengan domain dan sertifikat kustom.