Tutorial: Membangun PHP (Laravel) dan Azure Database for MySQL - Aplikasi Server Fleksibel di Azure App Service

BERLAKU UNTUK: Azure Database for MySQL - Server Fleksibel

Azure App Service menyediakan layanan hosting web yang sangat dapat diskalakan dan melakukan patch mandiri menggunakan sistem operasi Linux. Tutorial ini menunjukkan cara membuat aplikasi PHP aman di Azure App Service yang terhubung ke database MySQL (menggunakan server fleksibel Azure Database for MySQL). Setelah selesai, Anda akan memiliki aplikasi Laravel yang berjalan di Azure App Service di Linux.

Screenshot of the Azure app example titled Task List showing new tasks added.

Dalam tutorial ini, Anda akan mempelajari cara:

  • Membuat aplikasi PHP dan MySQL yang aman secara default di Azure
  • Mengonfigurasi rahasia koneksi ke MySQL menggunakan pengaturan aplikasi
  • Menyebarkan kode aplikasi menggunakan GitHub Actions
  • Memperbarui dan menyebarkan ulang aplikasi
  • Menjalankan migrasi database secara aman
  • Mengalirkan log diagnostik dari Azure
  • Mengelola aplikasi di portal Microsoft Azure

Prasyarat

Aplikasi sampel

Untuk mengikuti tutorial ini, kloning atau unduh aplikasi sampel dari repositori:

git clone https://github.com/Azure-Samples/laravel-tasks.git

Jika Anda ingin menjalankan aplikasi secara lokal, lakukan hal berikut:

  • Di .env, konfigurasikan pengaturan database (seperti DB_DATABASE, DB_USERNAME, dan DB_PASSWORD) menggunakan pengaturan di database server fleksibel Azure Database for MySQL lokal Anda. Anda memerlukan instans server fleksibel Azure Database for MySQL lokal untuk menjalankan sampel ini.

  • Dari akar repositori, mulai Laravel dengan perintah berikut:

    composer install
    php artisan migrate
    php artisan key:generate
    php artisan serve
    

1 - Membuat App Service dan sumber daya server fleksibel Azure Database for MySQL

Dalam langkah ini, Anda membuat sumber daya Azure. Langkah-langkah yang digunakan dalam tutorial ini membuat App Service dan konfigurasi server fleksibel Azure Database for MySQL yang aman secara default. Untuk proses pembuatan, Anda akan menentukan:

  • Nama untuk aplikasi web. Ini adalah nama yang digunakan sebagai bagian dari nama DNS untuk aplikasi web Anda dalam bentuk https://<app-name>.azurewebsites.net.
  • Runtime untuk aplikasi. Di situlah Anda memilih versi PHP yang digunakan 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.

Petunjuk Cuplikan layar
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.
A screenshot showing how to use the search box in the top tool bar to find the Web App + Database creation wizard.
Di halaman Buat Apl Web + Database, isi formulir sebagai berikut.
  1. Grup Sumber Daya → Pilih Buat baru dan gunakan nama dari msdocs-laravel-mysql-tutorial.

  2. Wilayah → Wilayah Azure di dekat Anda.

  3. Namamsdocs-laravel-mysql-XYZ dimana XYZ adalah tiga karakter acak. Nama ini harus unik di seluruh Azure.

  4. Stack runtime.NET 8.0

    MySQL - Server Fleksibel dipilih untuk Anda secara default sebagai mesin database. Azure Database for MySQL adalah database MySQL yang dikelola sepenuhnya sebagai layanan di Azure, kompatibel dengan edisi komunitas terbaru.

  5. Perhatikan nama database yang dihasilkan untuk Anda (<app-name>-database). Anda akan membutuhkannya nanti.

  6. Klik Tinjau + buat.

Setelah validasi selesai, klik Buat.
A screenshot showing how to configure a new app and database in the Web App + Database wizard.
Penyebaran membutuhkan waktu beberapa menit untuk diselesaikan, dan membuat sumber daya berikut:
  • Grup sumber daya → Kontainer untuk semua sumber daya yang dibuat.
  • App Service → Menentukan sumber daya komputasi untuk App Service. Paket Linux di tingkat P1v2 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 - Server Fleksibel → Hanya dapat diakses dari jaringan virtual. Database dan pengguna dibuat untuk Anda di server.
  • Zona DNS privat → Memungkinkan resolusi DNS server database MySQL di jaringan virtual.
