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.
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_USERNAME
danDB_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:
- Masukkan "database apl web" di bilah pencarian di bagian atas portal Azure.
- 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.
- Grup Sumber Daya → Pilih Buat baru dan gunakan nama dari msdocs-laravel-mysql-tutorial.
- Wilayah → Wilayah Azure di dekat Anda.
- Nama → msdocs-laravel-mysql-XYZ dimana XYZ adalah tiga karakter acak. Nama ini harus unik di seluruh Azure.
- Tumpukan runtime → PHP 8.2.
- Menambahkan Azure Cache for Redis? → Ya.
- Paket hosting → Dasar. Setelah siap, Anda dapat melakukan peningkatan ke tingkat harga produksi nanti.
- 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.
- Pilih Tinjau + buat.
- 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.
- 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.
2 - Menyiapkan konektivitas database
Langkah 1: Di halaman App Service, di menu sebelah kiri, pilih Konfigurasi.
Langkah 2:
- Temukan pengaturan aplikasi yang dimulai dengan AZURE_MYSQL_. Mereka dihasilkan dari database MySQL baru oleh wizard pembuatan.
- 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.
- 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.
Langkah 3: Di tab Pengaturan aplikasi di halaman Konfigurasi , buat CACHE_DRIVER
pengaturan:
- Pilih Pengaturan aplikasi baru.
- Di bidang Nama, masukkan CACHE_DRIVER.
- Di bidang Nilai, masukkan redis.
- Pilih OK.
CACHE_DRIVER
sudah digunakan dalam kode aplikasi Laravel. Pengaturan ini memberi tahu Laravel untuk menggunakan Redis sebagai cache-nya.
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.
- Di bilah menu di bagian atas, pilih Simpan.
- Saat diminta, pilih Lanjutkan.
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:
- Masuk ke akun GitHub Anda.
- Buka https://github.com/Azure-Samples/laravel-tasks.
- Pilih Fork.
- Pilih Buat fork.
Langkah 2: Di halaman GitHub, buka Visual Studio Code di browser dengan menekan tombol .
.
Langkah 3: Di Visual Studio Code di browser, buka konfigurasi/database.php di penjelajah. Temukan bagian mysql
dan buat perubahan berikut:
- Ganti
DB_HOST
denganAZURE_MYSQL_HOST
. - Ganti
DB_DATABASE
denganAZURE_MYSQL_DBNAME
. - Ganti
DB_USERNAME
denganAZURE_MYSQL_USERNAME
. - Ganti
DB_PASSWORD
denganAZURE_MYSQL_PASSWORD
. - Ganti
DB_PORT
denganAZURE_MYSQL_PORT
. Ingatlah bahwa pengaturan iniAZURE_MYSQL_
dibuat untuk Anda oleh wizard buat.
Langkah 4: Dalam konfigurasi/database.php gulir ke bagian Redis cache
dan buat perubahan berikut:
- Ganti
REDIS_HOST
denganAZURE_REDIS_HOST
. - Ganti
REDIS_PASSWORD
denganAZURE_REDIS_PASSWORD
. - Ganti
REDIS_PORT
denganAZURE_REDIS_PORT
. - Ganti
REDIS_CACHE_DB
denganAZURE_REDIS_DATABASE
. - Di bagian yang sama, tambahkan baris dengan
'scheme' => 'tls',
. Konfigurasi ini memberi tahu Laravel untuk menggunakan enkripsi untuk terhubung ke Redis. Ingatlah bahwa pengaturan iniAZURE_REDIS_
dibuat untuk Anda oleh wizard buat.
Langkah 5:
- Pilih ekstensi Kontrol Sumber.
- Di kotak teks, ketik pesan penerapan seperti
Configure DB & Redis variables
. - Pilih Terapkan dan Dorong.
Langkah 6: Kembali ke halaman App Service, di menu sebelah kiri, pilih Pusat Penyebaran.
Langkah 7: Di halaman Pusat Penyebaran:
- Di Sumber, pilih GitHub. Secara default, GitHub Actions dipilih sebagai penyedia build.
- Masuk ke akun GitHub Anda dan ikuti perintah untuk mengotorisasi Azure.
- Di Organisasi, pilih akun Anda.
- Di Repositori, pilih laravel-task.
- Di Cabang, pilih utama.
- Di menu atas, pilih Simpan. App Service menerapkan file alur kerja ke dalam repositori GitHub yang dipilih, di direktori
.github/workflows
.
Langkah 8: Di halaman Pusat Penyebaran:
- Pilih Log. Eksekusi penyebaran sudah dimulai.
- Di item log untuk eksekusi penyebaran, pilih Build/Sebarkan Log.
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.
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.
Langkah 2: Di terminal SSH:
- Jalankan
cd /home/site/wwwroot
. Berikut adalah semua file yang Anda sebarkan. - 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.
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:
- Dari menu kiri, pilih Konfigurasi.
- Pilih tab Pengaturan umum.
Langkah 2: Di tab Pengaturan umum:
- Dalam kotak Perintah Startup, masukkan perintah berikut: cp /home/site/wwwroot/default /etc/nginx/sites-available/default && service nginx reload.
- 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.
6 - Menelusuri aplikasi
Langkah 1: Di halaman App Service:
- Dari menu kiri, pilih Ringkasan.
- Pilih URL aplikasi Anda. Anda juga dapat menavigasi langsung ke
https://<app-name>.azurewebsites.net
.
Langkah 2: Tambahkan beberapa tugas ke daftar. Selamat, Anda menjalankan aplikasi PHP berbasis data yang aman di Azure 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:
- Dari menu kiri, pilih Log App Service.
- Di Pengelogan aplikasi, pilih Sistem File.
Langkah 2: Dari menu sebelah kiri, pilih Aliran log. Anda melihat log untuk aplikasi Anda, termasuk log platform dan log dari dalam kontainer.
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:
- Masukkan nama grup sumber daya.
- Pilih grup sumber daya.
Langkah 2: Di halaman grup sumber daya, pilih Hapus grup sumber daya.
Langkah 3:
- Masukkan nama grup sumber daya untuk mengonfirmasi penghapusan Anda.
- Pilih Hapus.
Tanya jawab umum
- Berapa biaya untuk penyiapan ini?
- Bagaimana cara menyambungkan ke database MySQL yang diamankan di belakang jaringan virtual dengan alat lain?
- Bagaimana cara kerja pengembangan aplikasi lokal dengan GitHub Actions?
- Mengapa penyebaran GitHub Actions begitu lambat?
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
:
- Di akhir pekerjaan
build
, unggah file sebagai artefak. - Di awal pekerjaan
deploy
, unduh artefak.
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: