TeknoCerdas.com – Salam cerdas untuk kita semua. Untuk menjalankan PHP pada Nginx umumnya digunakan PHP-FPM sebagai FastCGI process manager. ngx_php adalah sebuah modul Nginx untuk menjalankan PHP secara langsung. Sebuah alternatif baru dalam menjalankan PHP dengan Nginx. Dengan modul ngx_php maka pengguna dapat melakukan embed script PHP langsung di Nginx. Sehingga tanpa PHP-FPM pun kode PHP dapat berjalan pada Nginx. Show Solusi yang dihadirkan oleh ngx_php sebagai modul Nginx, mirip dengan apa yang dilakukan mod_php pada Apache server. mod_php adalah cara paling populer menjalan PHP dengan Apache selama puluhan tahun. Modul ngx_php mencoba menawarkan cara yang sama pada Nginx. Secara teori harusnya modul ngx_php pada Nginx lebih cepat dari mod_php karena penggunaan arsitektur event-driven pada Nginx dibandingkan penggunaan thread pada Apache. Daftar Isi Persiapan Menajalankan ngx_phpPada artikel ini TeknoCerdas mengasumsikan bahwa anda telah memahami beberapa hal berikut.
Jika anda tidak memiliki pengetahuan tentang beberapa hal diatas, tetap saja lanjutkan membaca. Karena mungkin ada informasi baru yang berguna bagi anda. Instalasi ngx_php Lewat DockerAda banyak cara melakukan instalasi ngx_php namun pada artikel ini TeknoCerdas akan menggunakan Docker untuk menjalankan ngx_php. Instalasi ngx_php dilakukan dengan melakukan kompilasi Nginx dari kode sumber. Versi yang akan digunakan.
Buat sebuah direktori untuk pengerjaan instalasi ini. Sebagai contoh TeknoCerdas akan menggunakan nama direktori 2.
Kemudian buat Dockerfile yang berisi kompilasi Nginx dengan modul ngx_php. Berikut ini adalah isi dari 3.
Pertama kita akan melakukan build sebuah docker image dari 3 yang sudah dibuat sebelumnya. Image hasil build akan diberi nama 5 dengan tag versi 6 yang menandakan PHP 7. Base image yang digunakan adalah dari Ubuntu 20.04.
Setelah proses build selesai, cek daftar Docker image yang ada pada local komputer.
Dapat terlihat bahwa image untuk ngx_php sudah berhasil dibuat. Membuat Konfigurasi ngx_phpSetelah modul ngx_php terinstal pada Nginx akan ada beberapa directive baru yang bisa digunakan untuk menjalankan PHP. Pada contoh ini TeknoCerdas akan membuat empat routing untuk pemrosesan file PHP.
Membuat nginx_default.confMasih dalam direktori kerja yang sekarang, buat sebuah direktori baru bernama deploy.
Buat sebuah file 7 untuk konfigurasi Nginx dan ngx_php dalam menjalankan PHP secara langsung.
Dapat terlihat pada contoh konfigurasi Nginx diatas. Empat routing yang disebutkan sebelumnya menggunakan directive baru yaitu 8. Ini adalah satu diantara banyak directive yang disediakan oleh modul ngx_php.Fungsi dari directive baru tersebut adalah untuk melakukan interpretasi atau eksekusi kode PHP yang ada dalam blok 9. Sebagai contoh pada routing 9, pada blok tersebut dipanggil sebuah fungsi dari PHP yaitu 1.Intinya kode PHP yang valid akan dapat dieksekusi oleh blok directive 8. Fungsi 3 adalah fungsi yang disediakan oleh ngx_php untuk melakukan modifikasi HTTP header.Membuat php.iniKonfigurasi ini sebenarnya opsional, jika konfigurasi ini tidak dibuat maka PHP akan menggunakan default value. Masih pada direktori kerja yang sama, sekarang buat sebuah file bernama 4 yang berisi konfigurasi untuk PHP runtime. Konfigurasi ini akan dibaca oleh ngx_php menggunakan directive 5.
0Membuat file today.phpFile 6 digunakan untuk mendemonstrasikan penggunakan 7 atau 8 pada directive 9. Dimana pada routing 2 ngx_php akan memproses file 6 menggunakan 8.File akan menampilkan sebuah halaman HTML yang berisi tanggal dan jam hari ini yang digenerate secara dinamis oleh PHP. 1 2Melakukan Tes ngx_phpPastikan masih berada pada direktori kerja yang sama. Direktori 3 akan dimount ke dalam container dengan lokasi 4. 3Pastikan container telah berjalan dengan perintah 5. 4 5Sekarang container yang berisi Nginx dengan modul ngx_php sudah berjalan. Lakukan tes satu-per-satu untuk setiap routing yang dibuat. Dimulai dengan routing 7. 6 7Hasilnya sesuai yang diinginkan. HTTP header 7 dan HTTP body sesusai.Lanjut ke routing yang kedua yaitu 9 dimana harusnya 7 berisi 1 dan HTTP body berisi JSON object. 8 9Bagus. Hasilnya juga sesuai. Berikutnya adalah routing 2. Content-type yang dikembalikan harusya adalah 3 dan berisi halaman HTML dari tanggal dan jam sekarang. 0 1Dapat dilihat bahwa hasilnya sesuai dengan apa yang ditulis pada file 6. Routing terakhir yaitu 4 berisi tentang informasi PHP yang digunakan. Pada routing ini gunakan web browser untuk mendapatkan tampilan yang mudah dilihat.Buka halaman 5 pada web browser, tampilan harusnya mirip dengan gambar dibawah.Menjalankan phpinfo() dari ngx_phpKekurangan ngx_phpMenurut dokumentasi resmi dari ngx_php terdapat beberapa kekurangan dibandingkan dengan metode tradisional dalam menjalankan PHP.
Jika melakukan pengembangan menggunakan ngx_php maka harus memikirkan dari awal kekurangan diatas. Sebagai contoh kode yang bergantung pada 6 harus diubah atau memasang bootstrap file khusus untuk melakukan parsing mandiri query string. Hasilnya gunakan untuk melakukan override variabel 6.Share
Rio Astamal Follow Adalah penulis utama di TeknoCerdas.com. Rio Astamal seorang yang sangat antusias dengan web development sejak 2003. Sejak November 2021 Rio Astamal bekerja di Amazon Web Services (AWS) sebagai Developer Advocate untuk Indonesia. Dia mengelola TeknoCerdas.com di waktu senggangnya sebagai salah satu sarana untuk ikut mencerdaskan pembaca dalam dunia IT. |