Setelah penyebaran selesai, pilih tombol Buka sumber daya. Anda dibawa langsung ke aplikasi App Service.
A screenshot showing the form to fill out to create a web app in Azure.

2 - Menyiapkan konektivitas database

Wizard pembuatan menghasilkan pengaturan aplikasi untuk Anda gunakan untuk menyambungkan ke database, tetapi belum dalam format yang dapat digunakan untuk kode Anda. Dalam langkah ini, Anda mengedit dan memperbarui pengaturan aplikasi ke format yang dibutuhkan aplikasi Anda.

Petunjuk Cuplikan layar
Di halaman App Service, di menu sebelah kiri, pilih Konfigurasi. A screenshot showing how to open the configuration page in App Service.
Di tab Pengaturan aplikasi halaman Konfigurasi , untuk setiap pengaturan berikut, klik Edit, perbarui bidang Nama dengan nilai baru dan klik OK.
Nama Saat Ini Nama Baru
AZURE_MYSQL_DBNAME DB_DATABASE
AZURE_MYSQL_HOST DB_HOST
AZURE_MYSQL_USERNAME DB_USERNAME
AZURE_MYSQL_PASSWORD DB_PASSWORD
A screenshot showing how to see the autogenerated connection string.
Buat pengaturan database baru MYSQL_ATTR_SSL_CA :
  1. Klik Pengaturan aplikasi baru.

  2. Di bidang Nama, masukkan MYSQL_ATTR_SSL_CA.

  3. Di bidang Nilai, masukkan /home/site/wwwroot/ssl/DigiCertGlobalRootCA.crt.pem.

    Pengaturan aplikasi ini menunjuk ke jalur sertifikat TLS/SSL yang Anda butuhkan untuk mengakses server MySQL. Ini termasuk dalam repositori sampel untuk kenyamanan.

  4. Klik OK.

A screenshot showing how to create an app setting.
Buat pengaturan aplikasi tambahan berikut dengan mengikuti langkah-langkah yang sama, lalu klik Simpan.
  • APP_DEBUG: Gunakan true sebagai nilai. Ini adalah variabel penelusuran kesalahan Laravel.

  • APP_KEY: Gunakan base64:Dsz40HWwbCqnq0oxMsjq7fItmKIeBfCBGORfspaI1Kw= sebagai nilai. Ini adalah variabel enkripsi Laravel.

    Penting

    Nilai APP_KEY ini digunakan di sini untuk kenyamanan. Untuk skenario produksi, skenario tersebut harus dihasilkan khusus untuk penyebaran Anda menggunakan php artisan key:generate --show di baris perintah.

A screenshot showing all the required app settings in the configuration page.

3 - Menyebarkan kode sampel

Dalam langkah ini, Anda akan 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 repositori GitHub Anda akan memulai tindakan build dan deploy. Anda akan membuat beberapa perubahan pada basis kode Anda dengan Visual Studio Code langsung di browser, lalu membiarkan GitHub Actions menyebarkan secara otomatis untuk Anda.

Petunjuk Cuplikan layar
Di jendela browser baru:
  1. Masuk ke akun GitHub Anda.

  2. Buka https://github.com/Azure-Samples/laravel-tasks.

  3. Klik Fork.

  4. Klik Buat fork.

A screenshot showing how to create a fork of the sample GitHub repository.
Di halaman GitHub, buka Visual Studio Code di browser dengan menekan tombol .. A screenshot showing how to open the Visual Studio Code browser experience in GitHub.
Di Visual Studio Code di browser, buka config/database.php di penjelajah. Di koneksi mysql, lihat apakah pengaturan aplikasi yang Anda buat sebelumnya untuk koneksi MySQL sudah digunakan (DB_HOST, DB_DATABASE, DB_USERNAME, DB_PASSWORD, MYSQL_ATTR_SSL_CA). A screenshot showing Visual Studio Code in the browser and an opened file.
Kembali ke halaman App Service, di menu sebelah kiri, pilih Pusat Penyebaran. A screenshot showing how to open the deployment center in App Service.
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 laravel-tasks.

  5. Di Cabang, pilih utama.

  6. Di menu atas, klik Simpan.

App Service menerapkan file alur kerja ke dalam repositori GitHub yang dipilih, di direktori .github/workflows.
A screenshot showing how to configure CI/CD using GitHub Actions.
Di halaman Pusat Penyebaran:
  1. Pilih Log. Eksekusi penyebaran sudah dimulai.

  2. Di item log untuk eksekusi penyebaran, pilih Build/Sebarkan Log.

    Anda dibawa ke repositori GitHub Anda dan melihat bahwa tindakan GitHub sedang berjalan. File alur kerja menentukan dua tahap terpisah, mem-build dan menyebarkan.

A screenshot showing how to open deployment logs in the deployment center.
Untuk membuat perubahan apa pun pada kode Anda, buka Visual Studio Code di browser:
  1. Pilih ekstensi Kontrol Sumber.

  2. Di samping file yang telah diubah, misalnya database.php, pilih + untuk menahapkan perubahan Anda.

  3. Dalam kotak teks, ketik pesan penerapan, misalnya add certificate.

  4. Pilih tanda centang untuk menerapkan dan mendorong ke GitHub.

Jika Anda kembali ke halaman Pusat Penyebaran, Anda akan melihat entri log baru karena eksekusi lain dimulai. Menunggu eksekusi selesai. Memakan waktu 15 menit.

Tip

Tindakan GitHub ditentukan oleh file di repositori GitHub Anda, di .github/workflow. Anda dapat membuatnya lebih cepat dengan menyesuaikan file.

A screenshot showing how to commit your changes in the Visual Studio Code browser experience.

4 - Membuat skema database

Wizard pembuatan menempatkan instans server fleksibel Azure Database for MySQL di belakang titik akhir privat, sehingga hanya dapat diakses dari jaringan virtual. Karena aplikasi App Service sudah terintegrasi dengan jaringan virtual, cara termudah untuk menjalankan migrasi database dengan database Anda adalah langsung dari dalam kontainer App Service.

Petunjuk Cuplikan layar
Di halaman App Service:
  1. Dari menu sebelah kiri, pilih SSH.

  2. Pilih Buka.

Sesi SSH dengan kontainer App Service Anda dibuka di browser. Jika mau, Anda dapat menavigasi langsung ke https://<app-name>.scm.azurewebsites.net/webssh/host sebagai gantinya.
A screenshot showing how to open the SSH shell for your app from the Azure portal.
Di terminal SSH:
  1. CD ke akar kode aplikasi Anda:

    cd /home/site/wwwroot
    
  2. Jalankan migrasi database dari akar aplikasi Anda.

    php artisan migrate --force
    

    Catatan

    Hanya perubahan pada file di /home yang dapat bertahan di luar mulai ulang aplikasi. Perubahan di luar /home tidak dapat bertahan.

A screenshot showing the commands to run in the SSH shell and their output.

5 - Mengubah akar situs

Sebagai gantinya, Siklus hidup aplikasi Laravel dimulai di direktori /publik. Kontainer PHP 8.0 default untuk App Service menggunakan Nginx, yang dimulai di direktori akar aplikasi. Untuk mengubah akar situs, Anda perlu mengubah file konfigurasi Nginx dalam kontainer PHP 8.0 (/etc/nginx/sites-available/default). Untuk kenyamanan Anda, repositori sampel berisi file konfigurasi kustom yang disebut default. Seperti disebutkan sebelumnya, jangan mengganti file ini menggunakan shell SSH, karena perubahan Anda akan hilang setelah aplikasi dimulai ulang.

Petunjuk Cuplikan layar
Di halaman App Service:
  1. Dari menu kiri, pilih Konfigurasi.

  2. Pilih tab Pengaturan umum.

A screenshot showing how to open the general settings tab in the configuration page of App Service.
Di tab Pengaturan umum:
  1. Dalam kotak Perintah Startup, masukkan perintah berikut: cp /home/site/wwwroot/default /etc/nginx/sites-available/default && service nginx reload.

    Ini menggantikan file konfigurasi Nginx dalam kontainer PHP 8.0 dan memulai ulang Nginx. Konfigurasi ini memastikan bahwa perubahan ini dilakukan pada kontainer setiap kali dimulai.

  2. Pilih Simpan.

A screenshot showing how to configure a startup command in App Service.

6 - Menelusuri aplikasi

Petunjuk Cuplikan layar
Di halaman App Service:
  1. Dari menu kiri, pilih Ringkasan.

  2. Pilih URL aplikasi Anda.

    Anda juga dapat menavigasi langsung ke https://<app-name>.azurewebsites.net.

A screenshot showing how to launch an App Service from the Azure portal.
Tambahkan beberapa tugas ke daftar. Selamat, Anda menjalankan aplikasi PHP berbasis data di Azure App Service. A screenshot of the Laravel app running in App Service.

7 - Mengalirkan log diagnostik

Petunjuk Cuplikan layar
Di halaman App Service:
  1. Dari menu kiri, pilih Log App Service.

  2. Di Pengelogan aplikasi, pilih Sistem File.

A screenshot showing how to enable native logs in App Service in the Azure portal.
Dari menu kiri, klik Aliran log. Anda melihat log untuk aplikasi Anda, termasuk log platform dan log dari dalam kontainer. A screenshot showing how to view the log stream in the Azure portal.

Membersihkan sumber daya

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

Petunjuk Cuplikan layar
Di bilah pencarian di bagian atas portal Azure:
  1. Masukkan nama grup sumber daya.

  2. Pilih grup sumber daya.

A screenshot showing how to search for and navigate to a resource group in the Azure portal.
Pada halaman grup sumber daya, pilih Hapus grup sumber daya. A screenshot showing the location of the Delete Resource Group button in the Azure portal.
  1. Masukkan nama grup sumber daya untuk mengonfirmasi penghapusan Anda.

  2. Klik Hapus.

A screenshot of the confirmation dialog for deleting a resource group in the Azure portal.

Tanya jawab umum

Berapa biaya untuk penyiapan ini?

Harga untuk buat sumber daya adalah sebagai berikut:

  • Paket App Service dibuat di tingkat Premium V2 dan dapat ditingkatkan atau diturunkan. Lihat Harga App Service.
  • Instans server fleksibel Azure Database for MySQL dibuat di tingkat B1ms dan dapat ditingkatkan atau diturunkan skalanya. Dengan akun gratis Azure, tingkat B1ms gratis selama 12 bulan, hingga batas bulanan. Lihat Harga server fleksibel Azure Database for MySQL.
  • 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 database server fleksibel Azure Database for MySQL yang diamankan di belakang jaringan virtual?

Untuk menyambungkan ke database server fleksibel Azure Database for MySQL, Anda dapat menggunakan beberapa metode berdasarkan alat dan lingkungan yang Anda inginkan:

  • Akses alat baris perintah:
    • mysql Gunakan perintah dari terminal SSH aplikasi untuk akses dasar.
  • Alat desktop (misalnya, MySQL Workbench):
    • Menggunakan penerowongan SSH dengan Azure CLI:
      • Buat sesi SSH ke aplikasi web dengan menggunakan Azure CLI.
      • Gunakan sesi SSH untuk membuat terowongan lalu lintas ke MySQL.
    • Menggunakan VPN situs-ke-situs atau Azure VM:
      • Komputer Anda harus menjadi bagian dari jaringan virtual.
      • Pertimbangkan untuk menggunakan:
        • Azure VM yang ditautkan ke salah satu subnet.
        • Komputer di jaringan lokal yang memiliki koneksi VPN situs-ke-situs ke jaringan virtual Azure.
  • Integrasi Azure Cloud Shell:

Bagaimana cara kerja pengembangan aplikasi lokal dengan GitHub Actions?

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

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

Mengapa penyebaran GitHub Actions begitu lambat?

File alur kerja yang dibuat secara otomatis dari App Service mendefinisikan eksekusi dua pekerjaan, build-then-deploy. Karena setiap pekerjaan berjalan di lingkungannya sendiri yang bersih, file alur kerja memastikan bahwa pekerjaan deploy memiliki akses ke file dari pekerjaan build:

Sebagian besar waktu yang dibutuhkan oleh proses dua pekerjaan dihabiskan untuk mengunggah dan mengunduh artefak. Jika mau, Anda dapat menyederhanakan file alur kerja dengan menggabungkan dua pekerjaan menjadi satu, yang menghilangkan kebutuhan untuk langkah-langkah pengunggahan dan pengunduhan.

Ringkasan

Dalam tutorial ini, Anda mempelajari cara:

  • Membuat aplikasi server fleksibel PHP dan Azure Database for MySQL yang aman secara default di Azure
  • Mengonfigurasi rahasia koneksi ke server fleksibel Azure Database for MySQL menggunakan pengaturan aplikasi
  • Menyebarkan kode aplikasi menggunakan GitHub Actions
  • Memperbarui dan menyebarkan ulang aplikasi
  • Menjalankan migrasi database secara aman
  • Mengalirkan log diagnostik dari Azure
  • Mengelola aplikasi di portal Microsoft Azure

Langkah berikutnya