Bagikan melalui


Tutorial: Menyebarkan aplikasi PHP, MySQL, dan Redis ke Azure App Service

Tutorial ini menunjukkan cara membuat aplikasi PHP aman di Azure App Service yang terhubung ke database MySQL (menggunakan server fleksibel Azure Database for MySQL). Anda juga akan menyebarkan Azure Cache for Redis untuk mengaktifkan kode penembolokan di aplikasi Anda. 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 akan memiliki aplikasi Laravel yang berjalan di Azure App Service di Linux.

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

Jika Anda tidak memiliki Langganan Azure, buat Akun gratis Azure sebelum memulai.

Aplikasi sampel

Untuk mengikuti tutorial ini, kloning atau unduh sampel aplikasi Laravel 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_USERNAMEdan DB_PASSWORD) menggunakan pengaturan di database MySQL lokal Anda. Anda memerlukan server 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 sumber daya App Service dan MySQL

Dalam langkah ini, Anda membuat sumber daya Azure. Langkah-langkah yang digunakan dalam tutorial ini membuat konfigurasi App Service dan 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.

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.

Cuplikan layar yang menunjukkan cara menggunakan kotak pencarian di bilah alat atas untuk menemukan wizard pembuatan Apl Web + Database.

Langkah 2: Di halaman Buat Aplikasi 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. Tumpukan runtime → PHP 8.2.
  5. Menambahkan Azure Cache for Redis? → Ya.
  6. Paket hostingDasar. Setelah siap, Anda dapat melakukan peningkatan ke tingkat harga produksi nanti.
  7. 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.
  8. Pilih Tinjau + buat.
  9. Setelah validasi selesai, pilih Buat.

Cuplikan layar yang menampilkan cara mengonfigurasi apl dan database baru di wizard Apl Web + Database.

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.
  • App Service → Menentukan sumber daya komputasi untuk App Service. Paket Linux di 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.
  • Titik akhir privat → Titik akhir Akses untuk server database dan cache Redis di jaringan virtual.
  • Antarmuka jaringan → Mewakili alamat IP privat, satu untuk setiap titik akhir privat.
  • Server fleksibel Azure Database for MySQL → Hanya dapat diakses dari belakang titik akhir privatnya. Database dan pengguna dibuat untuk Anda di server.
  • Azure Cache for Redis → Hanya dapat diakses dari belakang titik akhir privatnya.
  • Zona DNS privat → Mengaktifkan resolusi DNS server database dan cache Redis di jaringan virtual.

Cuplikan layar menunjukkan proses penyebaran selesai.

2 - Menyiapkan konektivitas database

Langkah 1: Di halaman App Service, di menu sebelah kiri, pilih Konfigurasi.

Cuplikan layar yang menampilkan cara membuka halaman konfigurasi di App Service.

Langkah 2:

  1. Temukan pengaturan aplikasi yang dimulai dengan AZURE_MYSQL_. Mereka dihasilkan dari database MySQL baru oleh wizard pembuatan.
  2. Selain itu, temukan pengaturan aplikasi yang dimulai dengan AZURE_REDIS_. Cache tersebut dihasilkan dari cache Redis baru oleh wizard pembuatan. Untuk menyiapkan aplikasi Anda, nama ini adalah semua yang Anda butuhkan.
  3. Jika mau, Anda dapat memilih tombol Edit di sebelah kanan setiap pengaturan dan melihat atau menyalin nilainya. Nantinya, Anda akan mengubah kode aplikasi untuk menggunakan pengaturan ini.

Cuplikan layar menampilkan cara membuat pengaturan aplikasi.

Langkah 3: Di tab Pengaturan aplikasi di halaman Konfigurasi , buat CACHE_DRIVER pengaturan:

  1. Pilih Pengaturan aplikasi baru.
  2. Di bidang Nama, masukkan CACHE_DRIVER.
  3. Di bidang Nilai, masukkan redis.
  4. Pilih OK. CACHE_DRIVER sudah digunakan dalam kode aplikasi Laravel. Pengaturan ini memberi tahu Laravel untuk menggunakan Redis sebagai cache-nya.

Cuplikan layar menampilkan cara melihat string koneksi yang dihasilkan secara otomatis.

Langkah 4: Menggunakan langkah yang sama di Langkah 3, buat pengaturan aplikasi berikut:

  • MYSQL_ATTR_SSL_CA: Use /home/site/wwwroot/ssl/DigiCertGlobalRootCA.crt.pem sebagai nilai. Pengaturan aplikasi ini menunjuk ke jalur sertifikat TLS/SSL yang Anda butuhkan untuk mengakses server MySQL. Ini termasuk dalam repositori sampel untuk kenyamanan.
  • LOG_CHANNEL: Gunakan stderr sebagai nilai. Pengaturan ini memberi tahu Laravel untuk menyalurkan log ke stderr, yang membuatnya tersedia untuk log App Service.
  • APP_DEBUG: Gunakan true sebagai nilai. Ini adalah variabel debugging Laravel yang memungkinkan halaman mode debug.
  • APP_KEY: Gunakan base64:Dsz40HWwbCqnq0oxMsjq7fItmKIeBfCBGORfspaI1Kw= sebagai nilai. Ini adalah variabel enkripsi Laravel.
  1. Di bilah menu di bagian atas, pilih Simpan.
  2. Saat diminta, pilih Lanjutkan.

Cuplikan layar yang menunjukkan cara menyimpan pengaturan di halaman konfigurasi.

Penting

Nilai APP_KEY 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.

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 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.

Langkah 1: Di jendela browser baru:

  1. Masuk ke akun GitHub Anda.
  2. Buka https://github.com/Azure-Samples/laravel-tasks.
  3. Pilih Fork.
  4. Pilih Buat fork.

Cuplikan layar yang menampilkan cara membuat fork repositori GitHub sampel.

Langkah 2: 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.

Langkah 3: Di Visual Studio Code di browser, buka konfigurasi/database.php di penjelajah. Temukan bagian mysql dan buat perubahan berikut:

  1. Ganti DB_HOST dengan AZURE_MYSQL_HOST.
  2. Ganti DB_DATABASE dengan AZURE_MYSQL_DBNAME.
  3. Ganti DB_USERNAME dengan AZURE_MYSQL_USERNAME.
  4. Ganti DB_PASSWORD dengan AZURE_MYSQL_PASSWORD.
  5. Ganti DB_PORT dengan AZURE_MYSQL_PORT. Ingatlah bahwa pengaturan ini AZURE_MYSQL_ dibuat untuk Anda oleh wizard buat.

Cuplikan layar memperlihatkan Visual Studio Code di browser dan file yang dibuka dengan variabel MySQL yang dimodifikasi.

Langkah 4: Dalam konfigurasi/database.php gulir ke bagian Redis cache dan buat perubahan berikut:

  1. Ganti REDIS_HOST dengan AZURE_REDIS_HOST.
  2. Ganti REDIS_PASSWORD dengan AZURE_REDIS_PASSWORD.
  3. Ganti REDIS_PORT dengan AZURE_REDIS_PORT.
  4. Ganti REDIS_CACHE_DB dengan AZURE_REDIS_DATABASE.
  5. Di bagian yang sama, tambahkan baris dengan 'scheme' => 'tls',. Konfigurasi ini memberi tahu Laravel untuk menggunakan enkripsi untuk terhubung ke Redis. Ingatlah bahwa pengaturan ini AZURE_REDIS_ dibuat untuk Anda oleh wizard buat.

Cuplikan layar memperlihatkan Visual Studio Code di browser dan file yang dibuka dengan variabel Redis yang dimodifikasi.

Langkah 5:

  1. Pilih ekstensi Kontrol Sumber.
  2. Di kotak teks, ketik pesan penerapan seperti Configure DB & Redis variables.
  3. Pilih Terapkan dan Dorong.

Cuplikan layar memperlihatkan perubahan yang diterapkan dan didorong ke GitHub.

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

Cuplikan layar yang menampilkan cara membuka pusat penyebaran di App Service.

Langkah 7: 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-task.
  5. Di Cabang, pilih utama.
  6. Di menu atas, pilih 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.

