Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
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 menggunakan Azure Cache for Redis untuk memungkinkan kode penyimpanan sementara 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 memiliki aplikasi Laravel yang berjalan di Azure App Service di Linux.
Prasyarat
- Akun Azure dengan langganan aktif. Jika Anda tidak memiliki akun Azure, Anda dapat membuat akun secara gratis.
- Akun GitHub. Anda juga bisa mendapatkannya secara gratis.
- Pengetahuan tentang PHP dengan pengembangan Laravel.
- (Opsional) Untuk mencoba GitHub Copilot, diperlukan sebuah akun GitHub Copilot. Uji coba gratis 30 hari tersedia.
Jalankan sampel
Siapkan contoh aplikasi berbasis data sebagai titik awal. Repositori sampel mencakup 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:
- Masuk ke akun GitHub Anda.
- Pindah ke https://github.com/Azure-Samples/laravel-tasks/fork.
- Pilih Buat fork.
Langkah 2: Di fork GitHub:
- Pilih Kode>Buat codespace di utama.
Codespace membutuhkan waktu beberapa menit untuk disiapkan. Selain itu, file .env yang disediakan sudah berisi variabel dummy
APP_KEYyang perlu dijalankan Laravel secara lokal.
Langkah 3: Di terminal codespace:
- Jalankan
composer install. - Jalankan migrasi database dengan
php artisan migrate. - Jalankan aplikasi dengan
php artisan serve. - 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 aplikasi, ketik Ctrl + C.
Mengalami masalah? Periksa bagian Pemecahan Masalah.
Membuat App Service, database, dan cache
Dalam langkah ini, Anda membuat sumber daya Azure. Langkah-langkah yang digunakan dalam tutorial ini membuat sekumpulan sumber daya aman secara default yang mencakup App Service, Azure Database for MySQL, dan Azure Cache for Redis. Untuk proses pembuatan, Anda menentukan:
- Nama untuk aplikasi web. Ini digunakan sebagai bagian dari nama DNS untuk aplikasi Anda.
- Wilayah tempat aplikasi dijalankan secara fisik di dunia. Ini juga bagian dari nama DNS untuk aplikasi Anda.
- Runtime stack untuk aplikasi. Di situlah Anda memilih versi PHP yang 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 tersebut. Grup sumber daya memungkinkan Anda mengelompokkan semua sumber daya Azure yang diperlukan untuk aplikasi dalam kontainer logis.
Masuk ke portal Azure. Ikuti langkah-langkah ini untuk membuat sumber daya Azure App Service Anda.
Langkah 1: Di portal Azure:
- Di bilah pencarian atas, ketik layanan aplikasi.
- Pilih item berlabel App Service di bawah judul Layanan .
- Pilih Buat>Aplikasi Web. Anda juga dapat menavigasi ke Membuat Aplikasi Web secara langsung.
Langkah 2: Di halaman Buat Aplikasi Web, isi formulir sebagai berikut.
- Nama: msdocs-laravel-mysql. Portal Microsoft Azure membuat grup sumber daya bernama msdocs-laravel-mysql_group.
- Tumpukan runtime: PHP 8.4.
- Sistem operasi: Linux.
- Wilayah: Wilayah Azure apa pun di dekat Anda.
- Paket Linux: Buat baru dan gunakan nama msdocs-laravel-mysql.
- Rencana harga: Basic. Setelah siap, Anda dapat meningkatkan skala ke tingkat harga yang berbeda.
Langkah 3:
- Pilih Berikutnya untuk melanjutkan ke tab Database .
- Pilih Buat Database.
- Di Mesin, pilih MySQL - Server Fleksibel.
- Pilih Buat Azure Cache for Redis.
- Di Nama (di bawah Cache), masukkan nama untuk cache.
- Di SKU, pilih Dasar.
Langkah 4:
- Pilih Berikutnya untuk melanjutkan ke tab Penyebaran .
- Aktifkan Penyebaran berkelanjutan.
- Di Organisasi, pilih alias GitHub Anda.
- Di Repositori, pilih laravel-tasks.
- Pada bagian Cabang, pilih utama.
- Pastikan autentikasi Dasar dinonaktifkan.
- Pilih Tinjau + kreasikan.
- Setelah validasi selesai, pilih Buat.
Langkah 5: Penyebaran membutuhkan waktu beberapa menit untuk diselesaikan. Untuk melihat aplikasi web, pilih Buka sumber daya. Penyebaran membuat sumber daya berikut:
- Grup sumber daya: Kontainer untuk semua sumber daya yang dibuat.
- Rencana App Service: Menentukan sumber daya komputasi untuk App Service. Rencana Linux pada tingkat Dasar telah 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 pribadi: Titik akhir akses untuk server database dan cache Redis di jaringan virtual.
- Antarmuka jaringan: Mewakili alamat IP privat, satu untuk setiap titik akhir privat.
- Azure Database for MySQL Flexible Server: Hanya dapat diakses melalui 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: Aktifkan resolusi DNS server database dan cache Redis di jaringan virtual.
Rahasia rahasia koneksi yang aman
Penyebaran telah menghasilkan variabel konektivitas untuk Anda sebagai pengaturan aplikasi. Praktik terbaik keamanan adalah menjaga rahasia sepenuhnya di luar App Service. Pindahkan rahasia Anda ke Key Vault dan ubah pengaturan aplikasi Anda ke referensi Key Vault dengan menggunakan Konektor Layanan.
Langkah 1: Ambil string koneksi yang ada.
- Di menu sebelah kiri halaman App Service, pilih Pengaturan>Variabel lingkungan.
- Pilih String Koneksi.
- Pilih AZURE_MYSQL_CONNECTIONSTRING.
- Di pengaturan Tambahkan/Edit aplikasi, di bidang Nilai , salin nama pengguna dan kata sandi untuk digunakan nanti. String sambungan memungkinkan Anda terhubung ke database MySQL yang diamankan di balik titik akhir privat. Rahasia disimpan langsung di aplikasi App Service, yang bukan yang terbaik. Anda akan mengubah konfigurasi ini.
Langkah 2: Buat brankas kunci untuk manajemen rahasia yang aman.
- Di bilah pencarian atas, ketik "Key Vault", lalu pilih Marketplace>Key Vault.
- Di Grup Sumber Daya, pilih msdocs-laravel-mysql_group.
- Di Nama brankas kunci, masukkan nama yang hanya terdiri dari huruf dan angka.
- Di Wilayah, pilih lokasi yang sama dengan grup sumber daya.
Langkah 3: Amankan brankas kunci dengan Titik Akhir Privat.
- Pilih tab Jaringan.
- Batal pilih Aktifkan akses publik.
- Pilih Buat titik akhir privat.
- Di Grup Sumber Daya, pilih msdocs-laravel-mysql_group.
- Dalam dialog, di Lokasi, pilih lokasi yang sama dengan aplikasi App Service Anda.
- Di Nama, masukkan msdocs-laravel-mysqlVaultEndpoint.
- Di Jaringan virtual, pilih jaringan virtual di grup msdocs-laravel-mysql_group .
- Di Subnet, pilih subnet yang kompatibel dengan yang tersedia.
- Pilih OK.
- Pilih Tinjau + buat, lalu pilih Buat. Tunggu hingga penyebaran Key Vault selesai. Anda akan melihat Penyebaran Anda selesai.
Langkah 4: Buat konektor MySQL.
- Di bilah pencarian atas, masukkan msdocs-laravel-mysql, lalu pilih sumber daya App Service yang disebut msdocs-laravel-mysql.
- Di halaman App Service, di menu sebelah kiri, pilih Pengaturan>Konektor Layanan.
- Pilih Buat.
- Untuk Jenis layanan, pilih DB untuk server fleksibel MySQL.
- Untuk server fleksibel MySQL, pilih server Anda, misalnya, msdocs-laravel-mysql-server.
- Untuk database MySQL, pilih database Anda, misalnya, msdocs-laravel-mysql-database.
Langkah 5: Konfigurasikan autentikasi untuk konektor MySQL.
- Pilih tab Autentikasi .
- Pilih Connection string.
- Di Kata Sandi, tempelkan kata sandi yang Anda salin sebelumnya.
- Pilih Simpan Rahasia di Key Vault.
- Di bawah Koneksi Key Vault, pilih Buat baru. Dialog Buat koneksi dibuka di atas dialog edit.
Langkah 6: Buat koneksi Key Vault.
- Dalam dialog Buat koneksi untuk koneksi Key Vault, di Key Vault, pilih brankas kunci yang Anda buat sebelumnya.
- Pilih Tinjau + Buat.
- Saat validasi selesai, pilih Buat.
Langkah 7: Menyelesaikan pengaturan konektor MySQL.
- Anda kembali ke dialog konektor MySQL. Pada tab Autentikasi, tunggu konektor Key Vault dibuat. Setelah selesai, Koneksi Key Vault akan dipilih secara otomatis.
- Pilih Tinjau + Buat.
- Pilih Buat. Tunggu hingga pemberitahuan Pembaruan berhasil muncul.
Langkah 8: Konfigurasikan konektor Redis untuk menggunakan rahasia Key Vault.
- Di halaman Konektor Layanan, pilih kotak centang di samping konektor Cache for Redis, lalu pilih Edit.
- Pilih tab Autentikasi .
- Pilih Simpan Rahasia di Key Vault.
- Di bawah Key Vault Connection, pilih key vault yang Anda buat.
- Pilih Next: Networking.
- Pilih Konfigurasikan aturan firewall untuk mengaktifkan akses ke layanan target. Wizard pembuatan aplikasi sudah mengamankan database SQL dengan titik akhir privat.
- Pilih Simpan. Tunggu hingga pemberitahuan Pembaruan berhasil muncul.
Langkah 9: Verifikasi integrasi Key Vault.
- Dari menu sebelah kiri, pilih variabel Lingkungan Pengaturan> lagi.
- Di samping AZURE_MYSQL_PASSWORD, pilih Perlihatkan nilai. Nilainya harus
@Microsoft.KeyVault(...), yang berarti bahwa itu adalah referensi ke brankas kunci karena rahasianya sekarang dikelola di dalam brankas kunci. - Untuk memverifikasi string koneksi Redis, pilih Perlihatkan nilai di samping AZURE_REDIS_CONNECTIONSTRING.
Untuk meringkas, proses mengamankan rahasia koneksi Anda melibatkan:
- Mengambil informasi rahasia koneksi dari variabel pada lingkungan aplikasi App Service.
- Membuat penyimpanan kunci.
- Membuat koneksi Key Vault dengan identitas terkelola yang ditetapkan sistem.
- Memperbarui konektor layanan untuk menyimpan rahasia di tempat penyimpanan kunci.
Mengalami masalah? Periksa bagian Pemecahan Masalah.
Mengonfigurasi variabel Laravel
Langkah 1: Buat CACHE_DRIVER sebagai pengaturan aplikasi.
- Di aplikasi web Anda, pilihVariabel Lingkungan>.
- Di tab Pengaturan aplikasi, pilih Tambahkan.
- Untuk Nama, masukkan CACHE_DRIVER.
- Untuk Nilai, masukkan redis.
- Pilih Terapkan, lalu Terapkan lagi, lalu Konfirmasi.
Langkah 2: Dengan menggunakan langkah yang sama di Langkah 1, buat pengaturan aplikasi berikut. Setelah selesai, pilih Terapkan untuk memperbarui pengaturan Aplikasi Anda.
- 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.
- LOG_CHANNEL: Gunakan stderr sebagai nilai. Pengaturan ini memberi tahu Laravel untuk menyalurkan log ke stderr, sehingga tersedia dalam log App Service.
- APP_DEBUG: Gunakan true sebagai nilai. Ini adalah variabel debugging Laravel yang mengaktifkan halaman dalam mode debug.
- APP_KEY: Gunakan base64:Dsz40HWwbCqnq0oxMsjq7fItmKIeBfCBGORfspaI1Kw= sebagai nilai. Ini adalah variabel enkripsi Laravel.
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.
Idealnya, pengaturan aplikasi APP_KEY harus dikonfigurasi sebagai referensi key vault juga, yang merupakan proses multilangkah. Untuk informasi selengkapnya, lihat Bagaimana cara mengubah pengaturan aplikasi APP_KEY ke referensi Key Vault?
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 otomatis, setiap git push ke repositori GitHub Anda memulai proses pembangunan dan penerapan.
Langkah 1: Kembali ke ruang kode GitHub dari fork sampel Anda, jalankan git pull origin main.
Perintah ini menarik file alur kerja yang baru dikomit ke dalam ruang kode Anda.
Langkah 2 (Opsi 1: dengan GitHub Copilot):
- Mulai sesi obrolan baru dengan memilih tampilan Obrolan , lalu pilih +.
- Tanyakan, "@workspace Bagaimana aplikasi tersambung ke database dan redis?" Copilot mungkin memberi Anda beberapa penjelasan tentang bagaimana pengaturan dikonfigurasi dalam konfigurasi/database.php.
- Tanyakan, "@workspace Dalam mode produksi, aplikasi saya berjalan di aplikasi web App Service, yang menggunakan Konektor Layanan Azure untuk menyambungkan ke server fleksibel MySQL. Apa nama variabel lingkungan yang perlu saya gunakan?" Copilot mungkin memberi Anda saran kode yang mirip dengan yang ada di Opsi 2: tanpa langkah-langkah GitHub Copilot dan bahkan memberi tahu Anda untuk membuat perubahan dalam file config/database.php .
- Buka konfigurasi/database.php di penjelajah dan tambahkan saran kode.
- Tanyakan, "@workspace aplikasi My App Service juga menggunakan Konektor Layanan Azure untuk menyambungkan ke Cache for Redis menggunakan jenis klien Django. Apa nama variabel lingkungan yang perlu saya gunakan?" Copilot mungkin memberi Anda saran kode yang mirip dengan yang ada di Opsi 2: tanpa langkah-langkah GitHub Copilot dan bahkan memberi tahu Anda untuk membuat perubahan dalam file config/database.php . Jika diminta, masuk ke GitHub Copilot untuk Azure untuk mendapatkan jawaban yang lebih akurat.
- Tambahkan saran kode.
GitHub Copilot tidak memberi Anda respons yang sama setiap kali, dan itu tidak selalu benar. 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 2 (Opsi 2: tanpa GitHub Copilot):
- Buka konfigurasi/database.php di penjelajah. Temukan bagian
mysqldan buat perubahan berikut: - Ganti
DB_HOST(baris 49) denganAZURE_MYSQL_HOST. - Ganti
DB_DATABASE(baris 51) denganAZURE_MYSQL_DBNAME. - Ganti
DB_USERNAME(baris 52) denganAZURE_MYSQL_USERNAME. - Ganti
DB_PASSWORD(baris 53) denganAZURE_MYSQL_PASSWORD. - Ganti
DB_PORT(baris 50) denganAZURE_MYSQL_PORT. - Gulir ke bagian Redis
cachedan buat perubahan berikut: - Ganti
REDIS_HOST(baris 142) denganAZURE_REDIS_HOST. - Ganti
REDIS_PASSWORD(baris 144) denganAZURE_REDIS_PASSWORD. - Ganti
REDIS_PORT(baris 145) denganAZURE_REDIS_PORT. - Ganti
REDIS_CACHE_DB(baris 146) denganAZURE_REDIS_DATABASE. - Di bagian yang sama, tambahkan baris dengan
'scheme' => 'tls',. Konfigurasi ini memberi tahu Laravel untuk menggunakan enkripsi untuk terhubung ke Redis.
Langkah 3:
- Pilih ekstensi Kontrol Sumber.
- Di kotak teks, ketik pesan penerapan seperti Mengonfigurasi database Azure dan koneksi cache. Atau, pilih
dan biarkan GitHub Copilot menghasilkan pesan penerapan untuk Anda. - Pilih Terapkan, lalu konfirmasi dengan Ya.
- Pilih Sinkronkan perubahan 1, lalu konfirmasi dengan OK.
Langkah 4:
- Di portal Azure, buka aplikasi web Anda lalu pilih Pusat Penyebaran>Pusat Penyebaran.
- Pilih Log, lalu pilih Refresh untuk melihat proses deploymen baru.
- Di item log untuk eksekusi penyebaran, pilih entri Bangun/Sebarkan Log dengan tanda waktu terbaru.
Langkah 5: 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 menunjukkan status Keberhasilan. Dibutuhkan sekitar 10 menit.
Mengalami masalah? Periksa bagian Pemecahan Masalah.
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 Alat Pengembangan>SSH.
- Pilih Buka.
Langkah 2: Di terminal SSH:
- Jalankan
cd /home/site/wwwroot. Berikut adalah semua file yang telah Anda sebarkan. - Jalankan
php artisan migrate --force. Jika berhasil, App Service berhasil tersambung ke database MySQL.
Petunjuk
Dalam sesi SSH, hanya perubahan pada file di /home yang dapat bertahan di luar mulai ulang aplikasi. Perubahan di luar /home tidak dipertahankan.
Ubah 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). Repositori sampel berisi file konfigurasi kustom yang disebut default. Seperti disebutkan sebelumnya, Anda tidak ingin mengganti file ini menggunakan shell SSH. Perubahan berada di luar /home dan hilang setelah aplikasi dimulai ulang.
Langkah 1:
- Dari menu sebelah kiri, pilihKonfigurasi>.
- 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, lalu pilih Lanjutkan. 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.
Jelajahi aplikasi
Langkah 1: Di halaman App Service:
- Dari menu kiri, pilih Ringkasan.
- Pilih Domain default aplikasi Anda.
Langkah 2: Tambahkan beberapa tugas ke daftar. Selamat, Anda menjalankan aplikasi PHP berbasis data yang aman di Azure App Service.
Petunjuk
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.
Mentransmisikan 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 di setiap endpoint-nya untuk menunjukkan kemampuan tersebut. Secara default, fungsionalitas pengelogan Laravel, misalnya, Log::info(), output ke file lokal. Pengaturan aplikasi Anda LOG_CHANNEL sebelumnya membuat entri log dapat diakses dari aliran log App Service.
Langkah 1: Di halaman App Service:
- Dari menu sebelah kiri, pilih Pemantauan>Log Layanan Aplikasi.
- Di Pengelogan aplikasi, pilih Sistem File.
Langkah 2: Dari menu sebelah kiri, pilih Aliran log. Anda dapat melihat log untuk aplikasi Anda, termasuk log platform dan log yang berasal 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:
- Untuk mengonfirmasi penghapusan Anda, masukkan nama grup sumber daya.
- Pilih Hapus.
Membuat sumber daya Azure dan menyebarkan 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.
Ruang kode GitHub sudah memiliki Azure Developer CLI (AZD).
Hasilkan kunci enkripsi Laravel dengan
php artisan key:generate --show:php artisan key:generate --showMasuk ke Azure dengan menjalankan
azd auth loginperintah dan ikuti perintah:azd auth loginBuat sumber daya Azure yang diperlukan dan sebarkan kode aplikasi dengan
azd upperintah . Ikuti perintah untuk memilih langganan dan lokasi yang diinginkan untuk sumber daya Azure.azd upSaat diminta, berikan jawaban berikut:
Pertanyaan Jawaban 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.Pilih Langganan Azure yang akan digunakan Pilih langganan Anda. Pilih lokasi Azure yang akan digunakan Pilih lokasi. Masukkan nilai untuk parameter aman infrastruktur 'appKey' Gunakan output dari php artisan key:generate --showsini. Templat AZD membuat rahasia Key Vault yang dapat Anda gunakan di aplikasi Anda.Masukkan nilai untuk parameter aman infrastruktur 'databasePassword' Kata sandi database untuk MySQL. Panjangnya harus minimal 8 karakter dan berisi huruf besar, huruf kecil, angka, dan karakter khusus. Perintah
azd upmembutuhkan waktu sekitar 15 menit untuk diselesaikan. Cache Redis membutuhkan waktu paling lama. Perintah ini juga mengkompilasi dan menyebarkan kode aplikasi Anda, tetapi Anda mengubah kode nanti untuk 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: Menentukan sumber daya komputasi untuk App Service. Sebuah rencana Linux di tingkat B1 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 melalui jaringan virtual dengan integrasi zona DNS. Database dibuat untuk Anda di server.
- Azure Cache for Redis: Hanya dapat diakses dari dalam jaringan virtual.
- Titik akhir privat: Titik akhir akses untuk brankas kunci dan cache Redis di jaringan virtual.
- Zona DNS Pribadi: Aktifkan resolusi DNS untuk brankas kunci, server database, dan cache Redis di jaringan virtual.
- Ruang Kerja Analitik Log: Berfungsi sebagai kontainer target untuk aplikasi Anda dalam mengirimkan log, yang juga memungkinkan Anda mengkueri log tersebut.
- Key vault: Digunakan untuk menjaga kata sandi database Anda tetap sama saat Anda menyebarkan ulang dengan AZD.
Mengalami masalah? Periksa bagian Pemecahan Masalah.
Menggunakan string koneksi Azure dalam kode aplikasi
Templat AZD yang Anda gunakan menghasilkan variabel konektivitas untuk Anda sudah sebagai pengaturan aplikasi dan mengeluarkannya ke terminal. Pengaturan aplikasi adalah salah satu cara untuk menjaga rahasia koneksi keluar dari repositori kode Anda.
Dalam output AZD, temukan pengaturan aplikasi yang dimulai dengan
AZURE_MYSQL_danAZURE_REDIS_. Hanya nama pengaturan yang ditampilkan. Mereka terlihat seperti ini dalam output AZD:App Service app has the following app settings: - AZURE_KEYVAULT_RESOURCEENDPOINT - AZURE_KEYVAULT_SCOPE - AZURE_MYSQL_DBNAME - AZURE_MYSQL_FLAG - AZURE_MYSQL_HOST - AZURE_MYSQL_PASSWORD - AZURE_MYSQL_PORT - AZURE_MYSQL_USERNAME - AZURE_REDIS_DATABASE - AZURE_REDIS_HOST - AZURE_REDIS_PASSWORD - AZURE_REDIS_PORT - AZURE_REDIS_SSLPengaturan yang dimulai dengan
AZURE_MYSQL_adalah variabel koneksi untuk database MySQL. Pengaturan yang dimulai denganAZURE_REDIS_adalah untuk cache Redis. Anda perlu menggunakannya dalam kode Anda nanti. Templat AZD menunjukkan tautan langsung ke halaman pengaturan aplikasi aplikasi di portal Microsoft Azure.Dari penjelajah, buka config/database.php. File ini adalah file konfigurasi untuk database dan koneksi cache Redis.
Temukan bagian yang menentukan
mysqlkoneksi (baris 46-64) dan gantiDB_HOST, ,DB_PORTDB_DATABASE,DB_USERNAME, danDB_PASSWORDdenganAZURE_MYSQL_pengaturan aplikasi dari output AZD. Koneksi Andamysqlakan terlihat seperti kode berikut.'mysql' => [ 'driver' => 'mysql', 'url' => env('DATABASE_URL'), 'host' => env('AZURE_MYSQL_HOST', '127.0.0.1'), 'port' => env('AZURE_MYSQL_PORT', '3306'), 'database' => env('AZURE_MYSQL_DBNAME', 'forge'), 'username' => env('AZURE_MYSQL_USERNAME', 'forge'), 'password' => env('AZURE_MYSQL_PASSWORD', ''), 'unix_socket' => env('DB_SOCKET', ''), 'charset' => 'utf8mb4', 'collation' => 'utf8mb4_unicode_ci', 'prefix' => '', 'prefix_indexes' => true, 'strict' => true, 'engine' => null, 'options' => extension_loaded('pdo_mysql') ? array_filter([ PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), ]) : [], ],Untuk informasi selengkapnya tentang konfigurasi database di Laravel, lihat Dokumentasi Laravel.
Temukan bagian yang menentukan koneksi cache Redis (baris 140-147) dan ganti
REDIS_HOST, ,REDIS_PASSWORDREDIS_PORT, danREDIS_CACHE_DBdenganAzure_REDIS_pengaturan aplikasi dari output AZD. Selain itu, tambahkan'scheme' => 'tls',ke koneksi. Koneksi cache Anda akan terlihat seperti kode berikut:'cache' => [ 'scheme' => 'tls', 'url' => env('REDIS_URL'), 'host' => env('AZURE_REDIS_HOST', '127.0.0.1'), 'username' => env('REDIS_USERNAME'), 'password' => env('AZURE_REDIS_PASSWORD'), 'port' => env('AZURE_REDIS_PORT', '6379'), 'database' => env('AZURE_REDIS_DATABASE', '1'), ],Untuk informasi selengkapnya tentang konfigurasi cache Redis di Laravel, lihat Dokumentasi Laravel.
Nota
Ingat bahwa perubahan Anda belum disebarkan. Anda menyebarkannya setelah langkah berikutnya selesai.
Mengonfigurasi pengaturan Laravel di aplikasi web
Dari penjelajah, buka infra/resources.bicep. File ini adalah file Bicep yang menentukan sumber daya Azure yang dibuat.
Temukan bagian yang menentukan pengaturan aplikasi (baris 510-514) dan batalkan komentarnya. Pengaturan aplikasi ini adalah:
Pengaturan Deskripsi CACHE_DRIVERMemberi tahu Laravel untuk menggunakan Redis sebagai cache-nya (lihat dokumentasi Laravel). MYSQL_ATTR_SSL_CADiperlukan untuk membuka koneksi TLS ke MySQL di Azure. File sertifikat disertakan dalam repositori sampel untuk kenyamanan. Variabel ini digunakan oleh koneksi mysql dalam konfigurasi/database.php LOG_CHANNELMenginstruksikan Laravel untuk menyalurkan log ke stderr, sehingga tersedia untuk pencatatan di App Service (lihat dokumentasi Laravel).APP_DEBUGAktifkan halaman mode debug di Laravel (lihat dokumentasi Laravel). APP_KEYVariabel enkripsi Laravel. Templat AZD sudah membuat entri rahasia Key Vault (baris 212-217), oleh karena itu Anda dapat mengaksesnya dengan referensi Key Vault. Di infra/resources.bicep, temukan definisi sumber daya untuk aplikasi App Service dan uncomment line 315:
appCommandLine: 'cp /home/site/wwwroot/default /etc/nginx/sites-available/default && service nginx reload'Siklus hidup aplikasi Laravel dimulai di direktori /public alih-alih akar aplikasi. Kontainer PHP default untuk App Service menggunakan Nginx, yang dimulai di akar aplikasi. Untuk mengubah akar situs, Anda perlu mengubah file konfigurasi Nginx di kontainer PHP (/etc/nginx/sites-available/default).
Repositori sampel berisi file konfigurasi pengganti yang disebut default, yang memberi tahu Nginx untuk melihat di direktori /publik . Perintah kustom ini dijalankan
appCommandLinesetiap kali aplikasi mulai menerapkan penggantian file setiap kali kontainer Linux dimuat ulang dari status bersih.Kembali ke terminal codespace, jalankan
azd uplagi.azd up
Petunjuk
azd up menjalankan azd package, azd provision, dan azd deploy secara bersamaan karena Anda melakukan perubahan infrastruktur dan aplikasi. Untuk membuat perubahan infrastruktur saja, jalankan azd provision. Untuk hanya menyebarkan perubahan pada kode aplikasi, jalankan azd deploy.
Mengalami masalah? Periksa bagian Pemecahan Masalah.
Membuat skema database
Dengan database MySQL yang dilindungi oleh jaringan virtual, cara term mudah untuk menjalankan migrasi database Laravel adalah dalam sesi SSH dengan kontainer Linux di App Service.
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>Dalam sesi SSH, jalankan migrasi database dari direktori /home/site/wwwroot :
cd /home/site/wwwroot php artisan migrate --forceJika berhasil, App Service berhasil tersambung ke database.
Nota
Hanya perubahan pada file di /home yang dapat bertahan di luar mulai ulang aplikasi.
Mengalami masalah? Periksa bagian Pemecahan Masalah.
Jelajahi aplikasi
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>Tambahkan beberapa tugas ke dalam 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.
Mentransmisikan log diagnostik
Azure App Service menangkap semua pesan yang masuk ke 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 mengeluarkan pesan log konsol di setiap endpoint-nya untuk menunjukkan kemampuan tersebut. Secara default, fungsionalitas pengelogan Laravel, misalnya, Log::info(), output ke file lokal. Pengaturan aplikasi Anda LOG_CHANNEL sebelumnya membuat entri log dapat diakses dari aliran log App Service.
Route::get('/', function () {
Log::info("Get /");
$startTime = microtime(true);
// Simple cache-aside logic
if (Cache::has('tasks')) {
$data = Cache::get('tasks');
} else {
$data = Task::orderBy('created_at', 'asc')->get();
Cache::add('tasks', $data);
}
return view('tasks', ['tasks' => $data, 'elapsed' => microtime(true) - $startTime]);
});
Dalam output AZD, temukan tautan untuk menampilkan log App Service dan buka di browser. Tautan terlihat seperti ini dalam output AZD:
Stream App Service logs at: <URL>
Mengalami masalah? Periksa bagian Pemecahan Masalah.
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 mendapatkan kesalahan selama migrasi database php_network_getaddresses: getaddrinfo for mysqldb failed: No address associated with hostname...
Ini menunjukkan bahwa variabel koneksi MySQL tidak dikonfigurasi dengan benar. Verifikasi bahwa pengaturan aplikasi dikonfigurasi AZURE_MYSQL_ dengan benar di Menggunakan string koneksi Azure dalam kode aplikasi.
Saya mendapatkan halaman kosong di browser.
Ini menunjukkan bahwa App Service tidak dapat menemukan file mulai PHP di /public. Ikuti langkah-langkah dalam Mengonfigurasi pengaturan Laravel di aplikasi web.
Saya mendapatkan halaman debug di browser yang mengatakan Unsupported cipher or incorrect key length.
Ini menunjukkan bahwa pengaturan APP_KEY diatur ke kunci yang tidak valid. Saat Anda menjalankan azd up, pastikan Anda mengatur appKey ke output dari php artisan key:generate --show.
Saya mendapatkan halaman debug di browser yang mengatakan Uncaught Error: Class "Illuminate\..." not found.
Kesalahan ini dan kesalahan serupa menunjukkan bahwa Anda tidak menjalankan composer install sebelum azd up, atau bahwa paket di direktori /vendor basi. Jalankan composer install dan azd deploy lagi.
Saya mendapatkan halaman debug di browser yang mengatakan php_network_getaddresses: getaddrinfo for redishost failed: Name or service not known.
Ini menunjukkan bahwa variabel koneksi Redis tidak dikonfigurasi dengan benar. Verifikasi bahwa pengaturan aplikasi dikonfigurasi AZURE_REDIS_ dengan benar di Menggunakan string koneksi Azure dalam kode aplikasi.
Saya mendapatkan halaman debug di browser yang mengatakan SQLSTATE[42S02]: Base table or view not found: 1146 Table 'XXXX-XXXXXXXXX-mysql-database.tasks' doesn't exist
Ini berarti Anda belum menjalankan migrasi database, atau migrasi database tidak berhasil. Ikuti langkah-langkah di Membuat skema database.
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 mengubah pengaturan aplikasi APP_KEY menjadi referensi Key Vault?
- Bagaimana cara kerja pengembangan aplikasi lokal dengan GitHub Actions?
- Mengapa penyebaran GitHub Actions begitu lambat?
- Saya tidak memiliki izin untuk membuat identitas yang ditetapkan pengguna
- Apa yang dapat saya lakukan dengan GitHub Copilot di codespace saya?
- 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?
- Saya tidak memiliki izin untuk membuat identitas yang ditetapkan pengguna
- Apa yang dapat saya lakukan dengan GitHub Copilot di codespace saya?
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, lapisan B1ms tersedia 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
mysqldari terminal SSH aplikasi. - Untuk terhubung dari alat desktop seperti MySQL Workbench, komputer Anda harus berada dalam jaringan virtual. Misalnya, itu bisa menjadi komputer virtual Azure 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 mengubah pengaturan aplikasi APP_KEY menjadi referensi Key Vault?
Dari langkah-langkah portal Microsoft Azure di Mengonfigurasi variabel Laravel, Anda dapat mengubah APP_KEY ke referensi Key Vault dengan menjalankan perintah Azure CLI berikut di ruang kode GitHub:
# Change the following variables to match your environment
SUBSCRIPTION_ID=<subscription-id>
RESOURCE_GROUP=<resource-group-name>
KEY_VAULT_NAME=<key-vault-name>
APP_SERVICE_NAME=<app-name>
SECRET_NAME=laravelAppKey
# Set the subscription ID
az account set --subscription $SUBSCRIPTION_ID
# Assign 'Key Vault Secrets Officer' role to your user at the scope of the key vault
az role assignment create \
--assignee $(az ad signed-in-user show --query id -o tsv) \
--role $(az role definition list --name "Key Vault Secrets Officer" --query "[].id" -o tsv) \
--scope $(az keyvault show --name $KEY_VAULT_NAME --resource-group $RESOURCE_GROUP --query id --output tsv)
# Add the secret to the key vault
az keyvault secret set \
--vault-name $KEY_VAULT_NAME \
--name $SECRET_NAME \
--value $(php artisan key:generate --show)
# Add Key Vault reference to the App Service configuration
az webapp config appsettings set \
--resource-group $RESOURCE_GROUP \
--name $APP_SERVICE_NAME \
--settings "APP_KEY=@Microsoft.KeyVault(SecretUri=https://$KEY_VAULT_NAME.vault.azure.net/secrets/$SECRET_NAME)"
Anda juga dapat melakukan hal yang sama di portal Microsoft Azure. Untuk informasi selengkapnya, lihat:
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 proses build dan penyebaran baru. Dari klon lokal repositori GitHub, Anda membuat pembaruan yang diinginkan dan 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:
- Pada 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.
Saya tidak memiliki izin untuk membuat identitas yang ditetapkan pengguna
Lihat menyiapkan penerapan GitHub Actions dari Deployment Center.
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 di mana perubahan harus dilakukan, tetapi tidak diperbolehkan melakukan perubahan untuk Anda. Terserah Anda untuk menambahkan perubahan yang disarankan dan mengujinya.
Konten terkait
Lanjutkan ke tutorial berikutnya untuk mempelajari cara mengamankan aplikasi Anda dengan domain dan sertifikat kustom.
Atau tinjau sumber daya ini: