LEMPP Stack merupakan software stack berbasis opensource yang secara tipikal diinstall bersama di server/vm untuk host website dan web apps. LEMPP ini merupakan akronim dari Linux Operating System, dengan ENginx sebagai web server (pengganti apache). Kemudian untuk datanya disimpan dalam database management system menggunakan MariaDB. Adapun untuk dynamic kontennya diproses menggunakan PHP.
Pada pembahasan kali ini saya akan share untuk cara install LEMPP menggunakan PHP versi 7.4 dan MariaDB versi 10.3, berikut langkah-langkahnya :
Install Nginx
Untuk install Nginx versi terbaru, pastikan sudah install EPEL Repository terlebih dahulu ya.
Untuk menambahkan repositori EPEL CentOS 7 bisa menggunakan perintah :
sudo yum install epel-release
Lalu silakan install Nginxnya :
sudo yum install nginx
Setelah itu lakukan start nginx dan pastikan statusnya running :
sudo systemctl start nginx
sudo systemctl status nginx
Jika Anda ingin service Nginx start secara otomatis setelah server/vm restart bisa menjalankan perintah :
sudo systemctl enable nginx
Lalu silakan akses IP Public VM Anda maka akan tampil seperti berikut ini :
Jika Anda belum mengetahui IP Public VM Anda bisa menjalankan perintah :
sudo curl ifconfig.co/ip
Jika terdapat kendala, pastikan Anda sudah allow firewall dari sisi OS untuk port 80 nya. Untuk setup firewallnya bisa melihat post saya sebelumnya disini.
Install MariaDB
Tambahkan repo MariaDB 10.3 terlebih dahulu di direktori /etc/yum.repos.d
dengan nama file MariaDB.repo
.
sudo vim /etc/yum.repos.d/MariaDB.repo
# MariaDB 10.3 CentOS repository list - created 2018-05-25 19:02 UTC
# http://downloads.mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.3/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
Setelah itu update paket pada CentOS 7 Anda dengan perintah :
sudo yum update -y
Lalu install mariadb servernya :
sudo yum install MariaDB-server MariaDB-client
Jika instalasi telah selesai, Anda bisa start service mariadb dan enable jika perlu :
sudo systemctl start mariadb
sudo systemctl enable mariadb
Pastikan servicenya berstatus Running.
sudo systemctl status mariadb
Kemudian untuk langkah yang terakhir yaitu tahap yang berhubungan dengan keamanan, jalankan perintah :
sudo mysql_secure_installation
Pada script tersebut Anda akan diminta untuk setup root password, menghapus user anonymous, membatasi akses user root untuk localhost, dan menghapus database test.
Semua langkah dijelaskan secara detail dan direkomendasikan untuk menjawab yes (Y) semua pertanyaan yang ada.
Untuk melihat versi MariaDB dari command-line bisa connect ke mariadbnya terlebih dahulu dengan perintah :
mysql -u root -p
Masukkan password root yang telah dibuat sebelumnya, jika berhasil Anda akan melihat tampilan seperti pada gambar berikut ini :
Install PHP
Sebelum install PHP pastikan Anda sudah menambahkan EPEL dan REMI repositorinya terlebih dahulu :
sudo yum -y install https://rpms.remirepo.net/enterprise/remi-release-7.rpm
Lalu silakan enable PHP 7.4 Remi repositorinya dan install PHP 7.4 pada CentOS 7 :
sudo yum -y install yum-utils
sudo yum-config-manager --enable remi-php74
sudo yum update
sudo yum install php php-cli
Apabila Anda ingin menambahkan paket/modul PHP bisa install kembali :
sudo yum install php php-cli php-fpm php-mysqlnd php-zip php-devel php-gd php-mcrypt php-mbstring php-curl php-xml php-pear php-bcmath php-json
Untuk mengecek versi PHP bisa menggunakan perintah :
php -v
Dan untuk melihat list modul yang sudah terinstall pada PHP bisa menggunakan perintah :
php --modules
Nah sekarang PHP Anda sudah terinstall, selanjutnya perlu menyesuaikan pada konfigurasi PHP-FPM nya, backup terlebih dahulu file originalnya.
sudo cp /etc/php-fpm.d/www.conf{,.bak}
sudo vim /etc/php-fpm.d/www.conf
Cari user dan group dan ubah ke nginx, karena secara default menggunakan apache :
…
; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
; will be used.
; 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
…
menjadi :
…
; 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
…
Lalu cari listen
dan ubah agar menggunakan socket localhost, karena secara defaultnya menggunakan port TCP. Hal ini untuk meningkatkan performa pada server itu sendiri karena saat ini menggunakan single-host.
listen = /run/php-fpm.sock;
Kemudian cari listen.owner
, listen.group
, dan listen.mode
. Aktikan dengan cara menghapus ; . Dan ubah menjadi nginx :
listen.owner = nginx
listen.group = nginx
listen.mode = 0660
Simpan hasil konfigurasinya dan start PHP-FPM nya :
sudo systemctl start php-fpm
Konfigurasi Nginx untuk Proses halaman PHP
Kita sudah berhasil install LEMPP Stacknya, saat ini waktunya Anda konfigurasi untuk memberitahukan Nginx menggunakan PHP Processor untuk dynamic content.
Buat file konfigurasi serverblock pada path direktori /etc/nginx/conf.d
dengan nama misalnya : baru.conf
sudo vim /etc/nginx/conf.d/baru.conf
dan paste baris berikut ini :
server {
listen 80;
server_name server_domain_or_IP;
root /var/www/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 /var/www/html;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/run/php-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
Ket :
server_name server_domain_or_IP
ganti dengan domain atau IP Anda.
Simpan hasil konfigurasi diatas dan restart service nginx :
sudo systemctl restart nginx
Testing PHP Processing
Nah sekarang saatnya tahap pengujian ya setelah instalasi LEMPP Stack dan dibantu oleh PHP-FPM.
Buat file info.php pada direktori /var/www/html
sudo vim /var/www/html/info.php
Ubah user dan grup pada direktori diatas secara rekursif menggunakan nginx :
sudo chown nginx:nginx -R /var/www/html/
Dan silakan akses jika berhasil akan muncul gambar berikut ini :
Karena php info bersifat sensitif, Anda bisa menghapusnya dengan perintah :
sudo rm /var/www/html/info.php
Kesimpulan
Pada post kali ini kita telah berhasil membuat fondasi yang fleksibel untuk melayani website berbasis PHP dan aplikasi kepada pengunjung dengan menggunakan Nginx sebagai web server dan menggunakan versi PHP yang terbaru. Kita sudah berhasil setup Nginx untuk handle request PHP melalui PHP-FPM dan kita juga telah berhasil install MariaDB untuk menyimpan data website.