Tutorial Instalasi LEMP Stack di CentOS 7

Tutorial Instalasi LEMP Stack di CentOS 7 - Sebelumnya saya pernah membahas tentang instalalasi LEMP Stack di Ubuntu. Sebenarnya untuk CentOS caranya sama saja. Tapi berhubung tadi ada yang tanya yasudah sekalian saya buat tutorialnya.


Sebelum memulai tutorial ini, pastikan kalian sudah mengaktifkan repo EPEL karena paket seperti Nginx adalah paket ekstra dan hanya tersedia di repo EPEL dan REMI. Untuk mengaktifkan repo EPEL dan REMI bisa baca di tutorial berikut:
Jika sudah, baru kita lanjut ke tutorial.
Install Web Server Nginx
Pertama kita install Web Server Nginx terlebih dahulu.
sudo yum install nginx
Selanjutnya jalankan Nginx dengan perintah
service nginx start
Sampai disini Nginx sudah berjalan. Namun belum bisa diakses karena firewall masih memblokir port 80 serta 443. Ubah rule firewalld dengan perintah
sudo firewall-cmd --zone=public --permanent --add-service=http
sudo firewall-cmd --zone=public --permanent --add-service=https
sudo firewall-cmd --reload
Sekarang coba cek di browser, apakah Nginx sudah berjalan.
Jika tidak ada error, sekarang kita enable service nginx agar langsung berjalan saat server CentOS kita booting.
systemctl enable nginx
Langkah instalasi Nginx selesai. Lanjut ke proses instalasi MariaDB.

Install MariaDB Server
Selanjutnya install MariaDB server. MariaDB merupakan versi pengembangan terbuka dan mandiri dari MySQL. Sejak diakuisisinya MySQL oleh Oracle pada September 2010, Monty Program sebagai penulis awal kode sumber MySQL memisahkan diri dari pengembangan dan membuat versi yang lebih mandiri yakni MariaDB.
sudo yum install mariadb-server
Selanjutnya jalankan service MariaDB dan juga enable service nya agar jalan saat booting.
systemctl start mariadb
ystemctl enable mariadb
systemctl status mariadb

Selanjutnya jalankan perintah untuk mengamankan MariaDB dengan mengatur root password, menonaktifkan remote login menggunakan user root, dll.
mysql_secure_installation
Pada saat muncul konfirmasi password MariaDB "Enter current password for root", enter saja karena ini fresh install. Kita baru akan mengatur passwordnya.
Set root password? [Y/n] y
Remove anonymous users? [Y/n] y
Disallow root login remotely? [Y/n] y
Remove test database and access to it? [Y/n] y
Reload privilege tables now? [Y/n] y
Test login ke MariaDB dengan perintah
mysql -u root -p
Lalu masukkan password root yang kalian atur sebelumnya.
Oke, sampai disini tidak ada masalah. Kita lanjut ke proses instalasi PHP.

Install PHP 7
Berbeda dengan di Ubuntu terbaru yang sudah menyediakan PHP7 , repository default Centos 7 sekalipun masih menggunakan PHP5. Nah untuk menggunakan PHP7 dari repo EPEL dan REMI. Itulah kenapa di awal saya anjurkan memasang repo REMI dan EPEL. Karena selain untuk menyediakan paket yang tidak tersedia di repo default, juga agar kita mendapatkan paket yang terupdate.

Disini saya menggunakan PHP 7.3
yum-config-manager --enable remi-php73
Selanjutnya tinggal install biasa dengan perintah
sudo yum install php-fpm php-mysql php-cli php-gd php-json php-xml
Disini saya menginstall php-fpm beserta modul yang sering dipakai. Jika ada modul lain yang ingin diinstall kalian bisa sesuaikan sendiri.


Oke setelah php terinstall, kalian perlu melakukan sedikit perubahan terhadap file konfigurasi php.
Pertama, secara default value cgi.fix_pathinfo di set ke 1. Dan untuk alasan keamanan pengaturan ini kurang bagus karena ini akan membuat PHP mengeksekusi file dengan nama yang mirip jika file yang diminta tidak ditemukan. Ubah value nya menjadi 0.
sudo nano /etc/php.ini
Ubah value cgi.fix_pathinfo menjadi 0.
cgi.fix_pathinfo=0
Kedua, proses php-fpm secara default dijalankan oleh user apache. Ubah agar listen ke user nginx.
nano /etc/php-fpm.d/www.conf
Temukan baris user dan group dan ubah menjadi
user = nginx
group = nginx

Temukan juga baris listen.owner dan listen.group dan ubah menjadi seperti berikut
listen.owner = nginx
listen.group = nginx
listen.mode = 0660
Terakhir, masih di file yang sama ubah baris listen = 127.0.0.1:9000 agar php-fpm listen menggunakan unix socket.
listen = /var/run/php-fpm/php-fpm.sock

Oke sampai disini proses instalasi selesai. Untuk mengatur agar php-fpm berjalan saat booting, gunakan perintah
systemctl enable php-fpm
Konfigurasi LEMP Stack
Selanjutnya adalah membuat serverblock Nginx yang menggunakan PHP-FPM sebagai prosesor file php nya.
nano /etc/nginx/nginx.conf
Lalu tambahkan konfigurasi berikut kedalam block server.
    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;
    }

Atau kira kira lengkapnya menjadi seperti berikut:
...........
    server {
        listen       80 default_server;
        listen       [::]:80 default_server;
        server_name  _;
        root         /usr/share/nginx/html;

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;

        location / {
        try_files $uri $uri/ =404;
        }
        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;
        }
        error_page 404 /404.html;
            location = /40x.html {
        }
.............

Selanjutnya kita coba jalankan script phpinfo di server.
echo "<?php phpinfo(); ?>" > /usr/share/nginx/html/info.php
Sekarang cek di browser dengan mengakses file info.php yang baru dibuat.
Oke, jika dirasa sudah tidak ada yang error, hapus file phpinfo tadi.
rm /usr/share/nginx/html/info.php
Selesai. Kalian sudah berhasil menginstall LEMP Stack di CentOS 7. Oke mungkin itu saja tutorial kali ini. Jika ada yang ingin ditanyakan silahkan komentar.