Langkah 8: Di halaman Pusat Penyebaran:

  1. Pilih Log. Eksekusi penyebaran sudah dimulai.
  2. Di item log untuk eksekusi penyebaran, pilih Build/Sebarkan Log.

Cuplikan layar yang menampilkan cara membuka log penyebaran di pusat penyebaran.

Langkah 9: 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. Memakan waktu 15 menit.

Cuplikan layar menunjukkan eksekusi GitHub.

4 - Membuat skema database

Wizard pembuatan menempatkan server database 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.

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

Cuplikan layar yang menampilkan cara membuka shell SSH untuk aplikasi Anda dari portal Azure.

Langkah 2: Di terminal SSH:

  1. Jalankan cd /home/site/wwwroot. Berikut adalah semua file yang Anda sebarkan.
  2. Jalankan php artisan migrate --force. Jika berhasil, App Service berhasil tersambung ke database MySQL. Hanya perubahan pada file di /home yang dapat bertahan di luar mulai ulang aplikasi. Perubahan di luar /home tidak dipertahankan.

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 default untuk App Service menggunakan Nginx, yang dimulai di direktori akar aplikasi. Untuk mengubah akar situs, Anda perlu mengubah file konfigurasi Nginx di kontainer PHP (/etc/nginx/sites-available/default). Untuk kenyamanan Anda, repositori sampel berisi file konfigurasi kustom yang disebut default. Seperti disebutkan sebelumnya, Anda tidak ingin mengganti file ini menggunakan shell SSH, karena perubahan berada di luar /home dan akan hilang setelah aplikasi dimulai ulang.

Langkah 1:

  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.

Langkah 2: 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.
  2. Pilih Simpan. Perintah menggantikan file konfigurasi Nginx dalam kontainer PHP dan memulai ulang Nginx. Konfigurasi ini memastikan bahwa perubahan yang sama dilakukan pada kontainer setiap kali dimulai.

Cuplikan layar yang menampilkan cara mengonfigurasi perintah startup di App Service.

6 - Menelusuri aplikasi

Langkah 1: 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.

Langkah 2: Tambahkan beberapa tugas ke daftar. Selamat, Anda menjalankan aplikasi PHP berbasis data yang aman di Azure App Service.

Cuplikan layar aplikasi Lavarel yang berjalan di App Service.

Tip

Aplikasi sampel mengimplementasikan pola cache-aside . Saat Anda memuat ulang halaman setelah membuat perubahan data, Waktu respons di halaman web menunjukkan waktu yang jauh lebih cepat karena memuat data dari cache alih-alih database.

7 - Mengalirkan log diagnostik

Azure App Service menangkap semua pesan yang masuk ke konsol untuk membantu Anda mendiagnosis masalah dengan aplikasi Anda. Aplikasi sampel mengeluarkan pesan log konsol dalam setiap titik akhirnya untuk menunjukkan kemampuan ini. Secara default, fungsionalitas pengelogan Laravel (misalnya, Log::info()) output ke file lokal. Pengaturan aplikasi Anda LOG_CHANNEL dari sebelumnya membuat entri log dapat diakses dari aliran log App Service.

Langkah 1: 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.

Langkah 2: Dari menu sebelah kiri, pilih 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.

Langkah 1: 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.

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

Cuplikan layar yang menunjukkan letak tombol Hapus Grup Sumber Daya di portal Azure.

Langkah 3:

  1. Masukkan nama grup sumber daya untuk mengonfirmasi penghapusan Anda.
  2. Pilih 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 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, tingkat B1ms gratis selama 12 bulan, hingga batas bulanan. Lihat Harga Azure Database for 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 for 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 database MySQL yang diamankan di belakang jaringan virtual dengan alat lain?

  • Untuk akses dasar dari alat baris perintah, Anda dapat menjalankan mysql dari terminal SSH aplikasi.
  • Untuk terhubung dari alat desktop seperti MySQL Workbench, komputer Anda harus berada dalam jaringan virtual. Misalnya, itu bisa berupa Azure VM yang terhubung ke 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?

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.

Langkah berikutnya

Lanjutkan ke tutorial berikutnya untuk mempelajari cara mengamankan aplikasi Anda dengan domain dan sertifikat kustom.

Atau, lihat sumber daya lainnya: