PHP merupakan bahasa pemograman cukup populer yang digunakan untuk membuat web dinamis. PHP atau Hypertext Preprocessor adalah bahasa skrip yang dapat ditanamkan atau disisipkan ke dalam HTML. PHP dapat digunakan untuk membangun sebuah CMS. Langsung aja ke tutorialnya..
Installing PHP
Untuk menginstal repositori Remi untuk CentOS 7, jalankan:
sudo yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
Setelah instalasi selesai harus menjalankan perintah untuk mengaktifkan repositori yang berisi versi PHP pilihan. Untuk memeriksa rilis PHP 7+ mana yang tersedia di repositori Remi, jalankan:
yum --disablerepo="*" --enablerepo="remi-safe" list php[7-9][0-9].x86_64
Outputnya seperti ini:
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* remi-safe: mirrors.ukfast.co.uk
Available Packages
php70.x86_64 2.0-1.el7.remi remi-safe
php71.x86_64 2.0-1.el7.remi remi-safe
php72.x86_64 2.0-1.el7.remi remi-safe
php73.x86_64 2.0-1.el7.remi remi-safe
php74.x86_64 1.0-3.el7.remi remi-safe
php80.x86_64 1.0-3.el7.remi remi-safe
Disini kita akan menginstal PHP 7.4, yang saat ini merupakan versi stabil dari PHP terbaru. Untuk mengaktifkan paket Remi yang benar agar PHP 7.4 diinstal, jalankan:
sudo yum-config-manager --enable remi-php74
Sekarang kita dapat melanjutkan menggunakan yum untuk menginstal PHP seperti biasa. Perintah berikut akan menginstal semua paket yang diperlukan untuk membuat PHP 7.4 yang diatur dalam Nginx dan memungkinkannya untuk terhubung ke database MySQL:
sudo yum install php php-mysqlnd php-fpm
Untuk mengonfirmasi bahwa PHP sudah terinstall, jalankan:
php --version
Outputnya seperti ini:
PHP 7.4.5 (cli) (built: Apr 14 2020 12:54:33) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
PHP sekarang berhasil diinstal selanjutnya, kita perlu melakukan beberapa penyesuaian pada konfigurasi default, Buka file konfigurasi /etc/php-fpm.d/www.conf menggunakan nano atai vi, dalam hal ini saya menggunakan vi:
sudo vi /etc/php-fpm.d/www.conf
Sekarang cari user dan group. Jika menggunakan nano, dapat menekan CTRL + W untuk mencari istilah-istilah ini di dalam file tersebut, kalo pake vi /kata yg dicari. /etc/php-fpm.d/www.conf
…
; RPM: apache user chosen to provide access to the same directories as httpd
user = apache
; RPM: Keep a group allowed to write in log dir.
group = apache
…
Variabel user dan group diatur ke apache. Kita perlu mengubahnya ke nginx:/etc/php-fpm.d/www.conf
…
; RPM: apache user chosen to provide access to the same directories as httpd
user = nginx
; RPM: Keep a group allowed to write in log dir.
group = nginx
…
Selanjutnya kita cari listen, secara default, php-fpm akan mengarahkan ke host dan port tertentu melalui TCP. Kita ingin mengubah pengaturan ini sehingga ia mengarahkan ke file socket lokal, karena ini meningkatkan kinerja keseluruhan server. Ubah baris listen sebagai berikut: /etc/php-fpm.d/www.conf
listen = /var/run/php-fpm/php-fpm.sock;
Terakhir, kita perlu mengubah pengaturan user dan group untuk file socket yang baru saja kita tentukan dalam pada listen. Temukan listen.owner, listen.group dan direct.mode directives. Baris-baris ini dikomentari secara default. Batalkan komentar dengan menghapus tanda ; di awal baris. Kemudian, ubah user dan group menjadi nginx:/etc/php-fpm.d/www.conf
listen.owner = nginx
listen.group = nginx
listen.mode = 0660
Simpan dan tutup file ketika selesai mengedit. Jika menggunakan nano, lakukan dengan menekan CTRL + X, lalu Y dan ENTER. Kalau pake vi tekan :wq
Untuk mengaktifkan dan memulai layanan php-fpm, jalankan:
sudo systemctl start php-fpm
PHP sekarang sudah siap. Selanjutnya mengkonfigurasi Nginx sehingga mengirimkan semua permintaan untuk skrip PHP untuk diproses oleh php-fpm.
Konfigurasi Nginx ke Proses PHP
Sekarang, kita sudah menginstal semua komponen yang diperlukan. Satu-satunya perubahan konfigurasi yang masih perlu kita lakukan adalah memberi tahu Nginx untuk menggunakan prosesor PHP untuk konten dinamis.
Nginx memiliki direktori khusus di mana kita dapat mendefinisikan setiap situs web yang di-host sebagai file konfigurasi terpisah, menggunakan blok server. Ini mirip dengan host virtual Apache.
Namun, dengan instalasi default, direktori ini kosong. Kita akan membuat file baru untuk berfungsi sebagai situs web PHP default di server ini, yang akan menimpa blok server default yang ditentukan dalam file /etc/nginx/nginx.conf.
Pertama, buka file baru di direktori /etc/nginx/conf.d:
sudo nano /etc/nginx/conf.d/default.conf
Salin blok definisi server PHP berikut ke file konfigurasi yang kita mau, dan jangan lupa untuk mengganti direktif nama server sehingga menunjuk ke nama domain atau alamat IP server:/etc/nginx/conf.d/default.conf
server { listen 80; server_name server_domain_or_IP; root /usr/share/nginx/html; index index.php index.html index.htm; location / { try_files $uri $uri/ =404; } error_page 404 /404.html; error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } location ~ \.php$ { try_files $uri =404; fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
Simpan dan tutup file setelah selesai.
Selanjutnya, restart Nginx untuk menerapkan perubahan:
sudo systemctl restart nginx
Test PHP di Web Server
Sekarang setelah server web sudah diatur, untuk dapat membuat skrip pengujian PHP untuk memastikan Nginx menangani skrip .php dengan bantuan php-fpm.
Sebelum membuat skrip, kita akan melakukan perubahan pada pengaturan kepemilikan default pada root dokumen Nginx, sehingga pengguna sudo lain dapat membuat file di lokasi itu.
Perintah berikut akan mengubah kepemilikan root dokumen Nginx default menjadi user dan group bernama sammy, jadi pastikan untuk mengganti nama user dan group yang disorot dalam perintah ini untuk mencerminkan username dan group sistem.
sudo chown -R sammy.sammy /usr/share/nginx/html/
Sekarang kita akan membuat halaman PHP untuk memastikan server web berfungsi seperti yang diharapkan.
Buat file PHP baru bernama info.php di direktori /usr/share/nginx/html:
nano /usr/share/nginx/html/info.php
Kode PHP berikut akan menampilkan informasi tentang PHP saat ini yang berjalan di server:/usr/share/nginx/html/info.php
<?php phpinfo();
Setelah selesai, simpan dan tutup file.
Sekarang kita dapat menguji apakah server web kita dapat menampilkan konten yang dihasilkan oleh skrip PHP dengan benar. Buka browser dan akses nama host atau alamat IP server, diikuti oleh /info.php:
http://server_host_or_IP/info.php
Setelah memeriksa informasi yang relevan tentang server PHP melalui halaman itu, yang terbaik adalah menghapus file yang dibuat karena berisi informasi sensitif tentang PHP dan server CentOS. Anda dapat menggunakan rm untuk menghapus file itu:
rm /usr/share/nginx/html/info.php