Bagikan melalui


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.

Cuplikan layar contoh aplikasi Azure berjudul Daftar Tugas memperlihatkan tugas baru ditambahkan.

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.
Cuplikan layar yang menunjukkan cara menggunakan kotak pencarian di bilah alat atas untuk menemukan wizard pembuatan Apl Web + Database.
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.
Cuplikan layar yang menampilkan cara mengonfigurasi apl dan database baru di wizard Apl Web + Database.
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.
Cuplikan layar yang menunjukkan formulir yang harus diisi untuk membuat aplikasi web di 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. Cuplikan layar yang menampilkan cara membuka halaman konfigurasi di 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
Cuplikan layar menampilkan cara melihat string koneksi yang dihasilkan secara otomatis.
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.

Cuplikan layar menampilkan cara membuat pengaturan aplikasi.
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.

Cuplikan layar yang menampilkan pengaturan aplikasi yang diperlukan di halaman konfigurasi.

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.

Cuplikan layar yang menampilkan cara membuat fork repositori GitHub sampel.
Di halaman GitHub, buka Visual Studio Code di browser dengan menekan tombol .. Cuplikan layar yang menampilkan cara membuka pengalaman browser Visual Studio Code di 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). Cuplikan layar yang menampilkan Visual Studio Code di browser dan file yang terbuka.
Kembali ke halaman App Service, di menu sebelah kiri, pilih Pusat Penyebaran. Cuplikan layar yang menampilkan cara membuka pusat penyebaran di 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.
Cuplikan layar menampilkan cara mengonfigurasi CI/CD menggunakan 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.

Cuplikan layar yang menampilkan cara membuka log penyebaran di pusat penyebaran.
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.

Cuplikan layar yang menampilkan cara menerapkan perubahan di pengalaman browser Visual Studio Code.

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.
Cuplikan layar yang menampilkan cara membuka shell SSH untuk aplikasi Anda dari portal Azure.
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.

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

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.

Cuplikan layar yang menampilkan cara membuka tab pengaturan umum di halaman konfigurasi 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.

Cuplikan layar yang menampilkan cara mengonfigurasi perintah startup di 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.

Cuplikan layar yang menampilkan cara meluncurkan App Service dari portal Azure.
Tambahkan beberapa tugas ke daftar. Selamat, Anda menjalankan aplikasi PHP berbasis data di Azure App Service. Cuplikan layar aplikasi Lavarel yang berjalan di 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.

Cuplikan layar yang menampilkan cara mengaktifkan log asli di App Service di portal Azure.
Dari menu kiri, klik Aliran log. Anda melihat log untuk aplikasi Anda, termasuk log platform dan log dari dalam kontainer. Cuplikan layar yang menampilkan cara melihat aliran log di porta Azure.

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.

Cuplikan layar yang menunjukkan cara mencari dan menavigasi ke grup sumber daya di portal Azure.
Pada halaman grup sumber daya, pilih Hapus grup sumber daya. Cuplikan layar yang menunjukkan letak tombol Hapus Grup Sumber Daya di portal Azure.
  1. Masukkan nama grup sumber daya untuk mengonfirmasi penghapusan Anda.

  2. Klik Hapus.

Cuplikan layar dialog konfirmasi untuk menghapus grup sumber daya di portal Azure.

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