Install Linux, Nginx, MySQL, PHP (LEMPP) Stack pada CentOs 7

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
enter image description here

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 :
enter image description here
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
enter image description here

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
enter image description here

Kemudian untuk langkah yang terakhir yaitu tahap yang berhubungan dengan keamanan, jalankan perintah :

sudo mysql_secure_installation

enter image description here
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 :
enter image description here

Install PHP

Sebelum install PHP pastikan Anda sudah menambahkan EPEL dan REMI repositorinya terlebih dahulu :

sudo yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
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

enter image description here
Dan untuk melihat list modul yang sudah terinstall pada PHP bisa menggunakan perintah :

php --modules

enter image description here
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 :
enter image description here
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.